/* ================ idMoveable::Event_Activate ================ */ void idMoveable::Event_Activate( idEntity *activator ) { float delay; idVec3 init_velocity, init_avelocity; Show(); if ( !spawnArgs.GetInt( "notPushable" ) ) { physicsObj.EnableImpact(); } physicsObj.Activate(); spawnArgs.GetVector( "init_velocity", "0 0 0", init_velocity ); spawnArgs.GetVector( "init_avelocity", "0 0 0", init_avelocity ); delay = spawnArgs.GetFloat( "init_velocityDelay", "0" ); if ( delay == 0.0f ) { physicsObj.SetLinearVelocity( init_velocity ); } else { PostEventSec( &EV_SetLinearVelocity, delay, init_velocity ); } delay = spawnArgs.GetFloat( "init_avelocityDelay", "0" ); if ( delay == 0.0f ) { physicsObj.SetAngularVelocity( init_avelocity ); } else { PostEventSec( &EV_SetAngularVelocity, delay, init_avelocity ); } InitInitialSpline( gameLocal.time ); }
/* ================ idMoveable::Restore ================ */ void idMoveable::Restore( idRestoreGame *savefile ) { int initialSplineTime; savefile->ReadString( brokenModel ); savefile->ReadString( damage ); savefile->ReadString( fxCollide ); savefile->ReadInt( nextCollideFxTime ); savefile->ReadFloat( minDamageVelocity ); savefile->ReadFloat( maxDamageVelocity ); savefile->ReadBool( explode ); savefile->ReadBool( unbindOnDeath ); savefile->ReadBool( allowStep ); savefile->ReadBool( canDamage ); savefile->ReadInt( nextDamageTime ); savefile->ReadInt( nextSoundTime ); savefile->ReadInt( initialSplineTime ); savefile->ReadVec3( initialSplineDir ); if ( initialSplineTime != -1 ) { InitInitialSpline( initialSplineTime ); } else { initialSpline = NULL; } savefile->ReadStaticObject( physicsObj ); RestorePhysics( &physicsObj ); }
/* ================ idMoveable::Restore ================ */ void idMoveable::Restore( idRestoreGame *savefile ) { int initialSplineTime; savefile->ReadString( brokenModel ); savefile->ReadString( damage ); savefile->ReadString( m_scriptCollide ); savefile->ReadInt( m_collideScriptCounter ); savefile->ReadInt( m_nextCollideScriptTime ); savefile->ReadFloat( m_minScriptVelocity ); savefile->ReadString( fxCollide ); savefile->ReadInt( nextCollideFxTime ); savefile->ReadFloat( minDamageVelocity ); savefile->ReadFloat( maxDamageVelocity ); savefile->ReadBool( explode ); savefile->ReadBool( unbindOnDeath ); savefile->ReadBool( allowStep ); savefile->ReadBool( canDamage ); savefile->ReadInt( nextDamageTime ); savefile->ReadInt( nextSoundTime ); savefile->ReadInt( initialSplineTime ); savefile->ReadVec3( initialSplineDir ); if( initialSplineTime != -1 ) { InitInitialSpline( initialSplineTime ); } else { initialSpline = NULL; } savefile->ReadStaticObject( physicsObj ); RestorePhysics( &physicsObj ); savefile->ReadTrace( lastCollision ); savefile->ReadBool( isPushed ); savefile->ReadBool( wasPushedLastFrame ); savefile->ReadVec3( pushDirection ); savefile->ReadVec3( lastPushOrigin ); }
/* ================ idMoveable::Restore ================ */ void idMoveable::Restore( idRestoreGame *savefile ) { int initialSplineTime; savefile->ReadStaticObject( physicsObj ); savefile->ReadString( brokenModel ); savefile->ReadString( damage ); savefile->ReadInt( nextCollideFxTime ); savefile->ReadFloat( minDamageVelocity ); savefile->ReadFloat( maxDamageVelocity ); savefile->ReadInt( initialSplineTime ); if ( initialSplineTime != -1 ) { InitInitialSpline( initialSplineTime ); } else { initialSpline = NULL; } savefile->ReadVec3( initialSplineDir ); savefile->ReadBool( unbindOnDeath ); savefile->ReadBool( allowStep ); savefile->ReadBool( canDamage ); // cnicholson: Added unrestored var lastAttacker.Restore(savefile); // cnicholson: Added unrestored var RestorePhysics( &physicsObj ); }
/* ================ idMoveable::Event_Activate ================ */ void idMoveable::Event_Activate( idEntity *activator ) { float delay; idVec3 init_velocity, init_avelocity; Show(); if ( !spawnArgs.GetInt( "notPushable" ) ) { physicsObj.EnableImpact(); } physicsObj.Activate(); spawnArgs.GetVector( "init_velocity", "0 0 0", init_velocity ); spawnArgs.GetVector( "init_avelocity", "0 0 0", init_avelocity ); delay = spawnArgs.GetFloat( "init_velocityDelay", "0" ); if ( delay == 0.0f ) { physicsObj.SetLinearVelocity( init_velocity ); } else { PostEventSec( &EV_SetLinearVelocity, delay, init_velocity ); } delay = spawnArgs.GetFloat( "init_avelocityDelay", "0" ); if ( delay == 0.0f ) { physicsObj.SetAngularVelocity( init_avelocity ); } else { PostEventSec( &EV_SetAngularVelocity, delay, init_avelocity ); } InitInitialSpline( gameLocal.time ); // RAVEN BEGIN // jshepard: we should update it's stage on activation, specifically for falling blocks. UpdateStage(); // RAVEN END }
/* ================ idMoveable::Restore ================ */ void idMoveable::Restore( idRestoreGame *savefile ) { int initialSplineTime; savefile->ReadString( brokenModel ); savefile->ReadString( damage ); savefile->ReadString( fxCollide ); savefile->ReadInt( nextCollideFxTime ); savefile->ReadFloat( minDamageVelocity ); savefile->ReadFloat( maxDamageVelocity ); savefile->ReadBool( explode ); savefile->ReadBool( unbindOnDeath ); savefile->ReadBool( allowStep ); savefile->ReadBool( canDamage ); savefile->ReadInt( nextDamageTime ); savefile->ReadInt( nextSoundTime ); savefile->ReadInt( initialSplineTime ); savefile->ReadVec3( initialSplineDir ); savefile->ReadString( mtr_collide ); savefile->ReadInt( last_spraytime ); savefile->ReadParticle( smokeFly ); savefile->ReadInt( smokeFlyTime ); if( initialSplineTime != -1 ) { InitInitialSpline( initialSplineTime ); } else { initialSpline = NULL; } savefile->ReadStaticObject( physicsObj ); RestorePhysics( &physicsObj ); // grimm --> if( smokeFly != NULL ) { idVec3 dir; dir = physicsObj.GetLinearVelocity(); dir.NormalizeFast(); gameLocal.smokeParticles->EmitSmoke( smokeFly, gameLocal.time, gameLocal.random.RandomFloat(), GetPhysics()->GetOrigin(), GetPhysics()->GetAxis() ); } // grimm <-- }