Browse Source

Also recalculate bounding box when Scene's 2D unit size change.

Yao Wei Tjong 姚伟忠 11 years ago
parent
commit
c21924703c

+ 4 - 3
Source/Engine/Urho2D/Drawable2D.cpp

@@ -144,7 +144,6 @@ void Drawable2D::SetSprite(Sprite2D* sprite)
     sprite_ = sprite;
     MarkDirty();
     UpdateMaterial();
-    OnMarkedDirty(node_);
     MarkNetworkUpdate();
 }
 
@@ -181,7 +180,6 @@ void Drawable2D::SetZValue(float zValue)
 
     zValue_ = zValue;
     MarkDirty();
-    OnMarkedDirty(node_);
     MarkNetworkUpdate();
 }
 
@@ -190,10 +188,13 @@ Material* Drawable2D::GetMaterial() const
     return material_;
 }
 
-void Drawable2D::MarkDirty()
+void Drawable2D::MarkDirty(bool markWorldBoundingBoxDirty)
 {
     verticesDirty_ = true;
     geometryDirty_ = true;
+
+    if (markWorldBoundingBoxDirty)
+        OnMarkedDirty(node_);
 }
 
 void Drawable2D::SetSpriteAttr(ResourceRef value)

+ 1 - 1
Source/Engine/Urho2D/Drawable2D.h

@@ -73,7 +73,7 @@ public:
     /// Return all vertices.
     const Vector<Vertex2D>& GetVertices() const { return vertices_; }
     /// Mark vertices and geometry dirty.
-    void MarkDirty();
+    void MarkDirty(bool markWorldBoundingBoxDirty = true);
 
     /// Set sprite attribute.
     void SetSpriteAttr(ResourceRef value);

+ 3 - 3
Source/Engine/Urho2D/StaticSprite2D.cpp

@@ -63,8 +63,8 @@ void StaticSprite2D::SetFlip(bool flipX, bool flipY)
 
     flipX_ = flipX;
     flipY_ = flipY;
-    // Assume flipping does not invalidate bounding rectangle
-    MarkDirty();
+    // Assume flipping does not invalidate bounding box
+    MarkDirty(false);
     MarkNetworkUpdate();
 }
 
@@ -84,7 +84,7 @@ void StaticSprite2D::SetColor(const Color& color)
         return;
 
     color_ = color;
-    MarkDirty();
+    MarkDirty(false);
     MarkNetworkUpdate();
 }