Added prop_sphere

https://developer.valvesoftware.com/wiki/Prop_sphere
This commit is contained in:
VXP 2016-09-08 03:01:54 +03:00
parent 80eccc9b92
commit 790f58ebea
3 changed files with 33 additions and 10 deletions

View file

@ -5429,29 +5429,38 @@ void CPropDoorRotating::InputSetRotationDistance( inputdata_t &inputdata )
CalculateDoorVolume( GetLocalAngles(), m_angRotationOpenBack, &m_vecBackBoundsMin, &m_vecBackBoundsMax );
}
// Debug sphere
class CPhysSphere : public CPhysicsProp
{
DECLARE_CLASS( CPhysSphere, CPhysicsProp );
DECLARE_DATADESC();
public:
virtual bool OverridePropdata() { return true; }
float m_fRadius;
bool CreateVPhysics()
{
SetSolid( SOLID_BBOX );
SetCollisionBounds( -Vector(12,12,12), Vector(12,12,12) );
SetCollisionBounds( -Vector(m_fRadius), Vector(m_fRadius) );
objectparams_t params = g_PhysDefaultObjectParams;
params.pGameData = static_cast<void *>(this);
IPhysicsObject *pPhysicsObject = physenv->CreateSphereObject( 12, 0, GetAbsOrigin(), GetAbsAngles(), &params, false );
IPhysicsObject *pPhysicsObject = physenv->CreateSphereObject( m_fRadius, GetModelPtr()->GetRenderHdr()->textureindex, GetAbsOrigin(), GetAbsAngles(), &params, 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()
void CPropDoorRotating::InputSetSpeed(inputdata_t &inputdata)
{

View file

@ -168,3 +168,8 @@
output Output15(void) : "Fire output 15."
output Output16(void) : "Fire output 16."
]
@PointClass base(BasePropPhysics, RenderFields) studioprop() sphere(radius) = prop_sphere : "Creates a perfect sphere."
[
radius(float) : "Radius" : 12 : ""
]

View file

@ -5426,29 +5426,38 @@ void CPropDoorRotating::InputSetRotationDistance( inputdata_t &inputdata )
CalculateDoorVolume( GetLocalAngles(), m_angRotationOpenBack, &m_vecBackBoundsMin, &m_vecBackBoundsMax );
}
// Debug sphere
class CPhysSphere : public CPhysicsProp
{
DECLARE_CLASS( CPhysSphere, CPhysicsProp );
DECLARE_DATADESC();
public:
virtual bool OverridePropdata() { return true; }
float m_fRadius;
bool CreateVPhysics()
{
SetSolid( SOLID_BBOX );
SetCollisionBounds( -Vector(12,12,12), Vector(12,12,12) );
SetCollisionBounds( -Vector(m_fRadius), Vector(m_fRadius) );
objectparams_t params = g_PhysDefaultObjectParams;
params.pGameData = static_cast<void *>(this);
IPhysicsObject *pPhysicsObject = physenv->CreateSphereObject( 12, 0, GetAbsOrigin(), GetAbsAngles(), &params, false );
IPhysicsObject *pPhysicsObject = physenv->CreateSphereObject( m_fRadius, GetModelPtr()->GetRenderHdr()->textureindex, GetAbsOrigin(), GetAbsAngles(), &params, 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()
void CPropDoorRotating::InputSetSpeed(inputdata_t &inputdata)
{