Procházet zdrojové kódy

Added same_c_class() function in Lua to check if cpp classes extended in Lua are the same

Ivan Safrin před 13 roky
rodič
revize
61a8e43144

+ 0 - 5
Bindings/Contents/LUA/API/class.lua

@@ -1,7 +1,3 @@
-function __areclassesequal(a,b)
-	return a.__ptr == b.__ptr
-end
-
 function __is_kind_of(c,T)
 	local __baseclass = getmetatable(c)
 	while __baseclass do
@@ -35,7 +31,6 @@ function class(name)
 		end
 	end
 
-	cls.__eq = __areclassesequal
 	cls.isKindOfClass = __is_kind_of
 	cls.isClass = __is_class
 

+ 4 - 0
Bindings/Contents/LUA/API/defaults.lua

@@ -6,6 +6,10 @@ _G["count"] = function(T)
 	return _count
 end
 
+_G["same_c_class"] = function(a,b)
+	return __are_same_c_class(a.__ptr,b.__ptr)
+end
+
 _G["cast"] = function (c, T)
 	local ret = T("__skip_ptr__")
 	ret.__ptr = c.__ptr

+ 1 - 2
Core/Contents/Include/PolyEntity.h

@@ -551,8 +551,7 @@ namespace Polycode {
 			bool depthTest;
 			
 			/**
-			* @param newBlendingMode New blending mode to set. Possible values are Renderer::BLEND_MODE_NORMAL, Renderer::BLEND_MODE_LIGHTEN, Renderer::BLEND_MODE_COLOR, Renderer::BLEND_MODE_PREMULTIPLIED, Renderer::BLEND_MODE_MULTIPLY. See the Renderer class for details on individual blending modes.
-			* @see Renderer
+			* Entity blending mode. Possible values are Renderer::BLEND_MODE_NORMAL, Renderer::BLEND_MODE_LIGHTEN, Renderer::BLEND_MODE_COLOR, Renderer::BLEND_MODE_PREMULTIPLIED, Renderer::BLEND_MODE_MULTIPLY. See the Renderer class for details on individual blending modes.
 			*/
 			int blendingMode;	
 			

+ 17 - 1
Player/Contents/Source/PolycodePlayer.cpp

@@ -234,6 +234,20 @@ static void dumpstack (lua_State *L) {
 		return 0;
 	}
 	
+	static int areSameCClass(lua_State *L) {
+		luaL_checktype(L, 1, LUA_TUSERDATA);
+		PolyBase *classOne = *((PolyBase**)lua_touserdata(L, 1));
+		luaL_checktype(L, 2, LUA_TUSERDATA);
+		PolyBase *classTwo = *((PolyBase**)lua_touserdata(L, 2));
+		
+		if(classOne == classTwo) {
+			lua_pushboolean(L, true);
+		} else {
+			lua_pushboolean(L, false);		
+		}		
+		return 1;
+	}
+	
 	static int debugPrint(lua_State *L)
 	{
 		const char *msg = lua_tostring(L, 1);
@@ -331,8 +345,10 @@ static void dumpstack (lua_State *L) {
 		// Table is still on the stack.  Get rid of it now.
 		lua_pop(L, 1);		
 		
-		lua_register(L, "debugPrint", debugPrint);	
+		lua_register(L, "debugPrint", debugPrint);
 		lua_register(L, "__customError", customError);					
+
+		lua_register(L, "__are_same_c_class", areSameCClass);
 		
 		lua_getfield(L, LUA_GLOBALSINDEX, "require");
 		lua_pushstring(L, "class");