mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-04-23 12:39:24 -05:00
Add function to asset Lua namespace that can check whether another asset exists
This commit is contained in:
@@ -43,6 +43,7 @@ namespace {
|
||||
|
||||
constexpr const char* RequireFunctionName = "require";
|
||||
constexpr const char* RequestFunctionName = "request";
|
||||
constexpr const char* ExistsFunctionName = "exists";
|
||||
constexpr const char* ExportFunctionName = "export";
|
||||
|
||||
constexpr const char* SyncedResourceFunctionName = "syncedResource";
|
||||
@@ -132,6 +133,7 @@ void AssetLoader::setUpAssetLuaTable(Asset* asset) {
|
||||
| |- syncedResource
|
||||
| |- require
|
||||
| |- request
|
||||
| |- exists
|
||||
| |- export
|
||||
| |- onInitialize
|
||||
| |- onDeinitialize
|
||||
@@ -186,6 +188,12 @@ void AssetLoader::setUpAssetLuaTable(Asset* asset) {
|
||||
lua_pushcclosure(*_luaState, &assetloader::request, 1);
|
||||
lua_setfield(*_luaState, assetTableIndex, RequestFunctionName);
|
||||
|
||||
// Register exists function
|
||||
// bool exsists(string path)
|
||||
lua_pushlightuserdata(*_luaState, asset);
|
||||
lua_pushcclosure(*_luaState, &assetloader::exists, 1);
|
||||
lua_setfield(*_luaState, assetTableIndex, ExistsFunctionName);
|
||||
|
||||
// Register export-dependency function
|
||||
// export(string key, any value)
|
||||
lua_pushlightuserdata(*_luaState, asset);
|
||||
@@ -620,6 +628,19 @@ int AssetLoader::requestLua(Asset* parent) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int AssetLoader::existsLua(Asset* asset) {
|
||||
int nArguments = lua_gettop(*_luaState);
|
||||
SCRIPT_CHECK_ARGUMENTS("exists", *_luaState, 1, nArguments);
|
||||
|
||||
std::string assetName = luaL_checkstring(*_luaState, 1);
|
||||
|
||||
ghoul::filesystem::Directory directory = currentDirectory();
|
||||
std::string path = generateAssetPath(directory, assetName);
|
||||
|
||||
lua_pushboolean(*_luaState, FileSys.fileExists(path));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int AssetLoader::exportAssetLua(Asset* asset) {
|
||||
int nArguments = lua_gettop(*_luaState);
|
||||
SCRIPT_CHECK_ARGUMENTS("exportAsset", *_luaState, 2, nArguments);
|
||||
|
||||
@@ -29,8 +29,7 @@ namespace openspace::assetloader {
|
||||
* Usage: void asset.onInitialize(function<void()> initFun)
|
||||
*/
|
||||
int onInitialize(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->onInitializeLua(asset);
|
||||
}
|
||||
|
||||
@@ -39,8 +38,7 @@ int onInitialize(lua_State* state) {
|
||||
* Usage: void asset.onDeinitialize(function<void()> initFun)
|
||||
*/
|
||||
int onDeinitialize(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->onDeinitializeLua(asset);
|
||||
}
|
||||
|
||||
@@ -49,10 +47,12 @@ int onDeinitialize(lua_State* state) {
|
||||
* Usage: void asset.onInitialize(function<void()> initFun)
|
||||
*/
|
||||
int onInitializeDependency(lua_State* state) {
|
||||
Asset *dependant =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset *dependency =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(2)));
|
||||
Asset* dependant = reinterpret_cast<Asset*>(
|
||||
lua_touserdata(state, lua_upvalueindex(1))
|
||||
);
|
||||
Asset* dependency = reinterpret_cast<Asset*>(
|
||||
lua_touserdata(state, lua_upvalueindex(2))
|
||||
);
|
||||
return dependant->loader()->onInitializeDependencyLua(dependant, dependency);
|
||||
}
|
||||
|
||||
@@ -61,14 +61,15 @@ int onInitializeDependency(lua_State* state) {
|
||||
* Usage: void asset.onDeinitialize(function<void()> initFun)
|
||||
*/
|
||||
int onDeinitializeDependency(lua_State* state) {
|
||||
Asset *dependant =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset *dependency =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(2)));
|
||||
Asset* dependant = reinterpret_cast<Asset*>(
|
||||
lua_touserdata(state, lua_upvalueindex(1))
|
||||
);
|
||||
Asset* dependency = reinterpret_cast<Asset*>(
|
||||
lua_touserdata(state, lua_upvalueindex(2))
|
||||
);
|
||||
return dependant->loader()->onDeinitializeDependencyLua(dependant, dependency);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Requires rependency
|
||||
* Gives access to
|
||||
@@ -77,8 +78,7 @@ int onDeinitializeDependency(lua_State* state) {
|
||||
* Usage: {AssetTable, Dependency} = asset.import(string assetIdentifier)
|
||||
*/
|
||||
int require(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->requireLua(asset);
|
||||
}
|
||||
|
||||
@@ -89,22 +89,22 @@ int require(lua_State* state) {
|
||||
* Usage: Dependency = asset.import(string assetIdentifier)
|
||||
*/
|
||||
int request(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->requestLua(asset);
|
||||
}
|
||||
|
||||
|
||||
int exists(lua_State* state) {
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->existsLua(asset);
|
||||
}
|
||||
|
||||
int localResource(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->localResourceLua(asset);
|
||||
}
|
||||
|
||||
int syncedResource(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->syncedResourceLua(asset);
|
||||
}
|
||||
|
||||
@@ -113,8 +113,7 @@ int noOperation(lua_State*) {
|
||||
}
|
||||
|
||||
int exportAsset(lua_State* state) {
|
||||
Asset *asset =
|
||||
reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
Asset* asset = reinterpret_cast<Asset*>(lua_touserdata(state, lua_upvalueindex(1)));
|
||||
return asset->loader()->exportAssetLua(asset);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user