void RespawnActorMapElement::Save( Json::Value& Element ) { Opt<Actor> actor( Scene::Get().GetActor( mSpawnedActorGUID ) ); if ( !actor.IsValid() ) { return; } MapElement::Save( Element ); std::string actorName; if ( IdStorage::Get().GetName( mActorID, actorName ) ) { Element["actor"] = Json::Value( actorName ); } Json::Value ComponentsArr( Json::arrayValue ); Opt<IPositionComponent> positionC( actor->Get<IPositionComponent>() ); if ( positionC.IsValid() ) { Json::Value Component( Json::objectValue ); positionC->Save( Component ); ComponentsArr.append( Component ); } Opt<PickupCollisionComponent> pickupCollisionC( actor->Get<ICollisionComponent>() ); if ( pickupCollisionC.IsValid() ) { Json::Value Component( Json::objectValue ); pickupCollisionC->Save( Component ); ComponentsArr.append( Component ); } Element["components"] = Json::Value( ComponentsArr ); Element["secs_to_respawn"] = mSecsToRespawnOriginal; }
void OrientationMessageHandlerSubSystem::Execute( Message const& message ) { OrientationMessage const& msg = static_cast<OrientationMessage const&>( message ); if ( mProgramState.mMode == ProgramState::Server || ( mProgramState.mMode == ProgramState::Client && msg.mActorGUID != mProgramState.mControlledActorGUID ) ) { Opt<Actor> actor = mScene.GetActor( msg.mActorGUID ); if ( !actor.IsValid() ) { L1( "cannot find actor with GUID: (that is not possible) %d \n", msg.mActorGUID ); return; } Opt<IPositionComponent> positionC( actor->Get<IPositionComponent>() ); if ( !positionC.IsValid() ) { L1( "position is called on an actor that has no position_component \n" ); return; } positionC->SetOrientation( msg.mOrientation / PRECISION ); } }