2
0
Эх сурвалжийг харах

CollisionChain2D: unsigned to signed

1vanK 3 жил өмнө
parent
commit
a5237b88e7

+ 30 - 15
Source/Urho3D/AngelScript/Generated_Members.h

@@ -23931,6 +23931,13 @@ template <class T> CScriptArray* CollisionChain2D_constspVectorlesVector2greamp_
     return VectorToArray(result, "Array<Vector2>");
 }
 
+// Vector<u8> CollisionChain2D::GetVerticesAttr() const
+template <class T> CScriptArray* CollisionChain2D_Vectorlesu8gre_GetVerticesAttr_void_template(T* _ptr)
+{
+    Vector<u8> result = _ptr->GetVerticesAttr();
+    return VectorToArray(result, "Array<uint8>");
+}
+
 // void CollisionChain2D::SetVertices(const Vector<Vector2>& vertices)
 template <class T> void CollisionChain2D_void_SetVertices_constspVectorlesVector2greamp_template(T* _ptr, CScriptArray* vertices_conv)
 {
@@ -23938,44 +23945,52 @@ template <class T> void CollisionChain2D_void_SetVertices_constspVectorlesVector
     _ptr->SetVertices(vertices);
 }
 
+// void CollisionChain2D::SetVerticesAttr(const Vector<u8>& value)
+template <class T> void CollisionChain2D_void_SetVerticesAttr_constspVectorlesu8greamp_template(T* _ptr, CScriptArray* value_conv)
+{
+    Vector<u8> value = ArrayToVector<u8>(value_conv);
+    _ptr->SetVerticesAttr(value);
+}
+
 // class CollisionChain2D | File: ../Physics2D/CollisionChain2D.h
 template <class T> void RegisterMembers_CollisionChain2D(asIScriptEngine* engine, const char* className)
 {
     RegisterMembers_CollisionShape2D<T>(engine, className);
 
-    // Vector<unsigned char> CollisionChain2D::GetVerticesAttr() const
-    // Error: type "Vector<unsigned char>" can not automatically bind
-    // void CollisionChain2D::SetVerticesAttr(const Vector<unsigned char>& value)
-    // Error: type "const Vector<unsigned char>&" can not automatically bind
-
     // bool CollisionChain2D::GetLoop() const
     engine->RegisterObjectMethod(className, "bool GetLoop() const", AS_METHODPR(T, GetLoop, () const, bool), AS_CALL_THISCALL);
     engine->RegisterObjectMethod(className, "bool get_loop() const", AS_METHODPR(T, GetLoop, () const, bool), AS_CALL_THISCALL);
 
-    // const Vector2& CollisionChain2D::GetVertex(unsigned index) const
-    engine->RegisterObjectMethod(className, "const Vector2& GetVertex(uint) const", AS_METHODPR(T, GetVertex, (unsigned) const, const Vector2&), AS_CALL_THISCALL);
+    // const Vector2& CollisionChain2D::GetVertex(i32 index) const
+    engine->RegisterObjectMethod(className, "const Vector2& GetVertex(int) const", AS_METHODPR(T, GetVertex, (i32) const, const Vector2&), AS_CALL_THISCALL);
 
-    // unsigned CollisionChain2D::GetVertexCount() const
-    engine->RegisterObjectMethod(className, "uint GetVertexCount() const", AS_METHODPR(T, GetVertexCount, () const, unsigned), AS_CALL_THISCALL);
-    engine->RegisterObjectMethod(className, "uint get_vertexCount() const", AS_METHODPR(T, GetVertexCount, () const, unsigned), AS_CALL_THISCALL);
+    // i32 CollisionChain2D::GetVertexCount() const
+    engine->RegisterObjectMethod(className, "int GetVertexCount() const", AS_METHODPR(T, GetVertexCount, () const, i32), AS_CALL_THISCALL);
+    engine->RegisterObjectMethod(className, "int get_vertexCount() const", AS_METHODPR(T, GetVertexCount, () const, i32), AS_CALL_THISCALL);
 
     // const Vector<Vector2>& CollisionChain2D::GetVertices() const
     engine->RegisterObjectMethod(className, "Array<Vector2>@ GetVertices() const", AS_FUNCTION_OBJFIRST(CollisionChain2D_constspVectorlesVector2greamp_GetVertices_void_template<CollisionChain2D>), AS_CALL_CDECL_OBJFIRST);
 
+    // Vector<u8> CollisionChain2D::GetVerticesAttr() const
+    engine->RegisterObjectMethod(className, "Array<uint8>@ GetVerticesAttr() const", AS_FUNCTION_OBJFIRST(CollisionChain2D_Vectorlesu8gre_GetVerticesAttr_void_template<CollisionChain2D>), AS_CALL_CDECL_OBJFIRST);
+
     // void CollisionChain2D::SetLoop(bool loop)
     engine->RegisterObjectMethod(className, "void SetLoop(bool)", AS_METHODPR(T, SetLoop, (bool), void), AS_CALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_loop(bool)", AS_METHODPR(T, SetLoop, (bool), void), AS_CALL_THISCALL);
 
-    // void CollisionChain2D::SetVertex(unsigned index, const Vector2& vertex)
-    engine->RegisterObjectMethod(className, "void SetVertex(uint, const Vector2&in)", AS_METHODPR(T, SetVertex, (unsigned, const Vector2&), void), AS_CALL_THISCALL);
+    // void CollisionChain2D::SetVertex(i32 index, const Vector2& vertex)
+    engine->RegisterObjectMethod(className, "void SetVertex(int, const Vector2&in)", AS_METHODPR(T, SetVertex, (i32, const Vector2&), void), AS_CALL_THISCALL);
 
-    // void CollisionChain2D::SetVertexCount(unsigned count)
-    engine->RegisterObjectMethod(className, "void SetVertexCount(uint)", AS_METHODPR(T, SetVertexCount, (unsigned), void), AS_CALL_THISCALL);
-    engine->RegisterObjectMethod(className, "void set_vertexCount(uint)", AS_METHODPR(T, SetVertexCount, (unsigned), void), AS_CALL_THISCALL);
+    // void CollisionChain2D::SetVertexCount(i32 count)
+    engine->RegisterObjectMethod(className, "void SetVertexCount(int)", AS_METHODPR(T, SetVertexCount, (i32), void), AS_CALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void set_vertexCount(int)", AS_METHODPR(T, SetVertexCount, (i32), void), AS_CALL_THISCALL);
 
     // void CollisionChain2D::SetVertices(const Vector<Vector2>& vertices)
     engine->RegisterObjectMethod(className, "void SetVertices(Array<Vector2>@+)", AS_FUNCTION_OBJFIRST(CollisionChain2D_void_SetVertices_constspVectorlesVector2greamp_template<CollisionChain2D>), AS_CALL_CDECL_OBJFIRST);
 
+    // void CollisionChain2D::SetVerticesAttr(const Vector<u8>& value)
+    engine->RegisterObjectMethod(className, "void SetVerticesAttr(Array<uint8>@+)", AS_FUNCTION_OBJFIRST(CollisionChain2D_void_SetVerticesAttr_constspVectorlesu8greamp_template<CollisionChain2D>), AS_CALL_CDECL_OBJFIRST);
+
     #ifdef REGISTER_MEMBERS_MANUAL_PART_CollisionChain2D
         REGISTER_MEMBERS_MANUAL_PART_CollisionChain2D();
     #endif

+ 12 - 9
Source/Urho3D/Physics2D/CollisionChain2D.cpp

@@ -32,7 +32,7 @@ void CollisionChain2D::RegisterObject(Context* context)
     URHO3D_ACCESSOR_ATTRIBUTE("Is Enabled", IsEnabled, SetEnabled, bool, true, AM_DEFAULT);
     URHO3D_ACCESSOR_ATTRIBUTE("Loop", GetLoop, SetLoop, bool, false, AM_DEFAULT);
     URHO3D_COPY_BASE_ATTRIBUTES(CollisionShape2D);
-    URHO3D_MIXED_ACCESSOR_ATTRIBUTE("Vertices", GetVerticesAttr, SetVerticesAttr, Vector<unsigned char>, Variant::emptyBuffer, AM_FILE);
+    URHO3D_MIXED_ACCESSOR_ATTRIBUTE("Vertices", GetVerticesAttr, SetVerticesAttr, Vector<u8>, Variant::emptyBuffer, AM_FILE);
 }
 
 void CollisionChain2D::SetLoop(bool loop)
@@ -46,13 +46,16 @@ void CollisionChain2D::SetLoop(bool loop)
     RecreateFixture();
 }
 
-void CollisionChain2D::SetVertexCount(unsigned count)
+void CollisionChain2D::SetVertexCount(i32 count)
 {
+    assert(count >= 0);
     vertices_.Resize(count);
 }
 
-void CollisionChain2D::SetVertex(unsigned index, const Vector2& vertex)
+void CollisionChain2D::SetVertex(i32 index, const Vector2& vertex)
 {
+    assert(index >= 0);
+
     if (index >= vertices_.Size())
         return;
 
@@ -73,7 +76,7 @@ void CollisionChain2D::SetVertices(const Vector<Vector2>& vertices)
     RecreateFixture();
 }
 
-void CollisionChain2D::SetVerticesAttr(const Vector<unsigned char>& value)
+void CollisionChain2D::SetVerticesAttr(const Vector<u8>& value)
 {
     if (value.Empty())
         return;
@@ -87,12 +90,12 @@ void CollisionChain2D::SetVerticesAttr(const Vector<unsigned char>& value)
     SetVertices(vertices);
 }
 
-Vector<unsigned char> CollisionChain2D::GetVerticesAttr() const
+Vector<u8> CollisionChain2D::GetVerticesAttr() const
 {
     VectorBuffer ret;
 
-    for (unsigned i = 0; i < vertices_.Size(); ++i)
-        ret.WriteVector2(vertices_[i]);
+    for (const Vector2& vertex : vertices_)
+        ret.WriteVector2(vertex);
 
     return ret.GetBuffer();
 }
@@ -107,11 +110,11 @@ void CollisionChain2D::RecreateFixture()
     ReleaseFixture();
 
     Vector<b2Vec2> b2Vertices;
-    unsigned count = vertices_.Size();
+    i32 count = vertices_.Size();
     b2Vertices.Resize(count);
 
     Vector2 worldScale(cachedWorldScale_.x_, cachedWorldScale_.y_);
-    for (unsigned i = 0; i < count; ++i)
+    for (i32 i = 0; i < count; ++i)
         b2Vertices[i] = ToB2Vec2(vertices_[i] * worldScale);
 
     chainShape_.Clear();

+ 10 - 6
Source/Urho3D/Physics2D/CollisionChain2D.h

@@ -33,17 +33,21 @@ public:
 
     /// Set vertex count.
     /// @property
-    void SetVertexCount(unsigned count);
+    void SetVertexCount(i32 count);
 
     /// Return vertex count.
     /// @property
-    unsigned GetVertexCount() const { return vertices_.Size(); }
+    i32 GetVertexCount() const { return vertices_.Size(); }
 
     /// Set vertex.
-    void SetVertex(unsigned index, const Vector2& vertex);
+    void SetVertex(i32 index, const Vector2& vertex);
 
     /// Return vertex.
-    const Vector2& GetVertex(unsigned index) const { return (index < vertices_.Size()) ? vertices_[index] : Vector2::ZERO; }
+    const Vector2& GetVertex(i32 index) const
+    {
+        assert(index >= 0);
+        return (index < vertices_.Size()) ? vertices_[index] : Vector2::ZERO;
+    }
 
     /// Set vertices. For non loop first and last must be ghost.
     void SetVertices(const Vector<Vector2>& vertices);
@@ -52,10 +56,10 @@ public:
     const Vector<Vector2>& GetVertices() const { return vertices_; }
 
     /// Set vertices attribute. For non loop first and last must be ghost.
-    void SetVerticesAttr(const Vector<unsigned char>& value);
+    void SetVerticesAttr(const Vector<u8>& value);
 
     /// Return vertices attribute.
-    Vector<unsigned char> GetVerticesAttr() const;
+    Vector<u8> GetVerticesAttr() const;
 
 private:
     /// Apply node world scale.