Browse Source

Replace "enum UpdateEvent" and "UpdateEventFlags" by "enum class LogicComponentEvents"

1vanK 3 years ago
parent
commit
a682cfbb4e

+ 1 - 1
Source/Samples/05_AnimatingScene/Rotator.cpp

@@ -12,7 +12,7 @@ Rotator::Rotator(Context* context) :
     rotationSpeed_(Vector3::ZERO)
 {
     // Only the scene update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_UPDATE);
+    SetUpdateEventMask(LogicComponentEvents::Update);
 }
 
 void Rotator::SetRotationSpeed(const Vector3& speed)

+ 1 - 1
Source/Samples/06_SkeletalAnimation/Mover.cpp

@@ -15,7 +15,7 @@ Mover::Mover(Context* context) :
     rotationSpeed_(0.0f)
 {
     // Only the scene update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_UPDATE);
+    SetUpdateEventMask(LogicComponentEvents::Update);
 }
 
 void Mover::SetParameters(float moveSpeed, float rotationSpeed, const BoundingBox& bounds)

+ 1 - 1
Source/Samples/10_RenderToTexture/Rotator.cpp

@@ -12,7 +12,7 @@ Rotator::Rotator(Context* context) :
     rotationSpeed_(Vector3::ZERO)
 {
     // Only the scene update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_UPDATE);
+    SetUpdateEventMask(LogicComponentEvents::Update);
 }
 
 void Rotator::SetRotationSpeed(const Vector3& speed)

+ 1 - 1
Source/Samples/18_CharacterDemo/Character.cpp

@@ -19,7 +19,7 @@ Character::Character(Context* context) :
     inAirTimer_(0.0f)
 {
     // Only the physics update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_FIXEDUPDATE);
+    SetUpdateEventMask(LogicComponentEvents::FixedUpdate);
 }
 
 void Character::RegisterObject(Context* context)

+ 1 - 1
Source/Samples/19_VehicleDemo/Vehicle.cpp

@@ -19,7 +19,7 @@ Vehicle::Vehicle(Context* context) :
     LogicComponent(context)
 {
     // Only the physics update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_FIXEDUPDATE);
+    SetUpdateEventMask(LogicComponentEvents::FixedUpdate);
 }
 
 void Vehicle::RegisterObject(Context* context)

+ 1 - 1
Source/Samples/46_RaycastVehicle/Vehicle.cpp

@@ -35,7 +35,7 @@ Vehicle::Vehicle(Urho3D::Context* context)
     : LogicComponent(context),
       steering_(0.0f)
 {
-    SetUpdateEventMask(USE_FIXEDUPDATE | USE_POSTUPDATE);
+    SetUpdateEventMask(LogicComponentEvents::FixedUpdate | LogicComponentEvents::PostUpdate);
     engineForce_ = 0.0f;
     brakingForce_ = 50.0f;
     vehicleSteering_ = 0.0f;

+ 1 - 1
Source/Samples/99_Benchmark/Benchmark02_WomanMover.cpp

@@ -17,7 +17,7 @@ Benchmark02_WomanMover::Benchmark02_WomanMover(Context* context)
     , rotationSpeed_(0.f)
 {
     // Only the scene update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_UPDATE);
+    SetUpdateEventMask(LogicComponentEvents::Update);
 }
 
 void Benchmark02_WomanMover::SetParameters(float moveSpeed, float rotationSpeed, const BoundingBox& bounds)

+ 1 - 1
Source/Samples/99_Benchmark/Benchmark03_MoleculeLogic.cpp

@@ -13,7 +13,7 @@ Benchmark03_MoleculeLogic::Benchmark03_MoleculeLogic(Context* context)
     : LogicComponent(context)
     , moleculeType_(0)
 {
-    SetUpdateEventMask(USE_UPDATE | USE_POSTUPDATE);
+    SetUpdateEventMask(LogicComponentEvents::Update | LogicComponentEvents::PostUpdate);
 }
 
 void Benchmark03_MoleculeLogic::SetParameters(i32 type)

+ 1 - 1
Source/Samples/Utilities2D/Mover.cpp

@@ -21,7 +21,7 @@ Mover::Mover(Context* context) :
     flip_(0.0f)
 {
     // Only the scene update event is needed: unsubscribe from the rest for optimization
-    SetUpdateEventMask(USE_UPDATE);
+    SetUpdateEventMask(LogicComponentEvents::Update);
 }
 
 void Mover::RegisterObject(Context* context)

+ 19 - 18
Source/Urho3D/AngelScript/Generated_Enums.cpp

@@ -314,6 +314,14 @@ static const unsigned Key_KEY_VOLUMEDOWN = KEY_VOLUMEDOWN;
 static const unsigned Key_KEY_VOLUMEUP = KEY_VOLUMEUP;
 static const unsigned Key_KEY_WWW = KEY_WWW;
 
+// enum class LogicComponentEvents | File: ../Scene/LogicComponent.h
+static const int LogicComponentEvents_None = static_cast<int>(LogicComponentEvents::None); 
+static const int LogicComponentEvents_Update = static_cast<int>(LogicComponentEvents::Update); 
+static const int LogicComponentEvents_PostUpdate = static_cast<int>(LogicComponentEvents::PostUpdate); 
+static const int LogicComponentEvents_FixedUpdate = static_cast<int>(LogicComponentEvents::FixedUpdate); 
+static const int LogicComponentEvents_FixedPostUpdate = static_cast<int>(LogicComponentEvents::FixedPostUpdate); 
+static const int LogicComponentEvents_All = static_cast<int>(LogicComponentEvents::All); 
+
 // enum MaterialQuality : u32 | File: ../GraphicsAPI/GraphicsDefs.h
 static const u32 MaterialQuality_QUALITY_LOW = QUALITY_LOW;
 static const u32 MaterialQuality_QUALITY_MEDIUM = QUALITY_MEDIUM;
@@ -588,13 +596,6 @@ static const unsigned SmoothingType_SMOOTH_NONE = SMOOTH_NONE;
 static const unsigned SmoothingType_SMOOTH_POSITION = SMOOTH_POSITION;
 static const unsigned SmoothingType_SMOOTH_ROTATION = SMOOTH_ROTATION;
 
-// enum UpdateEvent : unsigned | File: ../Scene/LogicComponent.h
-static const unsigned UpdateEvent_USE_NO_EVENT = USE_NO_EVENT;
-static const unsigned UpdateEvent_USE_UPDATE = USE_UPDATE;
-static const unsigned UpdateEvent_USE_POSTUPDATE = USE_POSTUPDATE;
-static const unsigned UpdateEvent_USE_FIXEDUPDATE = USE_FIXEDUPDATE;
-static const unsigned UpdateEvent_USE_FIXEDPOSTUPDATE = USE_FIXEDPOSTUPDATE;
-
 // enum VertexMask : u32 | File: ../GraphicsAPI/GraphicsDefs.h
 static const u32 VertexMask_MASK_NONE = MASK_NONE;
 static const u32 VertexMask_MASK_POSITION = MASK_POSITION;
@@ -1337,6 +1338,17 @@ void ASRegisterGeneratedEnums(asIScriptEngine* engine)
     engine->RegisterEnumValue("LockState", "LOCK_SHADOW", LOCK_SHADOW);
     engine->RegisterEnumValue("LockState", "LOCK_SCRATCH", LOCK_SCRATCH);
 
+    // enum class LogicComponentEvents | File: ../Scene/LogicComponent.h
+    engine->RegisterTypedef("LogicComponentEvents", "int");
+    engine->SetDefaultNamespace("LogicComponentEvents");
+    engine->RegisterGlobalProperty("const int None", (void*)&LogicComponentEvents_None);
+    engine->RegisterGlobalProperty("const int Update", (void*)&LogicComponentEvents_Update);
+    engine->RegisterGlobalProperty("const int PostUpdate", (void*)&LogicComponentEvents_PostUpdate);
+    engine->RegisterGlobalProperty("const int FixedUpdate", (void*)&LogicComponentEvents_FixedUpdate);
+    engine->RegisterGlobalProperty("const int FixedPostUpdate", (void*)&LogicComponentEvents_FixedPostUpdate);
+    engine->RegisterGlobalProperty("const int All", (void*)&LogicComponentEvents_All);
+    engine->SetDefaultNamespace("");
+
     // enum MaterialQuality : u32 | File: ../GraphicsAPI/GraphicsDefs.h
     engine->RegisterTypedef("MaterialQuality", "uint");
     engine->RegisterGlobalProperty("const uint QUALITY_LOW", (void*)&MaterialQuality_QUALITY_LOW);
@@ -1783,17 +1795,6 @@ void ASRegisterGeneratedEnums(asIScriptEngine* engine)
     engine->RegisterEnumValue("TraversalMode", "TM_BREADTH_FIRST", TM_BREADTH_FIRST);
     engine->RegisterEnumValue("TraversalMode", "TM_DEPTH_FIRST", TM_DEPTH_FIRST);
 
-    // enum UpdateEvent : unsigned | File: ../Scene/LogicComponent.h
-    engine->RegisterTypedef("UpdateEvent", "uint");
-    engine->RegisterGlobalProperty("const uint USE_NO_EVENT", (void*)&UpdateEvent_USE_NO_EVENT);
-    engine->RegisterGlobalProperty("const uint USE_UPDATE", (void*)&UpdateEvent_USE_UPDATE);
-    engine->RegisterGlobalProperty("const uint USE_POSTUPDATE", (void*)&UpdateEvent_USE_POSTUPDATE);
-    engine->RegisterGlobalProperty("const uint USE_FIXEDUPDATE", (void*)&UpdateEvent_USE_FIXEDUPDATE);
-    engine->RegisterGlobalProperty("const uint USE_FIXEDPOSTUPDATE", (void*)&UpdateEvent_USE_FIXEDPOSTUPDATE);
-
-    // URHO3D_FLAGSET(UpdateEvent, UpdateEventFlags) | File: ../Scene/LogicComponent.h
-    engine->RegisterTypedef("UpdateEventFlags", "uint");
-
     // enum UpdateGeometryType | File: ../Graphics/Drawable.h
     engine->RegisterEnum("UpdateGeometryType");
     engine->RegisterEnumValue("UpdateGeometryType", "UPDATE_NONE", UPDATE_NONE);

+ 4 - 4
Source/Urho3D/AngelScript/Generated_Members.h

@@ -17922,8 +17922,8 @@ template <class T> void RegisterMembers_LogicComponent(asIScriptEngine* engine,
     // virtual void LogicComponent::FixedUpdate(float timeStep)
     engine->RegisterObjectMethod(className, "void FixedUpdate(float)", AS_METHODPR(T, FixedUpdate, (float), void), AS_CALL_THISCALL);
 
-    // UpdateEventFlags LogicComponent::GetUpdateEventMask() const
-    engine->RegisterObjectMethod(className, "UpdateEventFlags GetUpdateEventMask() const", AS_METHODPR(T, GetUpdateEventMask, () const, UpdateEventFlags), AS_CALL_THISCALL);
+    // LogicComponentEvents LogicComponent::GetUpdateEventMask() const
+    engine->RegisterObjectMethod(className, "LogicComponentEvents GetUpdateEventMask() const", AS_METHODPR(T, GetUpdateEventMask, () const, LogicComponentEvents), AS_CALL_THISCALL);
 
     // bool LogicComponent::IsDelayedStartCalled() const
     engine->RegisterObjectMethod(className, "bool IsDelayedStartCalled() const", AS_METHODPR(T, IsDelayedStartCalled, () const, bool), AS_CALL_THISCALL);
@@ -17931,8 +17931,8 @@ template <class T> void RegisterMembers_LogicComponent(asIScriptEngine* engine,
     // virtual void LogicComponent::PostUpdate(float timeStep)
     engine->RegisterObjectMethod(className, "void PostUpdate(float)", AS_METHODPR(T, PostUpdate, (float), void), AS_CALL_THISCALL);
 
-    // void LogicComponent::SetUpdateEventMask(UpdateEventFlags mask)
-    engine->RegisterObjectMethod(className, "void SetUpdateEventMask(UpdateEventFlags)", AS_METHODPR(T, SetUpdateEventMask, (UpdateEventFlags), void), AS_CALL_THISCALL);
+    // void LogicComponent::SetUpdateEventMask(LogicComponentEvents mask)
+    engine->RegisterObjectMethod(className, "void SetUpdateEventMask(LogicComponentEvents)", AS_METHODPR(T, SetUpdateEventMask, (LogicComponentEvents), void), AS_CALL_THISCALL);
 
     // virtual void LogicComponent::Start()
     engine->RegisterObjectMethod(className, "void Start()", AS_METHODPR(T, Start, (), void), AS_CALL_THISCALL);

+ 1 - 1
Source/Urho3D/Physics/RaycastVehicle.cpp

@@ -121,7 +121,7 @@ RaycastVehicle::RaycastVehicle(Context* context) :
     LogicComponent(context)
 {
     // fixed update() for inputs and post update() to sync wheels for rendering
-    SetUpdateEventMask(USE_FIXEDUPDATE | USE_FIXEDPOSTUPDATE | USE_POSTUPDATE);
+    SetUpdateEventMask(LogicComponentEvents::FixedUpdate | LogicComponentEvents::FixedPostUpdate | LogicComponentEvents::PostUpdate);
     vehicleData_ = new RaycastVehicleData();
     coordinateSystem_ = RIGHT_UP_FORWARD;
     wheelNodes_.Clear();

+ 26 - 26
Source/Urho3D/Scene/LogicComponent.cpp

@@ -16,8 +16,8 @@ namespace Urho3D
 
 LogicComponent::LogicComponent(Context* context) :
     Component(context),
-    updateEventMask_(USE_UPDATE | USE_POSTUPDATE | USE_FIXEDUPDATE | USE_FIXEDPOSTUPDATE),
-    currentEventMask_(0),
+    updateEventMask_(LogicComponentEvents::All),
+    currentEventMask_(LogicComponentEvents::None),
     delayedStartCalled_(false)
 {
 }
@@ -45,7 +45,7 @@ void LogicComponent::FixedPostUpdate(float timeStep)
 {
 }
 
-void LogicComponent::SetUpdateEventMask(UpdateEventFlags mask)
+void LogicComponent::SetUpdateEventMask(LogicComponentEvents mask)
 {
     if (updateEventMask_ != mask)
     {
@@ -80,7 +80,7 @@ void LogicComponent::OnSceneSet(Scene* scene)
         UnsubscribeFromEvent(E_PHYSICSPRESTEP);
         UnsubscribeFromEvent(E_PHYSICSPOSTSTEP);
 #endif
-        currentEventMask_ = USE_NO_EVENT;
+        currentEventMask_ = LogicComponentEvents::None;
     }
 }
 
@@ -92,28 +92,28 @@ void LogicComponent::UpdateEventSubscription()
 
     bool enabled = IsEnabledEffective();
 
-    bool needUpdate = enabled && ((updateEventMask_ & USE_UPDATE) || !delayedStartCalled_);
-    if (needUpdate && !(currentEventMask_ & USE_UPDATE))
+    bool needUpdate = enabled && (!!(updateEventMask_ & LogicComponentEvents::Update) || !delayedStartCalled_);
+    if (needUpdate && !(currentEventMask_ & LogicComponentEvents::Update))
     {
         SubscribeToEvent(scene, E_SCENEUPDATE, URHO3D_HANDLER(LogicComponent, HandleSceneUpdate));
-        currentEventMask_ |= USE_UPDATE;
+        currentEventMask_ |= LogicComponentEvents::Update;
     }
-    else if (!needUpdate && (currentEventMask_ & USE_UPDATE))
+    else if (!needUpdate && !!(currentEventMask_ & LogicComponentEvents::Update))
     {
         UnsubscribeFromEvent(scene, E_SCENEUPDATE);
-        currentEventMask_ &= ~USE_UPDATE;
+        currentEventMask_ &= ~LogicComponentEvents::Update;
     }
 
-    bool needPostUpdate = enabled && (updateEventMask_ & USE_POSTUPDATE);
-    if (needPostUpdate && !(currentEventMask_ & USE_POSTUPDATE))
+    bool needPostUpdate = enabled && !!(updateEventMask_ & LogicComponentEvents::PostUpdate);
+    if (needPostUpdate && !(currentEventMask_ & LogicComponentEvents::PostUpdate))
     {
         SubscribeToEvent(scene, E_SCENEPOSTUPDATE, URHO3D_HANDLER(LogicComponent, HandleScenePostUpdate));
-        currentEventMask_ |= USE_POSTUPDATE;
+        currentEventMask_ |= LogicComponentEvents::PostUpdate;
     }
-    else if (!needPostUpdate && (currentEventMask_ & USE_POSTUPDATE))
+    else if (!needPostUpdate && !!(currentEventMask_ & LogicComponentEvents::PostUpdate))
     {
         UnsubscribeFromEvent(scene, E_SCENEPOSTUPDATE);
-        currentEventMask_ &= ~USE_POSTUPDATE;
+        currentEventMask_ &= ~LogicComponentEvents::PostUpdate;
     }
 
 #if defined(URHO3D_PHYSICS) || defined(URHO3D_PHYSICS2D)
@@ -121,28 +121,28 @@ void LogicComponent::UpdateEventSubscription()
     if (!world)
         return;
 
-    bool needFixedUpdate = enabled && (updateEventMask_ & USE_FIXEDUPDATE);
-    if (needFixedUpdate && !(currentEventMask_ & USE_FIXEDUPDATE))
+    bool needFixedUpdate = enabled && !!(updateEventMask_ & LogicComponentEvents::FixedUpdate);
+    if (needFixedUpdate && !(currentEventMask_ & LogicComponentEvents::FixedUpdate))
     {
         SubscribeToEvent(world, E_PHYSICSPRESTEP, URHO3D_HANDLER(LogicComponent, HandlePhysicsPreStep));
-        currentEventMask_ |= USE_FIXEDUPDATE;
+        currentEventMask_ |= LogicComponentEvents::FixedUpdate;
     }
-    else if (!needFixedUpdate && (currentEventMask_ & USE_FIXEDUPDATE))
+    else if (!needFixedUpdate && !!(currentEventMask_ & LogicComponentEvents::FixedUpdate))
     {
         UnsubscribeFromEvent(world, E_PHYSICSPRESTEP);
-        currentEventMask_ &= ~USE_FIXEDUPDATE;
+        currentEventMask_ &= ~LogicComponentEvents::FixedUpdate;
     }
 
-    bool needFixedPostUpdate = enabled && (updateEventMask_ & USE_FIXEDPOSTUPDATE);
-    if (needFixedPostUpdate && !(currentEventMask_ & USE_FIXEDPOSTUPDATE))
+    bool needFixedPostUpdate = enabled && !!(updateEventMask_ & LogicComponentEvents::FixedPostUpdate);
+    if (needFixedPostUpdate && !(currentEventMask_ & LogicComponentEvents::FixedPostUpdate))
     {
         SubscribeToEvent(world, E_PHYSICSPOSTSTEP, URHO3D_HANDLER(LogicComponent, HandlePhysicsPostStep));
-        currentEventMask_ |= USE_FIXEDPOSTUPDATE;
+        currentEventMask_ |= LogicComponentEvents::FixedPostUpdate;
     }
-    else if (!needFixedPostUpdate && (currentEventMask_ & USE_FIXEDPOSTUPDATE))
+    else if (!needFixedPostUpdate && !!(currentEventMask_ & LogicComponentEvents::FixedPostUpdate))
     {
         UnsubscribeFromEvent(world, E_PHYSICSPOSTSTEP);
-        currentEventMask_ &= ~USE_FIXEDPOSTUPDATE;
+        currentEventMask_ &= ~LogicComponentEvents::FixedPostUpdate;
     }
 #endif
 }
@@ -158,10 +158,10 @@ void LogicComponent::HandleSceneUpdate(StringHash eventType, VariantMap& eventDa
         delayedStartCalled_ = true;
 
         // If did not need actual update events, unsubscribe now
-        if (!(updateEventMask_ & USE_UPDATE))
+        if (!(updateEventMask_ & LogicComponentEvents::Update))
         {
             UnsubscribeFromEvent(GetScene(), E_SCENEUPDATE);
-            currentEventMask_ &= ~USE_UPDATE;
+            currentEventMask_ &= ~LogicComponentEvents::Update;
             return;
         }
     }

+ 23 - 16
Source/Urho3D/Scene/LogicComponent.h

@@ -11,20 +11,27 @@
 namespace Urho3D
 {
 
-enum UpdateEvent : unsigned
+enum class LogicComponentEvents
 {
-    /// Bitmask for not using any events.
-    USE_NO_EVENT = 0x0,
-    /// Bitmask for using the scene update event.
-    USE_UPDATE = 0x1,
-    /// Bitmask for using the scene post-update event.
-    USE_POSTUPDATE = 0x2,
-    /// Bitmask for using the physics update event.
-    USE_FIXEDUPDATE = 0x4,
-    /// Bitmask for using the physics post-update event.
-    USE_FIXEDPOSTUPDATE = 0x8,
+    /// Not use any events
+    None            = 0,
+
+    /// Use the scene update event
+    Update          = 1 << 0,
+
+    /// Use the scene post-update event
+    PostUpdate      = 1 << 1,
+
+    /// Use the physics update event
+    FixedUpdate     = 1 << 2,
+
+    /// Use the physics post-update event
+    FixedPostUpdate = 1 << 3, 
+
+    /// Use all events
+    All             = Update | PostUpdate | FixedUpdate | FixedPostUpdate
 };
-URHO3D_FLAGSET(UpdateEvent, UpdateEventFlags);
+URHO3D_FLAGS(LogicComponentEvents);
 
 /// Helper base class for user-defined game logic components that hooks up to update events and forwards them to virtual functions similar to ScriptInstance class.
 class URHO3D_API LogicComponent : public Component
@@ -59,10 +66,10 @@ public:
     virtual void FixedPostUpdate(float timeStep);
 
     /// Set what update events should be subscribed to. Use this for optimization: by default all are in use. Note that this is not an attribute and is not saved or network-serialized, therefore it should always be called eg. in the subclass constructor.
-    void SetUpdateEventMask(UpdateEventFlags mask);
+    void SetUpdateEventMask(LogicComponentEvents mask);
 
     /// Return what update events are subscribed to.
-    UpdateEventFlags GetUpdateEventMask() const { return updateEventMask_; }
+    LogicComponentEvents GetUpdateEventMask() const { return updateEventMask_; }
 
     /// Return whether the DelayedStart() function has been called.
     bool IsDelayedStartCalled() const { return delayedStartCalled_; }
@@ -87,9 +94,9 @@ private:
     void HandlePhysicsPostStep(StringHash eventType, VariantMap& eventData);
 #endif
     /// Requested event subscription mask.
-    UpdateEventFlags updateEventMask_;
+    LogicComponentEvents updateEventMask_;
     /// Current event subscription mask.
-    UpdateEventFlags currentEventMask_;
+    LogicComponentEvents currentEventMask_;
     /// Flag for delayed start.
     bool delayedStartCalled_;
 };