Merge pull request #306 from Areloch/MiscFixes20200828

Misc Fixes for level saving and selecting asset paths
This commit is contained in:
Brian Roberts 2020-08-30 07:24:04 -05:00 committed by GitHub
commit 82f7db3d48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 87 additions and 35 deletions

View file

@ -12,7 +12,7 @@
hovertime = "1000"; hovertime = "1000";
isContainer = "1"; isContainer = "1";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "0";
new GuiWindowCtrl(SelectAssetPathWindow) { new GuiWindowCtrl(SelectAssetPathWindow) {
text = "Select Path"; text = "Select Path";
@ -250,7 +250,27 @@
isContainer = "0"; isContainer = "0";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
command="SelectAssetPath.selectPath();"; };
new GuiButtonCtrl() {
text = "New Folder";
groupNum = "-1";
buttonType = "PushButton";
useMouseEvents = "0";
position = "3 414";
extent = "85 24";
minExtent = "8 2";
horizSizing = "right";
vertSizing = "bottom";
profile = "ToolsGuiButtonProfile";
visible = "1";
active = "1";
command = "SelectAssetPath.newFolder();";
tooltipProfile = "GuiToolTipProfile";
hovertime = "1000";
isContainer = "0";
internalName = "newFolderButton";
canSave = "1";
canSaveDynamicFields = "0";
}; };
}; };
}; };

View file

@ -11,12 +11,21 @@ function AssetBrowser::doCreateNewFolder(%this)
if(%newFolderName $= "") if(%newFolderName $= "")
%newFolderName = "NewFolder"; %newFolderName = "NewFolder";
if(SelectAssetPath.isAwake())
{
%currentAddressPath = SelectAssetPath-->folderTree.getItemValue(SelectAssetPath.selectedTreeItem) @ "/" @ SelectAssetPath-->folderTree.getItemText(SelectAssetPath.selectedTreeItem);
}
else
{
%currentAddressPath = AssetBrowser.dirHandler.currentAddress;
}
%newFolderIdx = ""; %newFolderIdx = "";
%matched = true; %matched = true;
%newFolderPath = ""; %newFolderPath = "";
while(%matched == true) while(%matched == true)
{ {
%newFolderPath = AssetBrowser.dirHandler.currentAddress @ "/" @ %newFolderName @ %newFolderIdx; %newFolderPath = %currentAddressPath @ "/" @ %newFolderName @ %newFolderIdx;
if(!isDirectory(%newFolderPath)) if(!isDirectory(%newFolderPath))
{ {
%matched = false; %matched = false;
@ -38,6 +47,10 @@ function AssetBrowser::doCreateNewFolder(%this)
AssetBrowser.loadDirectories(); AssetBrowser.loadDirectories();
%this.navigateTo(%newFolderPath); %this.navigateTo(%newFolderPath);
//On the off chance we're trying to select a path, we'll update the select path window too
if(SelectAssetPath.isAwake())
SelectAssetPath.showDialog(%newFolderPath, SelectAssetPath.callback);
} }
function AssetBrowser::buildFolderPreview(%this, %assetDef, %previewData) function AssetBrowser::buildFolderPreview(%this, %assetDef, %previewData)

View file

@ -19,6 +19,11 @@ function SelectAssetPath::showDialog(%this, %startingPath, %callback)
%dataItem = SelectAssetPath-->folderTree.insertItem(0, "Data"); %dataItem = SelectAssetPath-->folderTree.insertItem(0, "Data");
%this.dirHandler.loadFolders("Data", %dataItem); %this.dirHandler.loadFolders("Data", %dataItem);
%this.dirHandler.expandTreeToAddress(%startingPath);
%id = %this.dirHandler.getFolderTreeItemFromAddress(%startingPath);
%this.dirHandler.treeCtrl.clearSelection();
%this.dirHandler.treeCtrl.selectItem(%id);
Canvas.pushDialog(SelectAssetPath); Canvas.pushDialog(SelectAssetPath);
} }
@ -44,4 +49,10 @@ function SelectAssetPath::selectPath(%this)
} }
Canvas.popDialog(SelectAssetPath); Canvas.popDialog(SelectAssetPath);
}
function SelectAssetPath::newFolder(%this)
{
AssetBrowser_newFolderNameTxt.text = "NewFolder";
Canvas.pushDialog(AssetBrowser_newFolder);
} }

View file

@ -364,14 +364,17 @@ function EditorSaveMissionAs( %levelAsset )
$Server::MissionFile = %missionName; $Server::MissionFile = %missionName;
%Server::LevelAsset = %levelAssetDef; %Server::LevelAsset = %levelAssetDef;
//Update the scene name to comply to the new level's name
GetRootScene().name = %levelAssetDef.AssetName;
//Do the save //Do the save
EditorSaveMission(); EditorSaveMission();
//TODO: doublecheck that we rename the scene properly //Last, we're going to load the level proper in the editor
updateEditorRecentLevelsList(%levelAsset);
//Make sure we have a selected module so we can create our module
//if(AssetBrowser.selectedModule $= "") //If we've opened a valid level, clear the saveAs tag as it's not really applicable now
// Canvas.pushDialog( EditorGui.saveAs = false;
} }
function EditorAutoSaveMission() function EditorAutoSaveMission()
@ -485,33 +488,7 @@ function EditorOpenMission(%levelAsset)
%levelAssetId = %levelAsset; %levelAssetId = %levelAsset;
} }
EditorSettings.setValue("WorldEditor/lastEditedLevel", %levelAssetId); updateEditorRecentLevelsList(%levelAssetId);
//update the recent levels list
%recentLevels = EditorSettings.value("WorldEditor/recentLevelsList");
%recentCount = getTokenCount(%recentLevels, ",");
%updatedRecentList = %levelAssetId;
%updatedRecentCount = 1;
for(%i=0; %i < %recentCount; %i++)
{
%recentEntry = getToken(%recentLevels, ",", %i);
if(%levelAssetId $= %recentEntry)
continue;
%updatedRecentList = %updatedRecentList @ "," @ %recentEntry;
%updatedRecentCount++;
if(%updatedRecentCount == 10)
break;
}
EditorSettings.setValue("WorldEditor/recentLevelsList", %updatedRecentList);
updateRecentLevelsListing();
%filename = %assetDef.getlevelFile(); %filename = %assetDef.getlevelFile();
@ -590,6 +567,37 @@ function MakeSelectionASublevel()
%b = EWorldEditor.getSelectedObject(1);*/ %b = EWorldEditor.getSelectedObject(1);*/
} }
function updateEditorRecentLevelsList(%levelAssetId)
{
EditorSettings.setValue("WorldEditor/lastEditedLevel", %levelAssetId);
//update the recent levels list
%recentLevels = EditorSettings.value("WorldEditor/recentLevelsList");
%recentCount = getTokenCount(%recentLevels, ",");
%updatedRecentList = %levelAssetId;
%updatedRecentCount = 1;
for(%i=0; %i < %recentCount; %i++)
{
%recentEntry = getToken(%recentLevels, ",", %i);
if(%levelAssetId $= %recentEntry)
continue;
%updatedRecentList = %updatedRecentList @ "," @ %recentEntry;
%updatedRecentCount++;
if(%updatedRecentCount == 10)
break;
}
EditorSettings.setValue("WorldEditor/recentLevelsList", %updatedRecentList);
updateRecentLevelsListing();
}
function EditorExportToCollada() function EditorExportToCollada()
{ {