Getting mass of object through model?

Is there a way to get the mass of a prop through the model?

For example, getting the mass of “models/props_borealis/bluebarrel001.mdl”.

I only ask due to wanting to make a custom spawn menu and wish to show the mass on each spawn icon, is this possible or am I getting ahead of myself…

Any help is appreciated.

If you can parse the PHY file, eg “models/props_borealis/bluebarrel001.phy”, you can get the mass. It’s a binary file, so I’d recommend taking a look at it with a hex editor to determine the format.

Cheers for the information, how ever judging from what you’ve written I fear I just might be in over my head.

If you are looking for hints for the file format, you may find some useful information in the C++ code in this project.

If using Binary files and hex editors is over my head, I’m afraid scanning through C++ will merely <implode> what little knowledge remains in my head haha.

Thank you though Jcw87.

I do this by, at initpostentity:

  1. Create a propphysics
  2. Assign model
  3. Call PhysicsInit
  4. Get mass
  5. Repeat back to step 2.
  6. Remove propphysics

Then I just send the mass information to players on join.

If you find out how to parse the .phy, that is probably a better idea.

Interesting concept Donkie,
I’ll see how I go in the morning. Eyes are sore for the night…

Bump, this should work.



-- Takes either the path to the model [.mdl file] or physics file [.phy]
function MassFromPath( modelPath )


	if not modelPath or modelPath == "" then return end
	modelPath = string.gsub( modelPath, "%.%w+$", ".phy" )
	if not file.Exists( modelPath ) then return end


	local fileObj = file.Open( modelPath, "rb", "GAME" )
	fileObj:Seek( fileObj:ReadLong() )
	fileObj:Seek( fileObj:ReadLong() + fileObj:Tell() )


	local strData = fileObj:Read( fileObj:Size() - fileObj:Tell() )
	fileObj:Close()


	return tonumber( string.match( strData, [["mass" "(%d+%.?%d*)"]] ) )


end


The second my internet has been installed (moved houses), I am going to test the shit out of this.

Your help is very much appreciated!