소스 검색

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 년 전
부모
커밋
a924f29076

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

@@ -231,21 +231,6 @@ class VariantMap
 public:
     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 VariantMapSetBool @ SetBool(const char* key, bool 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 VariantMapSetIntRect @ SetIntRect(const char* key, const IntRect& 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)
 {
     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();
 }
 
-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_; }
     /// Return the frame update parameters.
     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.
     void SendMessage(int msgID, bool reliable, bool inOrder, const unsigned char* data, unsigned numBytes, unsigned contentID = 0);
     /// 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.
     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.
     void SetScene(Scene* newScene);
     /// Assign identity. Called by Network.
@@ -83,3 +86,17 @@ public:
     /// Return progress of current package download, or 1.0 if no downloads.
     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.
     void RemoveComponent(Component* component);
     /// 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.
     void RemoveAllComponents();
     /// Clone scene node, components and child nodes. Return the clone.
@@ -278,6 +279,7 @@ public:
     // Component* GetComponent(ShortStringHash type) const;
     /// Return whether has a specific component.
     // bool HasComponent(ShortStringHash type) const;
+    tolua_outside bool NodeHasComponent @ HasComponent(const char* type) const;
     
     /// Template version of returning a component by type.
     // template <class T> T* GetComponent() const;
@@ -304,3 +306,17 @@ public:
     Terrain* GetComponent<Terrain> @ GetTerrain() 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));
+}
+
+$}