Browse Source

Rename Quality to MaterialQuality. Revert AnimationTrack default ctor. Rename UseEvent to UpdateEvent. Make FlagSet casts more strict. Minor changes.

Eugene Kozlov 7 years ago
parent
commit
82c5529295

+ 2 - 2
Source/Samples/Sample.inl

@@ -284,7 +284,7 @@ void Sample::HandleKeyDown(StringHash /*eventType*/, VariantMap& eventData)
             ++quality;
             if (quality > QUALITY_HIGH)
                 quality = QUALITY_LOW;
-            renderer->SetTextureQuality((Quality)quality);
+            renderer->SetTextureQuality((MaterialQuality)quality);
         }
 
         // Material quality
@@ -294,7 +294,7 @@ void Sample::HandleKeyDown(StringHash /*eventType*/, VariantMap& eventData)
             ++quality;
             if (quality > QUALITY_HIGH)
                 quality = QUALITY_LOW;
-            renderer->SetMaterialQuality((Quality)quality);
+            renderer->SetMaterialQuality((MaterialQuality)quality);
         }
 
         // Specular lighting

+ 14 - 8
Source/Urho3D/Container/FlagSet.h

@@ -29,7 +29,7 @@
 namespace Urho3D
 {
 
-/// Bitwise Type trait which enables against Enum value. for consumption by flagset class and it's global operators.
+/// Bitwise Type trait which enables against Enum value. For consumption by flagset class and it's global operators.
 template<typename T> struct IsFlagSet
 {
     constexpr static bool value_ = false;
@@ -172,37 +172,43 @@ public:
     }
 
     /// Cast to enum value.
-    operator Enum() const
+    explicit operator Enum() const
     {
         return (Enum)value_;
     }
 
+    /// Cast to double. Used by Lua bindings.
+    explicit operator double() const
+    {
+        return (double)value_;
+    }
+
     /// Equality check against enum value.
-    bool operator ==(Enum rhs)
+    bool operator ==(Enum rhs) const
     {
         return value_ == (Integer)rhs;
     }
 
     /// Equality check against another flagset.
-    bool operator ==(FlagSet rhs)
+    bool operator ==(FlagSet rhs) const
     {
         return value_ == rhs.value_;
     }
 
     /// Non-equality check against enum value.
-    bool operator !=(Enum rhs)
+    bool operator !=(Enum rhs) const
     {
         return value_ != (Integer)rhs;
     }
 
     /// Non-equality check against another flagset value.
-    bool operator !=(FlagSet rhs)
+    bool operator !=(FlagSet rhs) const
     {
         return value_ != rhs.value_;
     }
 
     /// Returns true if specified enum value is set.
-    inline bool Is(const Enum value) const
+    inline bool Test(const Enum value) const
     {
         Integer flags = (Integer) value;
         return (value_ & flags) == flags && (flags != 0 || value_ == flags);
@@ -236,7 +242,7 @@ Urho3D::FlagSet<Enum> operator ^ (const Enum lhs, const Enum rhs)
     return Urho3D::FlagSet<Enum>(lhs) ^ rhs;
 }
 
-/// Bitwise Operator RESET for against Enum value.s
+/// Bitwise Operator INVERSION for against Enum value.s
 template <class Enum, class = typename std::enable_if<Urho3D::IsFlagSet<Enum>::value_>::type>
 Urho3D::FlagSet<Enum> operator ~ (const Enum rhs)
 {

+ 2 - 2
Source/Urho3D/Engine/Engine.cpp

@@ -270,8 +270,8 @@ bool Engine::Initialize(const VariantMap& parameters)
         renderer->SetDrawShadows(GetParameter(parameters, EP_SHADOWS, true).GetBool());
         if (renderer->GetDrawShadows() && GetParameter(parameters, EP_LOW_QUALITY_SHADOWS, false).GetBool())
             renderer->SetShadowQuality(SHADOWQUALITY_SIMPLE_16BIT);
-        renderer->SetMaterialQuality((Quality)GetParameter(parameters, EP_MATERIAL_QUALITY, QUALITY_HIGH).GetInt());
-        renderer->SetTextureQuality((Quality)GetParameter(parameters, EP_TEXTURE_QUALITY, QUALITY_HIGH).GetInt());
+        renderer->SetMaterialQuality((MaterialQuality)GetParameter(parameters, EP_MATERIAL_QUALITY, QUALITY_HIGH).GetInt());
+        renderer->SetTextureQuality((MaterialQuality)GetParameter(parameters, EP_TEXTURE_QUALITY, QUALITY_HIGH).GetInt());
         renderer->SetTextureFilterMode((TextureFilterMode)GetParameter(parameters, EP_TEXTURE_FILTER_MODE, FILTER_TRILINEAR).GetInt());
         renderer->SetTextureAnisotropy(GetParameter(parameters, EP_TEXTURE_ANISOTROPY, 4).GetInt());
 

+ 3 - 1
Source/Urho3D/Graphics/Animation.h

@@ -64,7 +64,9 @@ struct AnimationKeyFrame
 struct URHO3D_API AnimationTrack
 {
     /// Construct.
-    AnimationTrack() = default;
+    AnimationTrack()
+    {
+    }
 
     /// Assign keyframe at index.
     void SetKeyFrame(unsigned index, const AnimationKeyFrame& keyFrame);

+ 3 - 3
Source/Urho3D/Graphics/GraphicsDefs.h

@@ -431,7 +431,7 @@ extern URHO3D_API const StringHash PSP_ZONEMAX;
 // Scale calculation from bounding box diagonal.
 extern URHO3D_API const Vector3 DOT_SCALE;
 
-enum Quality : unsigned
+enum MaterialQuality : unsigned
 {
     QUALITY_LOW = 0,
     QUALITY_MEDIUM = 1,
@@ -439,13 +439,13 @@ enum Quality : unsigned
     QUALITY_MAX = 15,
 };
 
-enum Clear : unsigned
+enum ClearFlag : unsigned
 {
     CLEAR_COLOR = 0x1,
     CLEAR_DEPTH = 0x2,
     CLEAR_STENCIL = 0x4,
 };
-URHO3D_FLAGSET(Clear, ClearFlags);
+URHO3D_FLAGSET(ClearFlag, ClearFlags);
 
 // Legacy vertex element bitmasks.
 enum VertexMask : unsigned

+ 4 - 4
Source/Urho3D/Graphics/Material.cpp

@@ -171,7 +171,7 @@ TechniqueEntry::TechniqueEntry() noexcept :
 {
 }
 
-TechniqueEntry::TechniqueEntry(Technique* tech, Quality qualityLevel, float lodDistance) noexcept :
+TechniqueEntry::TechniqueEntry(Technique* tech, MaterialQuality qualityLevel, float lodDistance) noexcept :
     technique_(tech),
     original_(tech),
     qualityLevel_(qualityLevel),
@@ -424,7 +424,7 @@ bool Material::Load(const XMLElement& source)
             TechniqueEntry newTechnique;
             newTechnique.technique_ = newTechnique.original_ = tech;
             if (techniqueElem.HasAttribute("quality"))
-                newTechnique.qualityLevel_ = (Quality)techniqueElem.GetInt("quality");
+                newTechnique.qualityLevel_ = (MaterialQuality)techniqueElem.GetInt("quality");
             if (techniqueElem.HasAttribute("loddistance"))
                 newTechnique.lodDistance_ = techniqueElem.GetFloat("loddistance");
             techniques_.Push(newTechnique);
@@ -579,7 +579,7 @@ bool Material::Load(const JSONValue& source)
             newTechnique.technique_ = newTechnique.original_ = tech;
             JSONValue qualityVal = techVal.Get("quality");
             if (!qualityVal.IsNull())
-                newTechnique.qualityLevel_ = (Quality)qualityVal.GetInt();
+                newTechnique.qualityLevel_ = (MaterialQuality)qualityVal.GetInt();
             JSONValue lodDistanceVal = techVal.Get("loddistance");
             if (!lodDistanceVal.IsNull())
                 newTechnique.lodDistance_ = lodDistanceVal.GetFloat();
@@ -923,7 +923,7 @@ void Material::SetNumTechniques(unsigned num)
     RefreshMemoryUse();
 }
 
-void Material::SetTechnique(unsigned index, Technique* tech, Quality qualityLevel, float lodDistance)
+void Material::SetTechnique(unsigned index, Technique* tech, MaterialQuality qualityLevel, float lodDistance)
 {
     if (index >= techniques_.Size())
         return;

+ 3 - 3
Source/Urho3D/Graphics/Material.h

@@ -58,7 +58,7 @@ struct TechniqueEntry
     /// Construct with defaults.
     TechniqueEntry() noexcept;
     /// Construct with parameters.
-    TechniqueEntry(Technique* tech, Quality qualityLevel, float lodDistance) noexcept;
+    TechniqueEntry(Technique* tech, MaterialQuality qualityLevel, float lodDistance) noexcept;
     /// Destruct.
     ~TechniqueEntry() noexcept = default;
 
@@ -67,7 +67,7 @@ struct TechniqueEntry
     /// Original technique, in case the material adds shader compilation defines. The modified clones are requested from it.
     SharedPtr<Technique> original_;
     /// Quality level.
-    Quality qualityLevel_;
+    MaterialQuality qualityLevel_;
     /// LOD distance.
     float lodDistance_;
 };
@@ -135,7 +135,7 @@ public:
     /// Set number of techniques.
     void SetNumTechniques(unsigned num);
     /// Set technique.
-    void SetTechnique(unsigned index, Technique* tech, Quality qualityLevel = QUALITY_LOW, float lodDistance = 0.0f);
+    void SetTechnique(unsigned index, Technique* tech, MaterialQuality qualityLevel = QUALITY_LOW, float lodDistance = 0.0f);
     /// Set additional vertex shader defines. Separate multiple defines with spaces. Setting defines at the material level causes technique(s) to be cloned as necessary.
     void SetVertexShaderDefines(const String& defines);
     /// Set additional pixel shader defines. Separate multiple defines with spaces. Setting defines at the material level causes technique(s) to be cloned as necessary.

+ 2 - 2
Source/Urho3D/Graphics/Renderer.cpp

@@ -328,7 +328,7 @@ void Renderer::SetTextureFilterMode(TextureFilterMode mode)
     textureFilterMode_ = mode;
 }
 
-void Renderer::SetTextureQuality(Quality quality)
+void Renderer::SetTextureQuality(MaterialQuality quality)
 {
     quality = Clamp(quality, QUALITY_LOW, QUALITY_HIGH);
 
@@ -339,7 +339,7 @@ void Renderer::SetTextureQuality(Quality quality)
     }
 }
 
-void Renderer::SetMaterialQuality(Quality quality)
+void Renderer::SetMaterialQuality(MaterialQuality quality)
 {
     quality = Clamp(quality, QUALITY_LOW, QUALITY_MAX);
 

+ 6 - 6
Source/Urho3D/Graphics/Renderer.h

@@ -201,9 +201,9 @@ public:
     /// Set default texture filtering.
     void SetTextureFilterMode(TextureFilterMode mode);
     /// Set texture quality level. See the QUALITY constants in GraphicsDefs.h.
-    void SetTextureQuality(Quality quality);
+    void SetTextureQuality(MaterialQuality quality);
     /// Set material quality level. See the QUALITY constants in GraphicsDefs.h.
-    void SetMaterialQuality(Quality quality);
+    void SetMaterialQuality(MaterialQuality quality);
     /// Set shadows on/off.
     void SetDrawShadows(bool enable);
     /// Set shadow map resolution.
@@ -278,10 +278,10 @@ public:
     TextureFilterMode GetTextureFilterMode() const { return textureFilterMode_; }
 
     /// Return texture quality level.
-    Quality GetTextureQuality() const { return textureQuality_; }
+    MaterialQuality GetTextureQuality() const { return textureQuality_; }
 
     /// Return material quality level.
-    Quality GetMaterialQuality() const { return materialQuality_; }
+    MaterialQuality GetMaterialQuality() const { return materialQuality_; }
 
     /// Return shadow map resolution.
     int GetShadowMapSize() const { return shadowMapSize_; }
@@ -537,9 +537,9 @@ private:
     /// Texture filtering mode.
     TextureFilterMode textureFilterMode_{FILTER_TRILINEAR};
     /// Texture quality level.
-    Quality textureQuality_{QUALITY_HIGH};
+    MaterialQuality textureQuality_{QUALITY_HIGH};
     /// Material quality level.
-    Quality materialQuality_{QUALITY_HIGH};
+    MaterialQuality materialQuality_{QUALITY_HIGH};
     /// Shadow map resolution.
     int shadowMapSize_{1024};
     /// Shadow quality.

+ 2 - 2
Source/Urho3D/Graphics/Texture.cpp

@@ -106,7 +106,7 @@ void Texture::SetBackupTexture(Texture* texture)
     backupTexture_ = texture;
 }
 
-void Texture::SetMipsToSkip(Quality quality, int toSkip)
+void Texture::SetMipsToSkip(MaterialQuality quality, int toSkip)
 {
     if (quality >= QUALITY_LOW && quality < MAX_TEXTURE_QUALITY_LEVELS)
     {
@@ -121,7 +121,7 @@ void Texture::SetMipsToSkip(Quality quality, int toSkip)
     }
 }
 
-int Texture::GetMipsToSkip(Quality quality) const
+int Texture::GetMipsToSkip(MaterialQuality quality) const
 {
     return (quality >= QUALITY_LOW && quality < MAX_TEXTURE_QUALITY_LEVELS) ? mipsToSkip_[quality] : 0;
 }

+ 2 - 2
Source/Urho3D/Graphics/Texture.h

@@ -67,7 +67,7 @@ public:
     /// Set backup texture to use when rendering to this texture.
     void SetBackupTexture(Texture* texture);
     /// Set mip levels to skip on a quality setting when loading. Ensures higher quality levels do not skip more.
-    void SetMipsToSkip(Quality quality, int toSkip);
+    void SetMipsToSkip(MaterialQuality quality, int toSkip);
 
     /// Return API-specific texture format.
     unsigned GetFormat() const { return format_; }
@@ -121,7 +121,7 @@ public:
     Texture* GetBackupTexture() const { return backupTexture_; }
 
     /// Return mip levels to skip on a quality setting when loading.
-    int GetMipsToSkip(Quality quality) const;
+    int GetMipsToSkip(MaterialQuality quality) const;
     /// Return mip level width, or 0 if level does not exist.
     int GetLevelWidth(unsigned level) const;
     /// Return mip level width, or 0 if level does not exist.

+ 2 - 2
Source/Urho3D/Input/Input.cpp

@@ -1349,12 +1349,12 @@ bool Input::GetScancodePress(Scancode scancode) const
     return scancodePress_.Contains(scancode);
 }
 
-bool Input::GetMouseButtonDown(MouseButton button) const
+bool Input::GetMouseButtonDown(MouseButtonFlags button) const
 {
     return mouseButtonDown_ & button;
 }
 
-bool Input::GetMouseButtonPress(MouseButton button) const
+bool Input::GetMouseButtonPress(MouseButtonFlags button) const
 {
     return mouseButtonPress_ & button;
 }

+ 2 - 2
Source/Urho3D/Input/Input.h

@@ -233,9 +233,9 @@ public:
     /// Check if a key has been pressed on this frame by scancode.
     bool GetScancodePress(Scancode scancode) const;
     /// Check if a mouse button is held down.
-    bool GetMouseButtonDown(MouseButton button) const;
+    bool GetMouseButtonDown(MouseButtonFlags button) const;
     /// Check if a mouse button has been pressed on this frame.
-    bool GetMouseButtonPress(MouseButton button) const;
+    bool GetMouseButtonPress(MouseButtonFlags button) const;
     /// Check if a qualifier key is held down.
     bool GetQualifierDown(Qualifier qualifier) const;
     /// Check if a qualifier key has been pressed on this frame.

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

@@ -64,7 +64,7 @@ void LogicComponent::FixedPostUpdate(float timeStep)
 {
 }
 
-void LogicComponent::SetUpdateEventMask(FlagSet<UseEvent> mask)
+void LogicComponent::SetUpdateEventMask(FlagSet<UpdateEvent> mask)
 {
     if (updateEventMask_ != mask)
     {

+ 6 - 6
Source/Urho3D/Scene/LogicComponent.h

@@ -28,7 +28,7 @@
 namespace Urho3D
 {
 
-enum UseEvent : unsigned
+enum UpdateEvent : unsigned
 {
     /// Bitmask for not using any events.
     USE_NONE = 0x0,
@@ -41,7 +41,7 @@ enum UseEvent : unsigned
     /// Bitmask for using the physics post-update event.
     USE_FIXEDPOSTUPDATE = 0x8,
 };
-URHO3D_FLAGSET(UseEvent, UseEventFlags);
+URHO3D_FLAGSET(UpdateEvent, UpdateEventFlags);
 
 /// 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
@@ -75,10 +75,10 @@ class URHO3D_API LogicComponent : public Component
     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(FlagSet<UseEvent> mask);
+    void SetUpdateEventMask(FlagSet<UpdateEvent> mask);
 
     /// Return what update events are subscribed to.
-    FlagSet<UseEvent> GetUpdateEventMask() const { return updateEventMask_; }
+    FlagSet<UpdateEvent> GetUpdateEventMask() const { return updateEventMask_; }
 
     /// Return whether the DelayedStart() function has been called.
     bool IsDelayedStartCalled() const { return delayedStartCalled_; }
@@ -103,9 +103,9 @@ private:
     void HandlePhysicsPostStep(StringHash eventType, VariantMap& eventData);
 #endif
     /// Requested event subscription mask.
-    FlagSet<UseEvent> updateEventMask_;
+    FlagSet<UpdateEvent> updateEventMask_;
     /// Current event subscription mask.
-    FlagSet<UseEvent> currentEventMask_;
+    FlagSet<UpdateEvent> currentEventMask_;
     /// Flag for delayed start.
     bool delayedStartCalled_;
 };

+ 3 - 3
Source/Urho3D/UI/UI.cpp

@@ -67,7 +67,7 @@
 
 #include "../DebugNew.h"
 
-#define TOUCHID_MASK(id) MouseButtonFlags(1u << (unsigned)(id))
+#define TOUCHID_MASK(id) MouseButton(1u << (unsigned)(id))
 
 namespace Urho3D
 {
@@ -1699,7 +1699,7 @@ void UI::HandleMouseButtonDown(StringHash eventType, VariantMap& eventData)
     auto* input = GetSubsystem<Input>();
 
     if (!input->IsMouseGrabbed())
-        ProcessClickBegin(cursorPos, MouseButtonFlags(eventData[P_BUTTON].GetUInt()), mouseButtons_, qualifiers_, cursor_, cursorVisible);
+        ProcessClickBegin(cursorPos, MouseButton(eventData[P_BUTTON].GetUInt()), mouseButtons_, qualifiers_, cursor_, cursorVisible);
 }
 
 void UI::HandleMouseButtonUp(StringHash eventType, VariantMap& eventData)
@@ -1848,7 +1848,7 @@ void UI::HandleTouchEnd(StringHash eventType, VariantMap& eventData)
     for (auto i = touchDragElements_.Begin(); i != touchDragElements_.End();)
     {
         auto touches = i->second_;
-        if (touchId & touches)
+        if (touches.Test(touchId))
             i = touchDragElements_.Erase(i);
         else
             ++i;