Ejemplo n.º 1
0
//
// LUA_DestroyScene(scene (object))
//
static int LUA_DestroyScene(lua_State *lua)
{
	int count = lua_gettop(lua);
	if (lua_gettop(lua) < 1)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.destroy() not enough parameters, expected scene (object)");
		lua_pushboolean(lua, false);
		return 1;
	}

	// Get the main game object
	CzApp* game = (CzApp*)CZ_GLOBAL_RESOURCES->getResourceManager()->getParent();

	// Get the object
	IzXomlResource* object = NULL;
	if (lua_isuserdata(lua, 1))
		object = (IzXomlResource*)lua_touserdata(lua, 1);
	if (object == NULL || object->getClassTypeHash() != CzHashes::Scene_Hash)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.destroy() Invalid object, expected a scene object in Param0");
		lua_pushboolean(lua, false);
		return 1;
	}

	game->removeScene((CzScene*)object);

	lua_pushboolean(lua, true);
	return 1;
}
Ejemplo n.º 2
0
//
// LUA_AddPropertyScene scene (object), property (string), value (string)
//
static int LUA_AddPropertyScene(lua_State *lua)
{
	if (lua_gettop(lua) < 3)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.add() not enough parameters, expected scene (object), property (string), value (string, number, boolean or vec)");
		lua_pushboolean(lua, false);
		return 1;
	}

	// Get the target object
	IzXomlResource* object = NULL;
	if (lua_isuserdata(lua, 1))
		object = (IzXomlResource*)lua_touserdata(lua, 1);
	if (object == NULL || object->getClassTypeHash() != CzHashes::Scene_Hash)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.add() Invalid target object for Param0");
		lua_pushboolean(lua, false);
		return 1;
	}

	CzString prop_name, value;
	if (lua_isstring(lua, 2))
		prop_name = lua_tostring(lua, 2);
	else
	{
		CzScriptEngineLua::DisplayError(lua, "scene.add() property must be a property name (Param1) - object - ", object->getName().c_str());
		lua_pushboolean(lua, false);
		return 1;
	}

	CzXomlProperty prop;
	if (!LUA_ValueToProperty(lua, 3, prop))
	{
		CzScriptEngineLua::DisplayError(lua, "scene.add() value must be a string, number, boolean or vec - object - ", object->getName().c_str());
		CzDebug::Log(CZ_DEBUG_CHANNEL_INFO, "- property - ", prop_name.c_str());
		lua_pushboolean(lua, false);
		return 1;
	}

	lua_pushboolean(lua, ((CzScene*)object)->setProperty(prop_name.getHash(), prop, true));
 
	return 1;
}
Ejemplo n.º 3
0
//
// LUA_GetPropertyScene scene (object), property (string)
//
static int LUA_GetPropertyScene(lua_State *lua)
{
	if (lua_gettop(lua) < 2)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.get() not enough parameters, expected scene (object), property (string)");
		lua_pushnil(lua);
		return 1;
	}

	// Get the target object
	IzXomlResource* object = NULL;
	if (lua_isuserdata(lua, 1))
		object = (IzXomlResource*)lua_touserdata(lua, 1);
	if (object == NULL || object->getClassTypeHash() != CzHashes::Scene_Hash)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.get() Invalid target object for Param0");
		lua_pushnil(lua);
		return 1;
	}

	CzString prop_name, value;
	if (lua_isstring(lua, 2))
		prop_name = lua_tostring(lua, 2);
	else
	{
		CzScriptEngineLua::DisplayError(lua, "scene.get() property must be a property name (Param1) - object - ", object->getName().c_str());
		lua_pushnil(lua);
		return 1;
	}

	CzXomlProperty prop;
	if (!((CzScene*)object)->getProperty(prop_name.getHash(), prop))
	{
		CzScriptEngineLua::DisplayError(lua, "scene.get() scene property does not exist - ", prop_name.c_str());
		lua_pushnil(lua);
		return 1;
	}

	LUA_ReturnProperty(lua, prop);

	return 1;
}
Ejemplo n.º 4
0
//
// LUA_FindScene scene-name (string)
//
static int LUA_FindScene(lua_State *lua)
{
	if (lua_gettop(lua) < 1)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.find() not enough parameters, expected scene-name (string)");
		lua_pushnil(lua);
		return 1;
	}

	const char* name = NULL;

	// Get the scene name
	if (lua_isstring(lua, 1))
		name = lua_tostring(lua, 1);
	if (name == NULL)
	{
		CzScriptEngineLua::DisplayError(lua, "scene.find() Invalid name for Param0");
		lua_pushnil(lua);
		return 1;
	}

	// Locate scene
	CzScene* scene = NULL;
	IzXomlResource* parent = CZ_GLOBAL_RESOURCES->getResourceManager()->getParent();
	if (parent != NULL && parent->getClassTypeHash() == CzHashes::Game_Hash)
		scene = ((CzApp*)parent)->findScene(name);
	else
	if (parent != NULL && parent->getClassTypeHash() == CzHashes::Scene_Hash)
		scene = ((CzScene*)parent)->getParent()->findScene(name);

	if (scene == NULL)
	{
//		CzScriptEngineLua::DisplayError(lua, "scene.find() scene not found - ", name);
		lua_pushnil(lua);
		return 1;
	}

	// Return the scene
	lua_pushlightuserdata(lua, scene);

	return 1;
}
Ejemplo n.º 5
0
//
// LUA_isTypeOf(type-name)
//
static int LUA_isTypeOf(lua_State *lua)
{
	int count = lua_gettop(lua);
	if (lua_gettop(lua) < 1)
	{
        CzScriptEngineLua::DisplayError(lua, "sys.isTypeOf() not enough parameters, expected type-name");
		lua_pushboolean(lua, false);
		return 1;
	}

	// Get the resource
	IzXomlResource* resource = NULL;
	if (lua_isuserdata(lua, 1))
		resource = (CzScene*)lua_touserdata(lua, 1);
	else
	{
        CzScriptEngineLua::DisplayError(lua, "sys.isTypeOf() Invalid parameter, expected object for Param0");
		lua_pushboolean(lua, false);
		return 1;
	}

	// Get the type of actor to create
	const char* type = NULL;
	if (lua_isstring(lua, 2))
		type = lua_tostring(lua, 2);
	else
	{
        CzScriptEngineLua::DisplayError(lua, "sys.isTypeOf() Invalid parameter, expected type-name for Param1");
		lua_pushboolean(lua, false);
		return 1;
	}
	unsigned int type_hash = CZ_HASH(type);


	if (resource->getClassTypeHash() == type_hash)
		lua_pushboolean(lua, true);
	else
		lua_pushboolean(lua, false);


	return 1;
}