mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 08:04:40 +00:00
Merge pull request #1505 from Areloch/CreateNewAssetsFix
Fixes issue of not being able to create GameModes or blank MaterialAssets from the Asset Browser
This commit is contained in:
commit
61a75ada1e
5 changed files with 124 additions and 21 deletions
|
|
@ -72,7 +72,7 @@ function AssetBrowser::callAssetTypeFunc(%this, %type, %function, %param0, %para
|
||||||
{
|
{
|
||||||
%group = ABAssetTypesList.getKey(%i);
|
%group = ABAssetTypesList.getKey(%i);
|
||||||
%typeData = ABAssetTypesList.getValue(%i);
|
%typeData = ABAssetTypesList.getValue(%i);
|
||||||
|
|
||||||
if(getField(%typeData, 0) $= %type)
|
if(getField(%typeData, 0) $= %type)
|
||||||
{
|
{
|
||||||
%typeGroup = %group;
|
%typeGroup = %group;
|
||||||
|
|
@ -80,7 +80,7 @@ function AssetBrowser::callAssetTypeFunc(%this, %type, %function, %param0, %para
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%paramOffset = 0;
|
%paramOffset = 0;
|
||||||
%isStaticCall = false;
|
%isStaticCall = false;
|
||||||
%command = "";
|
%command = "";
|
||||||
|
|
@ -246,6 +246,26 @@ function AssetBrowser::callAssetTypeFunc(%this, %type, %function, %param0, %para
|
||||||
return %return;
|
return %return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function AssetBrowser::getAssetTypeGroup(%typeName)
|
||||||
|
{
|
||||||
|
%typeGroup = "";
|
||||||
|
%typeData = "";
|
||||||
|
for(%i=0; %i < ABAssetTypesList.count(); %i++)
|
||||||
|
{
|
||||||
|
%group = ABAssetTypesList.getKey(%i);
|
||||||
|
%typeData = ABAssetTypesList.getValue(%i);
|
||||||
|
|
||||||
|
if(getField(%typeData, 0) $= %typeName)
|
||||||
|
{
|
||||||
|
%typeGroup = %group;
|
||||||
|
%typeData = %typeData;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return %typeGroup;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
function AssetBrowser::initialize(%this)
|
function AssetBrowser::initialize(%this)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
AssetBrowser::registerObjectType("GameModeType", "Gamemode Objects", "Gamemode");
|
AssetBrowser::registerObjectType("GameModeType", "Gamemode Objects", "GameMode");
|
||||||
|
|
||||||
function GameModeType::setupCreateNew()
|
function GameModeType::setupCreateNew()
|
||||||
{
|
{
|
||||||
|
|
@ -7,7 +7,99 @@ function GameModeType::setupCreateNew()
|
||||||
|
|
||||||
function GameModeType::onCreateNew()
|
function GameModeType::onCreateNew()
|
||||||
{
|
{
|
||||||
|
%moduleName = $CurrentAssetBrowser.newAssetSettings.moduleName;
|
||||||
|
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
||||||
|
|
||||||
|
%assetName = $CurrentAssetBrowser.newAssetSettings.assetName;
|
||||||
|
%assetPath = NewAssetTargetAddress.getText() @ "/";
|
||||||
|
|
||||||
|
%scriptPath = %assetPath @ %assetName @ "." @ $TorqueScriptFileExtension;
|
||||||
|
%fullScriptPath = makeFullPath(%scriptPath);
|
||||||
|
|
||||||
|
%file = new FileObject();
|
||||||
|
%templateFile = new FileObject();
|
||||||
|
|
||||||
|
%postFXTemplateCodeFilePath = $CurrentAssetBrowser.templateFilesPath @ "gameMode." @ $TorqueScriptFileExtension @ ".template";
|
||||||
|
|
||||||
|
if(%file.openForWrite(%fullScriptPath) && %templateFile.openForRead(%postFXTemplateCodeFilePath))
|
||||||
|
{
|
||||||
|
while( !%templateFile.isEOF() )
|
||||||
|
{
|
||||||
|
%line = %templateFile.readline();
|
||||||
|
%line = strreplace( %line, "@@", %assetName );
|
||||||
|
|
||||||
|
%file.writeline(%line);
|
||||||
|
}
|
||||||
|
|
||||||
|
%file.close();
|
||||||
|
%templateFile.close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%file.close();
|
||||||
|
%templateFile.close();
|
||||||
|
|
||||||
|
warnf("createGameMode - Something went wrong and we couldn't write the gameMode script file!");
|
||||||
|
}
|
||||||
|
|
||||||
|
%localScriptPath = strReplace(%scriptPath, "data/" @ %moduleName @ "/", "./");
|
||||||
|
%execLine = " %this.queueExec(\"" @ %localScriptPath @ "\");";
|
||||||
|
|
||||||
|
%moduleScriptPath = makeFullPath(%moduleDef.ModuleScriptFilePath);
|
||||||
|
|
||||||
|
echo("Attempting exec insert for file: " @ %moduleScriptPath);
|
||||||
|
|
||||||
|
%lineIdx = Tools::findInFile(%moduleScriptPath, "*function*" @ %moduleName @ "::initClient*");
|
||||||
|
if(%lineIdx != -1)
|
||||||
|
{
|
||||||
|
echo("INIT CLIENT FUNCTION LINE FOUND ON: " @ %lineIdx);
|
||||||
|
|
||||||
|
%insertLineIdx = Tools::findInFunction(%moduleScriptPath, %moduleName, "initClient", "*//--FILE EXEC END--*");
|
||||||
|
echo("FILE EXEC END LINE FOUND ON: " @ %insertLineIdx);
|
||||||
|
|
||||||
|
if(%insertLineIdx == -1)
|
||||||
|
{
|
||||||
|
//If there are not 'blocking' comments, then just slap the exec on the end of the function def
|
||||||
|
//as it doesn't really matter now
|
||||||
|
Tools::appendLineToFunction(%moduleScriptPath, %moduleName, "initClient", %execLine);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Tools::insertInFile(%moduleScriptPath, %insertLineIdx, %execLine, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%lineIdx = Tools::findInFile(%moduleScriptPath, "*function*" @ %moduleName @ "::initServer*");
|
||||||
|
if(%lineIdx != -1)
|
||||||
|
{
|
||||||
|
echo("INIT SERVER FUNCTION LINE FOUND ON: " @ %lineIdx);
|
||||||
|
|
||||||
|
%insertLineIdx = Tools::findInFunction(%moduleScriptPath, %moduleName, "initServer", "*//--FILE EXEC END--*");
|
||||||
|
echo("FILE EXEC END LINE FOUND ON: " @ %insertLineIdx);
|
||||||
|
|
||||||
|
if(%insertLineIdx == -1)
|
||||||
|
{
|
||||||
|
//If there are not 'blocking' comments, then just slap the exec on the end of the function def
|
||||||
|
//as it doesn't really matter now
|
||||||
|
Tools::appendLineToFunction(%moduleScriptPath, %moduleName, "initServer", %execLine);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Tools::insertInFile(%moduleScriptPath, %insertLineIdx, %execLine, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//and we'll go ahead and force execute the script file so the gamemode is 'available' for use immediately
|
||||||
|
exec(%scriptPath);
|
||||||
|
|
||||||
|
if(isObject(%assetName))
|
||||||
|
{
|
||||||
|
//it's possible it got moved to an instant group upon execution, so we'll just
|
||||||
|
//shove it back to the RootGroup by force to be 100% sure
|
||||||
|
RootGroup.add(%assetName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return %scriptPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
function GameModeType::buildBrowserElement(%this, %className, %previewData)
|
function GameModeType::buildBrowserElement(%this, %className, %previewData)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
AssetBrowser::registerAssetType("MaterialAsset", "Materials");
|
AssetBrowser::registerAssetType("MaterialAsset", "Materials");
|
||||||
|
|
||||||
function MaterialAsset::createMaterialAsset(%this)
|
function MaterialAsset::onCreateNew()
|
||||||
{
|
{
|
||||||
%assetName = AssetBrowser.newAssetSettings.assetName;
|
%assetName = $CurrentAssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
%moduleName = AssetBrowser.newAssetSettings.moduleName;
|
%moduleName = $CurrentAssetBrowser.newAssetSettings.moduleName;
|
||||||
%modulePath = "data/" @ %moduleName;
|
%modulePath = "data/" @ %moduleName;
|
||||||
|
|
||||||
%assetPath = NewAssetTargetAddress.getText() @ "/";
|
%assetPath = NewAssetTargetAddress.getText() @ "/";
|
||||||
|
|
@ -30,7 +30,7 @@ function MaterialAsset::createMaterialAsset(%this)
|
||||||
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
||||||
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
|
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
|
||||||
|
|
||||||
AssetBrowser.refresh();
|
$CurrentAssetBrowser.refresh();
|
||||||
|
|
||||||
return %tamlpath;
|
return %tamlpath;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -255,8 +255,10 @@ function CreateNewAsset()
|
||||||
|
|
||||||
Canvas.popDialog(AssetBrowser_newAsset);
|
Canvas.popDialog(AssetBrowser_newAsset);
|
||||||
|
|
||||||
|
%assetTypeGroup = AssetBrowser::getAssetTypeGroup(%assetType);
|
||||||
|
|
||||||
//Load it
|
//Load it
|
||||||
if(!AssetDatabase.isDeclaredAsset(%moduleName @ ":" @ %assetName))
|
if(%assetTypeGroup $= "Asset" && !AssetDatabase.isDeclaredAsset(%moduleName @ ":" @ %assetName))
|
||||||
{
|
{
|
||||||
%moduleDef = ModuleDatabase.findModule(%moduleName,1);
|
%moduleDef = ModuleDatabase.findModule(%moduleName,1);
|
||||||
AssetDatabase.addDeclaredAsset(%moduleDef, %assetFilePath);
|
AssetDatabase.addDeclaredAsset(%moduleDef, %assetFilePath);
|
||||||
|
|
@ -270,18 +272,7 @@ function CreateNewAsset()
|
||||||
%callbackCommand = "" @ AssetBrowser_newAsset.callbackFunc @ "(\"" @ %moduleName @ ":" @ %assetName @ "\");";
|
%callbackCommand = "" @ AssetBrowser_newAsset.callbackFunc @ "(\"" @ %moduleName @ ":" @ %assetName @ "\");";
|
||||||
eval(%callbackCommand);
|
eval(%callbackCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Update the selection to immediately jump to the new asset
|
|
||||||
/*AssetBrowser-->filterTree.clearSelection();
|
|
||||||
%ModuleItem = AssetBrowser-->filterTree.findItemByName(%moduleName);
|
|
||||||
%assetTypeId = AssetBrowser-->filterTree.findChildItemByName(%ModuleItem, %assetType);
|
|
||||||
|
|
||||||
AssetBrowser-->filterTree.selectItem(%assetTypeId);
|
|
||||||
|
|
||||||
%selectedItem = AssetBrowser-->filterTree.getSelectedItem();
|
|
||||||
AssetBrowser-->filterTree.scrollVisibleByObjectId(%selectedItem);
|
|
||||||
|
|
||||||
AssetBrowser-->filterTree.buildVisibleTree(); */
|
|
||||||
AssetBrowser.refresh();
|
AssetBrowser.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
item[ 0 ] = "Create Script" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ScriptAsset\", AssetBrowser.selectedModule);";
|
item[ 0 ] = "Create Script" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ScriptAsset\", AssetBrowser.selectedModule);";
|
||||||
item[ 1 ] = "Create State Machine" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"StateMachineAsset\", AssetBrowser.selectedModule);";
|
item[ 1 ] = "Create State Machine" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"StateMachineAsset\", AssetBrowser.selectedModule);";
|
||||||
item[ 2 ] = "-";
|
item[ 2 ] = "-";
|
||||||
item[ 3 ] = "Create Game Mode" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"GameMode\", AssetBrowser.selectedModule);";
|
item[ 3 ] = "Create Game Mode" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"GameModeType\", AssetBrowser.selectedModule);";
|
||||||
//item[ 3 ] = "Create Game Object" TAB "" TAB "AssetBrowser.createNewGameObjectAsset(\"NewGameObject\", AssetBrowser.selectedModule);";
|
//item[ 3 ] = "Create Game Object" TAB "" TAB "AssetBrowser.createNewGameObjectAsset(\"NewGameObject\", AssetBrowser.selectedModule);";
|
||||||
};
|
};
|
||||||
//%this.AddNewScriptAssetPopup.insertSubMenu(0, "Create Component", AddNewComponentAssetPopup);
|
//%this.AddNewScriptAssetPopup.insertSubMenu(0, "Create Component", AddNewComponentAssetPopup);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue