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

Add Node, Scene etc support in VariantMap.
Fixed SendRemoteEvent function in Connection.
Add DrawDebugGeometry function in Renderer.
Add HasComponent function in Node.

Aster Jian 12 жил өмнө
parent
commit
a924f29076

+ 151 - 64
Extras/LuaScript/pkgs/Core/Variant.pkg

@@ -231,21 +231,6 @@ class VariantMap
 public:
 public:
     VariantMap();
     VariantMap();
 
 
-    tolua_outside int VariantMapGetInt @ GetInt(const char* key);
-    tolua_outside bool VariantMapGetBool @ GetBool(const char* key);
-    tolua_outside float VariantMapGetFloat @ GetFloat(const char* key);
-    tolua_outside const Vector2& VariantMapGetVector2 @ GetVector2(const char* key);
-    tolua_outside const Vector3& VariantMapGetVector3 @ GetVector3(const char* key);
-    tolua_outside const Vector4& VariantMapGetVector4 @ GetVector4(const char* key);
-    tolua_outside const Quaternion& VariantMapGetQuaternion @ GetQuaternion(const char* key);
-    tolua_outside const Color& VariantMapGetColor @ GetColor(const char* key);
-    tolua_outside const String& VariantMapGetString @ GetString(const char* key);
-    tolua_outside const void* VariantMapGetPtr @ GetPtr(const char* key);
-    tolua_outside const ResourceRef& VariantMapGetResourceRef @ GetResourceRef(const char* key);
-    tolua_outside const ResourceRefList& VariantMapGetResourceRefList @ GetResourceRefList(const char* key);
-    tolua_outside const IntRect& VariantMapGetIntRect @ GetIntRect(const char* key);
-    tolua_outside const IntVector2& VariantMapGetIntVector2 @ GetIntVector2(const char* key);
-
     tolua_outside void VariantMapSetInt @ SetInt(const char* key, int value);
     tolua_outside void VariantMapSetInt @ SetInt(const char* key, int value);
     tolua_outside void VariantMapSetBool @ SetBool(const char* key, bool value);
     tolua_outside void VariantMapSetBool @ SetBool(const char* key, bool value);
     tolua_outside void VariantMapSetFloat @ SetFloat(const char* key, float value);
     tolua_outside void VariantMapSetFloat @ SetFloat(const char* key, float value);
@@ -260,10 +245,147 @@ public:
     tolua_outside void VariantMapSetResourceRefList @ SetResourceRefList(const char* key, const ResourceRefList& value); 
     tolua_outside void VariantMapSetResourceRefList @ SetResourceRefList(const char* key, const ResourceRefList& value); 
     tolua_outside void VariantMapSetIntRect @ SetIntRect(const char* key, const IntRect& value);
     tolua_outside void VariantMapSetIntRect @ SetIntRect(const char* key, const IntRect& value);
     tolua_outside void VariantMapSetIntVector2 @ SetIntVector2(const char* key, const IntVector2& value);
     tolua_outside void VariantMapSetIntVector2 @ SetIntVector2(const char* key, const IntVector2& value);
+    
+    tolua_outside void VariantMapSetCamera @ SetCamera(const char* key, Camera* camera);
+    tolua_outside void VariantMapSetConnection @ SetConnection(const char* key, Connection* connection);
+    tolua_outside void VariantMapSetNode @ SetNode(const char* key, Node* node);
+    tolua_outside void VariantMapSetPhysicsWorld @ SetPhysicsWorld(const char* key, PhysicsWorld* physicsworld);
+    tolua_outside void VariantMapSetRigidBody @ SetRigidBody(const char* key, RigidBody* rigidbody);
+    tolua_outside void VariantMapSetScene @ SetScene(const char* key, Scene* scene);
+    tolua_outside void VariantMapSetUIElement @ SetUIElement(const char* key, UIElement* element);
+    
+    tolua_outside int VariantMapGetInt @ GetInt(const char* key);
+    tolua_outside bool VariantMapGetBool @ GetBool(const char* key);
+    tolua_outside float VariantMapGetFloat @ GetFloat(const char* key);
+    tolua_outside const Vector2& VariantMapGetVector2 @ GetVector2(const char* key);
+    tolua_outside const Vector3& VariantMapGetVector3 @ GetVector3(const char* key);
+    tolua_outside const Vector4& VariantMapGetVector4 @ GetVector4(const char* key);
+    tolua_outside const Quaternion& VariantMapGetQuaternion @ GetQuaternion(const char* key);
+    tolua_outside const Color& VariantMapGetColor @ GetColor(const char* key);
+    tolua_outside const String& VariantMapGetString @ GetString(const char* key);
+    tolua_outside const void* VariantMapGetPtr @ GetPtr(const char* key);
+    tolua_outside const ResourceRef& VariantMapGetResourceRef @ GetResourceRef(const char* key);
+    tolua_outside const ResourceRefList& VariantMapGetResourceRefList @ GetResourceRefList(const char* key);
+    tolua_outside const IntRect& VariantMapGetIntRect @ GetIntRect(const char* key);
+    tolua_outside const IntVector2& VariantMapGetIntVector2 @ GetIntVector2(const char* key);
+    
+    tolua_outside Camera* VariantMapGetCamera @ GetCamera(const char* key);
+    tolua_outside Connection* VariantMapGetConnection @ GetConnection(const char* key);
+    tolua_outside Node* VariantMapGetNode @ GetNode(const char* key);
+    tolua_outside PhysicsWorld* VariantMapGetPhysicsWorld @ GetPhysicsWorld(const char* key);
+    tolua_outside RigidBody* VariantMapGetRigidBody @ GetRigidBody(const char* key);
+    tolua_outside Scene* VariantMapGetScene @ GetScene(const char* key);
+    tolua_outside UIElement* VariantMapGetUIElement @ GetUIElement(const char* key);
 };
 };
 
 
 ${
 ${
 
 
+void VariantMapSetInt(VariantMap* vmap, const char* key, int value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetBool(VariantMap* vmap, const char* key, bool value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetFloat(VariantMap* vmap, const char* key, float value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetVector2(VariantMap* vmap, const char* key, const Vector2& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetVector3(VariantMap* vmap, const char* key, const Vector3& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetVector4(VariantMap* vmap, const char* key, const Vector4& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetQuaternion(VariantMap* vmap, const char* key, const Quaternion& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetColor(VariantMap* vmap, const char* key, const Color& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetString(VariantMap* vmap, const char* key, const String& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetPtr(VariantMap* vmap, const char* key, void* value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetResourceRef(VariantMap* vmap, const char* key, const ResourceRef& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetResourceRefList(VariantMap* vmap, const char* key, const ResourceRefList& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetIntRect(VariantMap* vmap, const char* key, const IntRect& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+void VariantMapSetIntVector2(VariantMap* vmap, const char* key, const IntVector2& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+
+void VariantMapSetCamera(VariantMap* vmap, const char* key, Camera* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
+void VariantMapSetConnection(VariantMap* vmap, const char* key, Connection* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
+void VariantMapSetNode(VariantMap* vmap, const char* key, Node* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
+void VariantMapSetPhysicsWorld(VariantMap* vmap, const char* key, PhysicsWorld* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
+void VariantMapSetRigidBody(VariantMap* vmap, const char* key, RigidBody* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
+void VariantMapSetScene(VariantMap* vmap, const char* key, Scene* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
+void VariantMapSetUIElement(VariantMap* vmap, const char* key, UIElement* pointer)
+{
+	(*vmap)[ShortStringHash(key)] = (void*)pointer;
+}
+
 const Variant& FindVariant(const VariantMap* vmap, const char* key)
 const Variant& FindVariant(const VariantMap* vmap, const char* key)
 {
 {
     VariantMap::ConstIterator i = vmap->Find(ShortStringHash(key));
     VariantMap::ConstIterator i = vmap->Find(ShortStringHash(key));
@@ -340,74 +462,39 @@ const IntVector2& VariantMapGetIntVector2(const VariantMap* vmap, const char* ke
     return FindVariant(vmap, key).GetIntVector2();
     return FindVariant(vmap, key).GetIntVector2();
 }
 }
 
 
-void VariantMapSetInt(VariantMap* vmap, const char* key, int value)
+Camera* VariantMapGetCamera(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
+	return (Camera*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
-void VariantMapSetBool(VariantMap* vmap, const char* key, bool value)
+Connection* VariantMapGetConnection(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
+	return (Connection*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
-void VariantMapSetFloat(VariantMap* vmap, const char* key, float value)
+Node* VariantMapGetNode(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
+	return (Node*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
-void VariantMapSetVector2(VariantMap* vmap, const char* key, const Vector2& value)
+PhysicsWorld* VariantMapGetPhysicsWorld(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetVector3(VariantMap* vmap, const char* key, const Vector3& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetVector4(VariantMap* vmap, const char* key, const Vector4& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetQuaternion(VariantMap* vmap, const char* key, const Quaternion& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetColor(VariantMap* vmap, const char* key, const Color& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
+	return (PhysicsWorld*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
-void VariantMapSetString(VariantMap* vmap, const char* key, const String& value)
+RigidBody* VariantMapGetRigidBody(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
+	return (RigidBody*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
-void VariantMapSetPtr(VariantMap* vmap, const char* key, void* value)
+Scene* VariantMapGetScene(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
+	return (Scene*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
-void VariantMapSetResourceRef(VariantMap* vmap, const char* key, const ResourceRef& value)
+UIElement* VariantMapGetUIElement(const VariantMap* vmap, const char* key)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetResourceRefList(VariantMap* vmap, const char* key, const ResourceRefList& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetIntRect(VariantMap* vmap, const char* key, const IntRect& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
-}
-
-void VariantMapSetIntVector2(VariantMap* vmap, const char* key, const IntVector2& value)
-{
-    (*vmap)[ShortStringHash(key)] = value;
+	return (UIElement*)FindVariant(vmap, key).GetPtr();
 }
 }
 
 
 $}
 $}

+ 3 - 0
Extras/LuaScript/pkgs/Graphics/Renderer.pkg

@@ -133,4 +133,7 @@ public:
     ShaderVariation* GetStencilPS() const { return stencilPS_; }
     ShaderVariation* GetStencilPS() const { return stencilPS_; }
     /// Return the frame update parameters.
     /// Return the frame update parameters.
     const FrameInfo& GetFrameInfo() { return frame_; }
     const FrameInfo& GetFrameInfo() { return frame_; }
+    
+    /// Add debug geometry to the debug renderer.
+    void DrawDebugGeometry(bool depthTest);
 };
 };

+ 18 - 1
Extras/LuaScript/pkgs/Network/Connection.pkg

@@ -22,9 +22,12 @@ public:
     /// Send a message.
     /// Send a message.
     void SendMessage(int msgID, bool reliable, bool inOrder, const unsigned char* data, unsigned numBytes, unsigned contentID = 0);
     void SendMessage(int msgID, bool reliable, bool inOrder, const unsigned char* data, unsigned numBytes, unsigned contentID = 0);
     /// Send a remote event.
     /// Send a remote event.
-    void SendRemoteEvent(StringHash eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
+    // void SendRemoteEvent(StringHash eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
+    tolua_outside void ConnectionSendRemoteEvent @ SendRemoteEvent(const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
+    
     /// Send a remote event with the specified node as sender.
     /// Send a remote event with the specified node as sender.
     void SendRemoteEvent(Node* node, StringHash eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
     void SendRemoteEvent(Node* node, StringHash eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
+    tolua_outside void ConnectSendRemoteEvent @ SendRemoteEvent(Node* node, const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
     /// Assign scene. On the server, this will cause the client to load it.
     /// Assign scene. On the server, this will cause the client to load it.
     void SetScene(Scene* newScene);
     void SetScene(Scene* newScene);
     /// Assign identity. Called by Network.
     /// Assign identity. Called by Network.
@@ -83,3 +86,17 @@ public:
     /// Return progress of current package download, or 1.0 if no downloads.
     /// Return progress of current package download, or 1.0 if no downloads.
     float GetDownloadProgress() const;
     float GetDownloadProgress() const;
 };
 };
+
+${
+
+static void ConnectionSendRemoteEvent(Connection* connection, const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap)
+{
+	connection->SendRemoteEvent(StringHash(eventType), inOrder, eventData);
+}
+
+static void ConnectSendRemoteEvent(Connection* connection, Node* node, const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap)
+{
+	connection->SendRemoteEvent(node, StringHash(eventType), inOrder, eventData);
+}
+
+$}

+ 17 - 1
Extras/LuaScript/pkgs/Scene/Node.pkg

@@ -114,7 +114,8 @@ public:
     /// Remove a component from this node.
     /// Remove a component from this node.
     void RemoveComponent(Component* component);
     void RemoveComponent(Component* component);
     /// Remove the first component of specific type from this node.
     /// Remove the first component of specific type from this node.
-    void RemoveComponent(ShortStringHash type);
+    // void RemoveComponent(ShortStringHash type);
+    tolua_outside void NodeRemoveComponent @ RemoveComponent(const char* type);
     /// Remove all components from this node.
     /// Remove all components from this node.
     void RemoveAllComponents();
     void RemoveAllComponents();
     /// Clone scene node, components and child nodes. Return the clone.
     /// Clone scene node, components and child nodes. Return the clone.
@@ -278,6 +279,7 @@ public:
     // Component* GetComponent(ShortStringHash type) const;
     // Component* GetComponent(ShortStringHash type) const;
     /// Return whether has a specific component.
     /// Return whether has a specific component.
     // bool HasComponent(ShortStringHash type) const;
     // bool HasComponent(ShortStringHash type) const;
+    tolua_outside bool NodeHasComponent @ HasComponent(const char* type) const;
     
     
     /// Template version of returning a component by type.
     /// Template version of returning a component by type.
     // template <class T> T* GetComponent() const;
     // template <class T> T* GetComponent() const;
@@ -304,3 +306,17 @@ public:
     Terrain* GetComponent<Terrain> @ GetTerrain() const;
     Terrain* GetComponent<Terrain> @ GetTerrain() const;
     Zone* GetComponent<Zone> @ GetZone() const;
     Zone* GetComponent<Zone> @ GetZone() const;
 };
 };
+
+${
+
+void NodeRemoveComponent(Node* node, const char* type)
+{
+	return node->RemoveComponent(ShortStringHash(type));
+}
+
+bool NodeHasComponent(const Node* node, const char* type)
+{
+	return node->HasComponent(ShortStringHash(type));
+}
+
+$}