void WallTarget::AddPositionLoader( glm::vec2& position, Opt<SpawnActorMapElement> spawnActor ) { int32_t componentId = AutoId( "position_component" ); ComponentLoaderFactory& componentLoaderFactory = ComponentLoaderFactory::Get(); std::auto_ptr<PropertyLoaderBase<Component> > compLoader = componentLoaderFactory( componentId ); Opt<PositionComponentLoader> positionCompLoader( static_cast<PositionComponentLoader*>( compLoader.get() ) ); positionCompLoader->Bind<double>( &PositionComponent::SetX, position.x ); positionCompLoader->Bind<double>( &PositionComponent::SetY, position.y ); spawnActor->AddComponentLoader( componentId, compLoader ); }
void WallTarget::AddBorderLoader( IBorderComponent::Borders_t& borders, IBorderComponent::Borders_t& outerBorders, Opt<SpawnActorMapElement> spawnActor ) { { int32_t componentId = AutoId( "border_component" ); ComponentLoaderFactory& componentLoaderFactory = ComponentLoaderFactory::Get(); std::auto_ptr<PropertyLoaderBase<Component> > compLoader = componentLoaderFactory( componentId ); Opt<BorderComponentLoader> borderCompLoader( static_cast<BorderComponentLoader*>( compLoader.get() ) ); borderCompLoader->Bind<IBorderComponent::Borders_t>( &BorderComponent::SetBorders, borders ); borderCompLoader->Bind<IBorderComponent::Borders_t>( &BorderComponent::SetOuterBorders, outerBorders ); spawnActor->AddComponentLoader( componentId, compLoader ); } }