Prop sphere: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
Tip:The only spherical model in Half-Life 2 is 
		
	
mNo edit summary  | 
				mNo edit summary  | 
				||
| Line 5: | Line 5: | ||
It is essentially a [[prop_physics]] with a perfectly spherical [[VPhysics]] collision model. If you want to create an spherical entity, it is far more efficient to use prop_sphere than try to create a spherical [[collision mesh]]!  | It is essentially a [[prop_physics]] with a perfectly spherical [[VPhysics]] collision model. If you want to create an spherical entity, it is far more efficient to use prop_sphere than try to create a spherical [[collision mesh]]!  | ||
{{tip|The only spherical model in Half-Life 2 is <code>models\combine_helicopter\helicopter_bomb01.mdl</code>. Unfortunately it is made of wood! (But is made of actual metal in EP2}}  | {{tip|The only spherical model in Half-Life 2 is <code>models\combine_helicopter\helicopter_bomb01.mdl</code>. Unfortunately it is made of wood! (But is made of actual metal in EP2)}}  | ||
== Stock FGD ==  | == Stock FGD ==  | ||
Revision as of 01:20, 20 March 2011
prop_sphere is an unlisted entity not referenced in any of Valve's stock FGDs, even though it is available to all of them.
It is essentially a prop_physics with a perfectly spherical VPhysics collision model. If you want to create an spherical entity, it is far more efficient to use prop_sphere than try to create a spherical collision mesh!
models\combine_helicopter\helicopter_bomb01.mdl. Unfortunately it is made of wood! (But is made of actual metal in EP2)Stock FGD
If you don't intend to make any changes to the entity's C++ code, use this:
@PointClass base(BasePropPhysics, RenderFields) studioprop() = prop_sphere : "Creates a perfect sphere."
[
]
Extending prop_sphere
The following simple addition to CPhysSphere:
- Allows level designers to configure the collision model's radius
 - Fully applies the prop_data and $surfaceprop of the chosen model.
 
C++
Open \server\props.cpp and replace the existing CPhysSphere with this:
class CPhysSphere : public CPhysicsProp
{
	DECLARE_CLASS( CPhysSphere, CPhysicsProp );
	DECLARE_DATADESC();
public:
	float m_fRadius;
	bool CreateVPhysics()
	{
		SetSolid( SOLID_BBOX );
		SetCollisionBounds( -Vector(m_fRadius), Vector(m_fRadius) );
		objectparams_t params = g_PhysDefaultObjectParams;
		params.pGameData = static_cast<void *>(this);
		IPhysicsObject *pPhysicsObject = physenv->CreateSphereObject( m_fRadius, GetModelPtr()->GetRenderHdr()->textureindex, GetAbsOrigin(), GetAbsAngles(), ¶ms, false );
		if ( pPhysicsObject )
		{
			VPhysicsSetObject( pPhysicsObject );
			SetMoveType( MOVETYPE_VPHYSICS );
			pPhysicsObject->Wake();
		}
	
		return true;
	}
};
LINK_ENTITY_TO_CLASS( prop_sphere, CPhysSphere );
BEGIN_DATADESC( CPhysSphere )
	DEFINE_KEYFIELD( m_fRadius, FIELD_FLOAT, "radius"),
END_DATADESC()
Extended FGD
@PointClass base(BasePropPhysics, RenderFields) studioprop() sphere(radius) = prop_sphere : "Creates a perfect sphere."
[
	radius(float) : "Radius" : 12 : ""
]
Stock Keyvalues
Note:Page left for viewable history, content moved to prop_physics- RenderFields:
 
- Render Mode (rendermode) <byte choices>
 - Set a non-standard rendering mode on this entity.
 
Render Modes 
- Render FX (renderfx) <byte choices>
 - Various somewhat legacy alpha effects. See render effects.
 
- Render Amount / Transparency (renderamt) <byte>
 - Transparency amount, requires a Render Mode other than Normal. 0 is invisible, 255 is fully visible.
 
- Render Color (R G B) (rendercolor) <color255>
 - Color tint.
 
Stock Flags
Note:Page left for viewable history, content moved to prop_physics
Stock Inputs
Note:Page left for viewable history, content moved to prop_physics- RenderFields:
 
- Alpha <integer 0–255>
 - Sets the entity's transparency to a number from 0 (invisible) to 255 (fully visible). Requires the entity to have its 
rendermodeset to a number other than0. 
- Color <color255>
 - Sets an RGB color for the entity.
 
Stock Outputs
Note:Page left for viewable history, content moved to prop_physics