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;
}
Example #2
0
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 );
    }
}