Как реализовать что-то вроде нереализованных состояний?

В unrealscript у нас есть такой код:

 class Pawn extends Actor;

 simulated function BeginFire(Byte FireModeNum)
 {
       //do something
 }

 state Active
 {
     simulated function BeginFire(Byte FireModeNum)
     {
           //do something else
     }
 }

Тогда, если мы позвоним:

 GotoState('Active');
 BeginFire(0);// Active.BeginFired called

Однако в UE4 я могу использовать только класс C++ для реализации состояний:

 class  AWeaponBase : public AActor
 {
         UStateBase* currentstate;
         void BeginFire(char FireModeNum);
 }

 class UStateActive : public UStateBase 
 {
          void BeginFire(char FireModeNum);
 }

теперь предположим, если мы позвоним:

SetState(UStateActive );
BeginFire(0);//want the state override version

Как это может быть сделано? Я считаю, что функция может служить этой цели хорошо:

UFunction* FindFunction( FName InName ) const;

Но 'find' обычно подразумевает, что эта функция может быть не очень быстрой и вызывать проблемы с производительностью, если вызывается каждый тик.

Итак, что является самым чистым способом достижения состояния UC в C++?

0 ответов

Другие вопросы по тегам