本文整理汇总了C++中Opt::GetPositionX方法的典型用法代码示例。如果您正苦于以下问题:C++ Opt::GetPositionX方法的具体用法?C++ Opt::GetPositionX怎么用?C++ Opt::GetPositionX使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Opt
的用法示例。
在下文中一共展示了Opt::GetPositionX方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Update
void AttachableSystem::Update( double DeltaTime )
{
for (auto actor : mScene.GetActorsFromMap( GetType_static() ))
{
Opt<IAttachableComponent> attachableC = actor->Get<IAttachableComponent>();
if ( !attachableC.IsValid() )
{
continue;
}
Opt<Actor> attachedActor( mScene.GetActor( attachableC->GetAttachedGUID() ) );
if ( attachableC->GetAttachedGUID() == -1 )
{
continue;
}
if ( !attachedActor.IsValid() )
{
attachableC->SetAttachedGUID( -1 );
EventServer< AttachStateChangedEvent>::Get().SendEvent( AttachStateChangedEvent( AttachStateChangedEvent::Detached, -1, actor->GetGUID() ) );
continue;
}
Opt<IHealthComponent> attachedHealthC( attachedActor->Get<IHealthComponent>() );
if ( attachedHealthC.IsValid() )
{
if ( !attachedHealthC->IsAlive() )
{
if (attachableC->IsRemoveOnAttachedDeath())
{
Opt<IHealthComponent> healthC( actor->Get<IHealthComponent>() );
if (healthC.IsValid())
{
healthC->SetHP( 0 );
}
}
attachableC->SetAttachedGUID( -1 );
EventServer<AttachStateChangedEvent>::Get().SendEvent( AttachStateChangedEvent( AttachStateChangedEvent::Detached, attachedActor->GetGUID(), actor->GetGUID() ) );
continue;
}
}
Opt<IPositionComponent> attachedPositionC( attachedActor->Get<IPositionComponent>() );
if ( !attachedPositionC.IsValid() )
{
continue;
}
Opt<IPositionComponent> positionC( actor->Get<IPositionComponent>() );
if ( !positionC.IsValid() )
{
continue;
}
glm::vec2 rvec = glm::rotate(glm::vec2(attachableC->GetPositionX(), attachableC->GetPositionY()), float( attachedPositionC->GetOrientation() ) );
positionC->SetX( attachedPositionC->GetX() + rvec.x );
positionC->SetY( attachedPositionC->GetY() + rvec.y );
if (attachableC->IsInheritOrientation())
{
positionC->SetOrientation( attachedPositionC->GetOrientation() + boost::math::double_constants::pi );
}
}
}
示例2: SetProjectilePosition
void WeaponItemSubSystem::SetProjectilePosition(Actor& projectile, Actor& actor)
{
Opt<IPositionComponent> projPositionC = projectile.Get<IPositionComponent>();
Opt<IPositionComponent> actorPositionC = actor.Get<IPositionComponent>();
glm::vec2 rvec(0.0, 0.0);
Opt<IInventoryComponent> inventoryC = actor.Get<IInventoryComponent>();
if (inventoryC.IsValid())
{
Opt<Weapon> weapon = inventoryC->GetSelectedWeapon();
if (weapon.IsValid())
{
rvec.x += weapon->GetPositionX();
rvec.y -= weapon->GetPositionY();
}
}
rvec=glm::rotate(rvec, float(actorPositionC->GetOrientation()));
projPositionC->SetX( projPositionC->GetX() + actorPositionC->GetX() + rvec.x );
projPositionC->SetY( projPositionC->GetY() + actorPositionC->GetY() + rvec.y );
}