123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #include "../idlib/precompiled.h"
- #pragma hdrstop
- #include "Game_local.h"
- const idEventDef EV_tablefoldreset( "tablefoldreset" );
- CLASS_DECLARATION( idAnimatedEntity, idTableFold )
- EVENT( EV_tablefoldreset, idTableFold::Event_reset)
- END_CLASS
- void idTableFold::Spawn( void )
- {
- idDict args;
- args.Clear();
- args.SetVector( "origin", this->GetPhysics()->GetOrigin() );
- args.Set( "model", "models/tablefold/tris_cm.ase" );
- args.SetInt( "frobbable", 1 );
- args.SetInt( "corpse", 1 );
- args.SetInt( "noGrab", 1 );
- args.Set( "owner", this->GetName() );
- args.Set( "recordable", this->spawnArgs.GetString("recordable", "0") );
- this->frobcube = gameLocal.SpawnEntityType( idStaticEntity::Type, &args );
- this->frobcube->SetAngles( this->GetPhysics()->GetAxis().ToAngles() );
- args.Clear();
- args.SetVector( "origin", this->GetPhysics()->GetOrigin() );
- args.Set( "model", "models/tablefold/tris_handle_cm.ase" );
- args.SetInt( "frobbable", 1 );
- args.SetInt( "corpse", 1 );
- args.SetInt( "noGrab", 1 );
- args.Set( "owner", this->GetName() );
- args.Set( "recordable", this->spawnArgs.GetString("recordable", "0") );
- this->frobcube_handle = gameLocal.SpawnEntityType( idStaticEntity::Type, &args );
- this->frobcube_handle->SetAngles( this->GetPhysics()->GetAxis().ToAngles() );
- args.Clear();
- args.SetVector( "origin", this->GetPhysics()->GetOrigin() );
- args.Set( "model", "models/tablefold/tris_table_cm.ase" );
- mover = ( idMover * )gameLocal.SpawnEntityType( idMover::Type, &args );
- mover->SetAngles( this->GetPhysics()->GetAxis().ToAngles() );
- mover->Event_SetMoveTime( 0.5 );
- Event_open(0);
- state = CLOSED;
- }
- void idTableFold::Event_open( bool value )
- {
- if (value)
- {
- //open.
- Event_PlayAnim("open", 4);
- this->frobcube->GetPhysics()->SetContents(0);
- this->frobcube_handle->GetPhysics()->SetContents( CONTENTS_RENDERMODEL );
- this->frobcube_handle->GetPhysics()->SetClipMask( MASK_SOLID | CONTENTS_MOVEABLECLIP );
- state = OPENED;
- idVec3 origPos = this->GetPhysics()->GetOrigin();
- mover->Event_MoveToPos( origPos );
-
- }
- else
- {
- //close.
- Event_PlayAnim("close", 4);
- this->frobcube_handle->GetPhysics()->SetContents(0);
- this->frobcube->GetPhysics()->SetContents( CONTENTS_RENDERMODEL );
- this->frobcube->GetPhysics()->SetClipMask( MASK_SOLID | CONTENTS_MOVEABLECLIP );
- state = CLOSED;
- idVec3 forward;
- idVec3 movePos;
- GetPhysics()->GetAxis().ToAngles().ToVectors( &forward );
- movePos = this->GetPhysics()->GetOrigin() + (forward * -20);
- mover->Event_MoveToPos( movePos );
- }
- }
- void idTableFold::Event_reset( void )
- {
- Event_open(0);
- }
- void idTableFold::OnFrob( idEntity* activator )
- {
- if (state == CLOSED)
- {
- Event_open(true);
- }
- else
- {
- Event_open(false);
- }
- }
|