Merge pull request #753 from Areloch/miscFixes20220327

Misc Fixes for 2022/03/27
This commit is contained in:
Brian Roberts 2022-03-27 04:36:49 -05:00 committed by GitHub
commit c64671ff91
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 311 additions and 127 deletions

View file

@ -1373,6 +1373,11 @@ DefineEngineFunction(saveScaledImage, bool, (const char* bitmapSource, const cha
return false; return false;
} }
if (!Platform::isFile(bitmapSource))
{
return false;
}
//First, gotta check the extension, as we have some extra work to do if it's //First, gotta check the extension, as we have some extra work to do if it's
//a DDS file //a DDS file
const char* ret = dStrrchr(bitmapSource, '.'); const char* ret = dStrrchr(bitmapSource, '.');

View file

@ -81,7 +81,6 @@ function ExampleModule::initClient(%this)
exec(%prefPath @ "/keybinds." @ $TorqueScriptFileExtension); exec(%prefPath @ "/keybinds." @ $TorqueScriptFileExtension);
%this.queueExec("./scripts/inputCommands"); %this.queueExec("./scripts/inputCommands");
addOptionsMenuCategory("Example Options", "testExampleOptions();");
} }
//This is called when a game session client successfuly connects to a game server. //This is called when a game session client successfuly connects to a game server.
@ -108,7 +107,17 @@ function ExampleModule::onDestroyClientConnection(%this)
ExampleMoveMap.pop(); ExampleMoveMap.pop();
} }
function ExampleModule::populateOptionsMenuCategories(%this)
{
addOptionsMenuCategory("Example Options", "testExampleOptions();");
}
function testExampleOptions() function testExampleOptions()
{ {
OptionsMenuSettingsList.clear();
OptionName.setText("");
OptionDescription.setText("");
addListOption("Test Option", "This is a test option", $testOptionValue, "OptionA\tOptionB"); addListOption("Test Option", "This is a test option", $testOptionValue, "OptionA\tOptionB");
} }

View file

@ -65,6 +65,8 @@ function OptionsMenu::onAdd(%this)
addOptionsMenuCategory("Audio", "populateAudioSettingsList();"); addOptionsMenuCategory("Audio", "populateAudioSettingsList();");
addOptionsMenuCategory("Keyboard & Mouse", "populateKeyboardMouseSettingsList();"); addOptionsMenuCategory("Keyboard & Mouse", "populateKeyboardMouseSettingsList();");
addOptionsMenuCategory("Gamepad", "populateGamepadSettingsList();"); addOptionsMenuCategory("Gamepad", "populateGamepadSettingsList();");
callOnModules("populateOptionsMenuCategories", "Game");
} }
function OptionsMenuSettingsList::onAdd(%this) function OptionsMenuSettingsList::onAdd(%this)
@ -898,6 +900,9 @@ function OptionsMenu::onKeybindChanged(%this, %actionMap, %keybind)
// //
function addOptionsMenuCategory(%categoryName, %selectCallback) function addOptionsMenuCategory(%categoryName, %selectCallback)
{ {
//Don't add duplicates!
%index = OptionsMenu.optionsCategories.getIndexFromKey(%categoryName);
if(%index == -1)
OptionsMenu.optionsCategories.add(%categoryName, %selectCallback); OptionsMenu.optionsCategories.add(%categoryName, %selectCallback);
} }

View file

@ -1,8 +0,0 @@
<ImageAsset
canSave="true"
canSaveDynamicFields="true"
AssetName="dropdown_textEdit_image"
imageFile="@assetFile=dropdown-textEdit.png"
UseMips="true"
isHDRImage="false"
imageType="Albedo" />

View file

@ -1,8 +1,8 @@
<ImageAsset <ImageAsset
canSave="true" canSave="true"
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="terrainMaterialIcon_image" AssetName="terrainIcon_image"
imageFile="@assetFile=terrainMaterialIcon.png" imageFile="@assetFile=terrainIcon.png"
UseMips="true" UseMips="true"
isHDRImage="false" isHDRImage="false"
imageType="Albedo" /> imageType="Albedo" />

View file

@ -931,13 +931,7 @@ function AssetBrowser::deleteMaterial( %this, %materialName, %secondFilter, %sec
AssetBrowserPerMan.saveDirty(); AssetBrowserPerMan.saveDirty();
} }
AssetBrowser.preloadFilter(); AssetBrowser.refresh();
}
function AssetBrowser::thumbnailCountUpdate(%this)
{
$Pref::AssetBrowser::ThumbnailCountIndex = AssetBrowser-->materialPreviewCountPopup.getSelected();
AssetBrowser.LoadFilter( AssetBrowser.currentFilter, AssetBrowser.currentStaticFilter );
} }
function AssetBrowser::toggleTagFilterPopup(%this) function AssetBrowser::toggleTagFilterPopup(%this)

View file

@ -54,12 +54,7 @@ function AssetBrowser::createComponentAsset(%this)
%moduleDef = ModuleDatabase.findModule(%moduleName, 1); %moduleDef = ModuleDatabase.findModule(%moduleName, 1);
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
AssetBrowser.loadFilters(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "ComponentAsset");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }

View file

@ -28,12 +28,7 @@ function AssetBrowser::createCubemapAsset(%this)
%moduleDef = ModuleDatabase.findModule(%moduleName, 1); %moduleDef = ModuleDatabase.findModule(%moduleName, 1);
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
AssetBrowser.loadFilters(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "CubemapAsset");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }

View file

@ -73,21 +73,10 @@ function AssetBrowser::duplicateGameObjectAsset(%this, %assetDef, %targetModule)
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlPath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlPath);
//Refresh the browser //Refresh the browser
AssetBrowser.loadFilters(); AssetBrowser.refresh();
//Ensure our context is set
%treeItemId = AssetBrowserFilterTree.findItemByName(%targetModule);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "GameObjectAsset");
AssetBrowserFilterTree.selectItem(%smItem);
//Rename it for convenience //Rename it for convenience
AssetBrowser.performRenameAsset(%assetName, "New" @ %assetName); AssetBrowser.performRenameAsset(%assetName, "New" @ %assetName);
//Expand and refresh the target module
AssetBrowserFilterTree.expandItem(%treeItemId,true);
AssetBrowserFilterTree.buildVisibleTree();
} }
//not used //not used

View file

@ -79,12 +79,7 @@ function AssetBrowser::createGUIAsset(%this)
%moduleDef = ModuleDatabase.findModule(%moduleName, 1); %moduleDef = ModuleDatabase.findModule(%moduleName, 1);
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
AssetBrowser.loadFilters(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "GUIs");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }

View file

@ -233,13 +233,17 @@ function AssetBrowser::buildImageAssetPreview(%this, %assetDef, %previewData)
//Revalidate. If it didn't work, just use the default placeholder one //Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath)) if(!isFile(%previewFilePath))
%previewAssetName = "ToolsModule:genericAssetIcon_image"; {
%previewData.previewImage = "ToolsModule:genericAssetIcon_image";
}
else
{
%previewData.previewImage = %previewAssetName;
}
%previewData.assetName = %assetDef.assetName; %previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.scriptFile; %previewData.assetPath = %assetDef.scriptFile;
%previewData.previewImage = %previewAssetName;
%previewData.assetFriendlyName = %assetDef.assetName; %previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description; %previewData.assetDesc = %assetDef.description;
@ -324,7 +328,14 @@ function GuiInspectorTypeImageAssetPtr::onControlDropped( %this, %payload, %posi
if(%assetType $= "ImageAsset") if(%assetType $= "ImageAsset")
{ {
echo("DROPPED A IMAGE ON AN IMAGE ASSET COMPONENT FIELD!"); %module = %payload.moduleName;
%asset = %payload.assetName;
%oldValue = %this.targetObject.bitmapAsset;
%arrayIndex = "";
%targetObject = %this.targetObject;
%targetObject.bitmapAsset = %module @ ":" @ %asset;
} }
EWorldEditor.isDirty = true; EWorldEditor.isDirty = true;

View file

@ -61,11 +61,6 @@ function AssetBrowser::createLevelAsset(%this)
AssetBrowser.refresh(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "Levels");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }

View file

@ -24,12 +24,7 @@ function AssetBrowser::createMaterialAsset(%this)
%moduleDef = ModuleDatabase.findModule(%moduleName, 1); %moduleDef = ModuleDatabase.findModule(%moduleName, 1);
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
AssetBrowser.loadFilters(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "Materials");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }
@ -428,7 +423,7 @@ function AssetBrowser::importMaterialAsset(%this, %assetItem)
function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData) function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData)
{ {
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getScriptPath()))); %module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%assetDef.getAssetId()))));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/"; %previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
if(!IsDirectory(%previewPath)) if(!IsDirectory(%previewPath))
@ -488,13 +483,17 @@ function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData)
//Revalidate. If it didn't work, just use the default placeholder one //Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath)) if(!isFile(%previewFilePath))
%previewAssetName = "ToolsModule:materialIcon_image"; {
%previewData.previewImage = "ToolsModule:materialIcon_image";
}
else
{
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;
}
%previewData.assetName = %assetDef.assetName; %previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.scriptFile; %previewData.assetPath = %assetDef.scriptFile;
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;//%assetDef.fileName;
%previewData.assetFriendlyName = %assetDef.assetName; %previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description; %previewData.assetDesc = %assetDef.description;

View file

@ -26,12 +26,7 @@ function AssetBrowser::createShapeAsset(%this)
%moduleDef = ModuleDatabase.findModule(%moduleName, 1); %moduleDef = ModuleDatabase.findModule(%moduleName, 1);
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
AssetBrowser.loadFilters(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "ShapeAsset");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }
@ -302,13 +297,17 @@ function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData)
//Revalidate. If it didn't work, just use the default placeholder one //Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath)) if(!isFile(%previewFilePath))
%previewAssetName = "ToolsModule:genericAssetIcon_image"; {
%previewData.previewImage = "ToolsModule:genericAssetIcon_image";
}
else
{
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;
}
%previewData.assetName = %assetDef.assetName; %previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.fileName; %previewData.assetPath = %assetDef.fileName;
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;//%assetDef.fileName;
%previewData.assetFriendlyName = %assetDef.assetName; %previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description; %previewData.assetDesc = %assetDef.description;
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @ %previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @

View file

@ -75,7 +75,7 @@ function AssetBrowser::onSoundAssetEditorDropped(%this, %assetDef, %position)
} }
function GuiInspectorTypeShapeAssetPtr::onControlDropped( %this, %payload, %position ) function GuiInspectorTypeSoundAssetPtr::onControlDropped( %this, %payload, %position )
{ {
Canvas.popDialog(EditorDragAndDropLayer); Canvas.popDialog(EditorDragAndDropLayer);

View file

@ -47,12 +47,7 @@ function AssetBrowser::createStateMachineAsset(%this)
%moduleDef = ModuleDatabase.findModule(%moduleName, 1); %moduleDef = ModuleDatabase.findModule(%moduleName, 1);
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
AssetBrowser.loadFilters(); AssetBrowser.refresh();
%treeItemId = AssetBrowserFilterTree.findItemByName(%moduleName);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "StateMachines");
AssetBrowserFilterTree.onSelect(%smItem);
return %tamlpath; return %tamlpath;
} }
@ -123,21 +118,10 @@ function AssetBrowser::duplicateStateMachineAsset(%this, %assetDef)
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlPath); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlPath);
//Refresh the browser //Refresh the browser
AssetBrowser.loadFilters(); AssetBrowser.refresh();
//Ensure our context is set
%treeItemId = AssetBrowserFilterTree.findItemByName(%targetModule);
%smItem = AssetBrowserFilterTree.findChildItemByName(%treeItemId, "StateMachineAsset");
AssetBrowserFilterTree.selectItem(%smItem);
//Rename it for convenience //Rename it for convenience
AssetBrowser.performRenameAsset(%assetName, "New" @ %assetName); AssetBrowser.performRenameAsset(%assetName, "New" @ %assetName);
//Expand and refresh the target module
AssetBrowserFilterTree.expandItem(%treeItemId,true);
AssetBrowserFilterTree.buildVisibleTree();
} }
function AssetBrowser::renameGameObjectAsset(%this, %assetDef, %newAssetId, %originalName, %newName) function AssetBrowser::renameGameObjectAsset(%this, %assetDef, %newAssetId, %originalName, %newName)

View file

@ -91,15 +91,85 @@ function AssetBrowser::deleteTerrainMaterialAsset(%this, %assetDef)
function AssetBrowser::buildTerrainMaterialAssetPreview(%this, %assetDef, %previewData) function AssetBrowser::buildTerrainMaterialAssetPreview(%this, %assetDef, %previewData)
{ {
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%assetDef.getAssetId()))));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
if(!IsDirectory(%previewPath))
{
%this.dirHandler.createFolder(%previewPath);
}
%generatePreview = false;
%previewFilePath = %previewPath @ %assetDef.assetName @ "_Preview.dds";
if(!isFile(%previewFilePath))
{
%generatePreview = true;
}
else
{
if(isObject(%assetDef.materialDefinitionName))
{
if(compareFileTimes(%assetDef.materialDefinitionName.getDiffuseMap(), %previewFilePath) == 1 ||
compareFileTimes(%assetDef.materialDefinitionName.getFilename(), %previewFilePath) == 1)
%generatePreview = true;
}
}
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview)
{
displayEditorLoadingGui("Generating Material Asset Preview...");
if(isObject(%assetDef.materialDefinitionName))
{
%previewShapeDef = AssetDatabase.acquireAsset("ToolsModule:previewSphereShape");
%generatedFilePath = %previewShapeDef.generateCachedPreviewImage(256, %assetDef.materialDefinitionName);
pathCopy(%generatedFilePath, %previewFilePath);
fileDelete(%generatedFilePath);
%previewAsset = new ImageAsset()
{
assetName = %previewAssetName;
versionId = 1;
imageFile = fileName(%previewFilePath);
};
%previewImgAssetPath = %previewPath @ %previewAsset.assetName @ ".asset.taml";
%assetImportSuccessful = TAMLWrite(%previewAsset, %previewImgAssetPath);
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
}
hideEditorLoadingGui();
}
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
{
%previewData.previewImage = "ToolsModule:terrainMaterialIcon_image";
}
else
{
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;
}
%previewData.assetName = %assetDef.assetName; %previewData.assetName = %assetDef.assetName;
%previewData.assetPath = ""; %previewData.assetPath = "";
%previewData.doubleClickCommand = ""; %previewData.doubleClickCommand = "";
%previewData.previewImage = "ToolsModule:terrainMaterialIcon_image";
%previewData.assetFriendlyName = %assetDef.gameObjectName; %previewData.assetFriendlyName = %assetDef.gameObjectName;
%previewData.assetDesc = %assetDef.description; %previewData.assetDesc = %assetDef.description;
%previewData.tooltip = %assetDef.gameObjectName; %previewData.tooltip = %assetDef.gameObjectName;
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @
"\nAsset Type: Terrain Material Asset" @
"\nAsset Definition ID: " @ %assetDef @
"\nDefinition Path: " @ %assetDef.getScriptPath();
} }
function GuiInspectorTypeTerrainMaterialAssetPtr::onClick( %this, %fieldName ) function GuiInspectorTypeTerrainMaterialAssetPtr::onClick( %this, %fieldName )

View file

@ -163,7 +163,7 @@ function AssetBrowser::performRenameAsset(%this, %originalAssetName, %newName)
%ModuleItem = AssetBrowser-->filterTree.findItemByName(%moduleName); %ModuleItem = AssetBrowser-->filterTree.findItemByName(%moduleName);
// TODO is this correct? // TODO is this correct?
%assetType = %ModuleItem.getClassName(); /*%assetType = %ModuleItem.getClassName();
%assetTypeId = AssetBrowser-->filterTree.findChildItemByName(%ModuleItem, %assetType); %assetTypeId = AssetBrowser-->filterTree.findChildItemByName(%ModuleItem, %assetType);
@ -172,7 +172,7 @@ function AssetBrowser::performRenameAsset(%this, %originalAssetName, %newName)
%selectedItem = AssetBrowser-->filterTree.getSelectedItem(); %selectedItem = AssetBrowser-->filterTree.getSelectedItem();
AssetBrowser-->filterTree.scrollVisibleByObjectId(%selectedItem); AssetBrowser-->filterTree.scrollVisibleByObjectId(%selectedItem);
AssetBrowser-->filterTree.buildVisibleTree(); AssetBrowser-->filterTree.buildVisibleTree();*/
} }
function renameAssetFile(%assetDef, %newName) function renameAssetFile(%assetDef, %newName)

View file

@ -182,11 +182,14 @@ function CreateNewAsset()
Canvas.popDialog(AssetBrowser_newAsset); Canvas.popDialog(AssetBrowser_newAsset);
//Load it //Load it
if(!AssetDatabase.isDeclaredAsset(%moduleName @ ":" @ %assetName))
{
%moduleDef = ModuleDatabase.findModule(%moduleName,1); %moduleDef = ModuleDatabase.findModule(%moduleName,1);
AssetDatabase.addDeclaredAsset(%moduleDef, %assetFilePath); AssetDatabase.addDeclaredAsset(%moduleDef, %assetFilePath);
//For utilities' sake, we'll acquire it immediately so it can be utilized //For utilities' sake, we'll acquire it immediately so it can be utilized
//without delay if it's got any script/dependencies stuff //without delay if it's got any script/dependencies stuff
AssetDatabase.acquireAsset("\"" @ %moduleName @ ":" @ %assetName @ "\""); AssetDatabase.acquireAsset("\"" @ %moduleName @ ":" @ %assetName @ "\"");
}
if(AssetBrowser_newAsset.callbackFunc !$= "") if(AssetBrowser_newAsset.callbackFunc !$= "")
{ {

View file

@ -179,7 +179,7 @@ function ConvexEditorMaterialBtn::gotMaterialName(%this, %name)
ConvexEditorOptionsWindow-->matPreviewBtn.setBitmap(getAssetPreviewImage(%diffusemap)); ConvexEditorOptionsWindow-->matPreviewBtn.setBitmap(getAssetPreviewImage(%diffusemap));
ConvexEditorOptionsWindow.activeMaterial = %materialAsset.materialDefinitionName; ConvexEditorOptionsWindow.activeMaterial = %materialAsset.getAssetId();
} }
function ConvexEditorMaterialApplyBtn::onClick(%this) function ConvexEditorMaterialApplyBtn::onClick(%this)

View file

@ -187,6 +187,15 @@ function GuiEditCanvas::onCreateMenu(%this)
item[9] = "Clear Guides" TAB "" TAB "GuiEditor.clearGuides();"; item[9] = "Clear Guides" TAB "" TAB "GuiEditor.clearGuides();";
}; };
new PopupMenu()
{
superClass = "MenuBuilder";
barTitle = "Tools";
internalName = "ToolsMenu";
item[0] = "Project Importer" TAB "" TAB "ProjectImporter::beginProjectImport();";
};
new PopupMenu() new PopupMenu()
{ {
superClass = "MenuBuilder"; superClass = "MenuBuilder";

View file

@ -260,6 +260,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 21"; position = "6 21";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorDiffuseMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -412,6 +413,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 79"; position = "6 79";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorNormalMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -764,6 +766,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 364"; position = "6 364";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorORMConfigMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -985,6 +988,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
isContainer = "1"; isContainer = "1";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
className = "materialEditorRoughnessMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
bitmapAsset = "ToolsModule:unknownImage_image"; bitmapAsset = "ToolsModule:unknownImage_image";
@ -1221,6 +1225,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
isContainer = "1"; isContainer = "1";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
className = "materialEditorAOMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
bitmapAsset = "ToolsModule:unknownImage_image"; bitmapAsset = "ToolsModule:unknownImage_image";
@ -1457,6 +1462,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
isContainer = "1"; isContainer = "1";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
className = "materialEditorMetalMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
bitmapAsset = "ToolsModule:unknownImage_image"; bitmapAsset = "ToolsModule:unknownImage_image";
@ -1710,6 +1716,8 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
isContainer = "1"; isContainer = "1";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
className = "materialEditorGlowMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
bitmapAsset = "ToolsModule:unknownImage_image"; bitmapAsset = "ToolsModule:unknownImage_image";
wrap = "0"; wrap = "0";
@ -1945,6 +1953,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 193"; position = "6 193";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorDetailMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -2090,6 +2099,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 136"; position = "6 136";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorDetailNormalMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -2235,6 +2245,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 136"; position = "6 136";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorOverlayMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -2361,6 +2372,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 250"; position = "6 250";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorLightMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
@ -2487,6 +2499,7 @@ $guiContent = new GuiControl(MaterialEditorGui,EditorGuiGroup) {
position = "6 307"; position = "6 307";
Extent = "185 52"; Extent = "185 52";
HorizSizing = "width"; HorizSizing = "width";
className = "materialEditorToneMapContainer";
new GuiBitmapCtrl() { new GuiBitmapCtrl() {
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";

View file

@ -2420,3 +2420,81 @@ function MaterialEditorGui::doSwapMaterial(%this, %materialAsset)
{ {
MaterialEditorGui.showMaterialChangeSaveDialog(%materialAsset); MaterialEditorGui.showMaterialChangeSaveDialog(%materialAsset);
} }
//
//
function matEdDragNDropMapAssignment(%type, %payload)
{
%assetType = %payload.assetType;
if(%assetType !$= "ImageAsset")
return;
%module = %payload.moduleName;
%assetName = %payload.assetName;
%assetId = %module @ ":" @ %assetName;
MaterialEditorGui.updatingTextureType = %type;
MaterialEditorGui.guiSync( materialEd_previewMaterial );
MaterialEditorGui.doUpdateTextureMap( %assetId );
}
function materialEditorDiffuseMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Diffuse", %payload);
}
function materialEditorNormalMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Normal", %payload);
}
function materialEditorORMConfigMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("ORMConfig", %payload);
}
function materialEditorRoughnessMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Roughness", %payload);
}
function materialEditorAOMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("AO", %payload);
}
function materialEditorMetalMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Metal", %payload);
}
function materialEditorGlowMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Glow", %payload);
}
function materialEditorDetailMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Detail", %payload);
}
function materialEditorDetailNormalMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("DetailNormal", %payload);
}
function materialEditorOverlayMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Overlay", %payload);
}
function materialEditorLightMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Light", %payload);
}
function materialEditorToneMapContainer::onControlDropped( %this, %payload, %position )
{
matEdDragNDropMapAssignment("Tone", %payload);
}

View file

@ -5,7 +5,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
minExtent = "8 2"; minExtent = "8 2";
horizSizing = "right"; horizSizing = "right";
vertSizing = "bottom"; vertSizing = "bottom";
profile = "ToolsGuiDefaultProfile"; profile = "ToolsGuiDefaultNonModalProfile";
visible = "1"; visible = "1";
active = "1"; active = "1";
tooltipProfile = "ToolsGuiToolTipProfile"; tooltipProfile = "ToolsGuiToolTipProfile";
@ -256,7 +256,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
}; };
new GuiContainer(BaseMapContainer) { new GuiContainer(DiffuseMapContainer) {
margin = "0 0 0 0"; margin = "0 0 0 0";
padding = "0 0 0 0"; padding = "0 0 0 0";
anchorTop = "1"; anchorTop = "1";
@ -312,7 +312,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
tooltipProfile = "ToolsGuiToolTipProfile"; tooltipProfile = "ToolsGuiToolTipProfile";
hovertime = "1000"; hovertime = "1000";
isContainer = "0"; isContainer = "0";
internalName = "texBaseMap"; internalName = "texDiffuseMap";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
}; };
@ -334,7 +334,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
profile = "ToolsGuiDefaultProfile"; profile = "ToolsGuiDefaultProfile";
visible = "1"; visible = "1";
active = "1"; active = "1";
command = "TerrainMaterialDlg.updateTextureMap(\"BaseMap\");"; command = "TerrainMaterialDlg.updateTextureMap(\"DiffuseMap\");";
tooltipProfile = "ToolsGuiDefaultProfile"; tooltipProfile = "ToolsGuiDefaultProfile";
tooltip = "Change the Active Diffuse Map for this layer"; tooltip = "Change the Active Diffuse Map for this layer";
hovertime = "1000"; hovertime = "1000";
@ -402,7 +402,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
profile = "ToolsGuiButtonProfile"; profile = "ToolsGuiButtonProfile";
visible = "1"; visible = "1";
active = "1"; active = "1";
command = "TerrainMaterialDlg.updateTextureMap(\"BaseMap\");"; command = "TerrainMaterialDlg.updateTextureMap(\"DiffuseMap\");";
tooltipProfile = "ToolsGuiToolTipProfile"; tooltipProfile = "ToolsGuiToolTipProfile";
hovertime = "1000"; hovertime = "1000";
isContainer = "0"; isContainer = "0";
@ -427,7 +427,7 @@ $guiContent = new GuiControl(TerrainMaterialDlg,EditorGuiGroup) {
profile = "ToolsGuiDefaultProfile"; profile = "ToolsGuiDefaultProfile";
visible = "1"; visible = "1";
active = "1"; active = "1";
command = "TerrainMaterialDlg.clearTextureMap(\"BaseMap\");"; command = "TerrainMaterialDlg.clearTextureMap(\"DiffuseMap\");";
tooltipProfile = "ToolsGuiToolTipProfile"; tooltipProfile = "ToolsGuiToolTipProfile";
hovertime = "1000"; hovertime = "1000";
isContainer = "0"; isContainer = "0";

View file

@ -2319,10 +2319,12 @@ function EWorldEditor::SetActiveScene(%this, %sceneObj)
{ {
$ActiveEditingScene.isEditing = false; $ActiveEditingScene.isEditing = false;
%itemId = EditorTree.findItemByObjectId($ActiveScene); %itemId = EditorTree.findItemByObjectId($ActiveScene);
if(%itemId != -1)
EditorTree.markItem(%itemId); EditorTree.markItem(%itemId);
} }
%itemId = EditorTree.findItemByObjectId(%sceneObj); %itemId = EditorTree.findItemByObjectId(%sceneObj);
if(%itemId != -1)
EditorTree.markItem(%itemId); EditorTree.markItem(%itemId);
$ActiveEditingScene = %sceneObj; $ActiveEditingScene = %sceneObj;

View file

@ -288,8 +288,8 @@ function TerrainMaterialDlg::changeTerrainMatMapAsset(%this)
%targetMap.setBitmap( getAssetPreviewImage(%image) ); %targetMap.setBitmap( getAssetPreviewImage(%image) );
%targetMapName = %targetMap @ "AssetId"; %targetMapNameText = %this.findObjectByInternalName(%this.updateTargetMap @ "AssetId", true);
%targetMapName.setText(%imgAsset); %targetMapNameText.setText(%imgAsset);
TerrainMaterialDlg.matDirty = true; TerrainMaterialDlg.matDirty = true;
} }
@ -412,7 +412,7 @@ function TerrainMaterialDlg::setActiveMaterial( %this, %mat )
%imgPath = %mat.getDiffuseMap(); %imgPath = %mat.getDiffuseMap();
%imgPathText = %imgPath !$= "" && %imgPath !$= $TerrainMaterialEditor::emptyMaterialImage ? %mat.getDiffuseMapAsset() : "None"; %imgPathText = %imgPath !$= "" && %imgPath !$= $TerrainMaterialEditor::emptyMaterialImage ? %mat.getDiffuseMapAsset() : "None";
%this-->diffuseMapAssetId.setText( %imgPathText ); %this-->diffuseMapAssetId.setText( %imgPathText );
%this-->texBaseMap.setBitmap( getAssetPreviewImage(%imgPath) ); %this-->texDiffuseMap.setBitmap( getAssetPreviewImage(%imgPath) );
// //
%imgPath = %mat.getNormalMap(); %imgPath = %mat.getNormalMap();
@ -487,7 +487,7 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
//--- //---
%newDiffuse = %this-->texBaseMap.getBitmap(); %newDiffuse = %this-->texDiffuseMap.getBitmap();
if(%newDiffuse $= $TerrainMaterialEditor::emptyMaterialImage || %newDiffuse $= %blankBitmap) if(%newDiffuse $= $TerrainMaterialEditor::emptyMaterialImage || %newDiffuse $= %blankBitmap)
%newDiffuse = ""; %newDiffuse = "";
@ -741,3 +741,45 @@ function TerrainMaterialDlgBlendHeightContrastTextEdit::onValidate(%this)
TerrainMaterialDlg.activeMat.blendHeightContrast = %this.getText(); TerrainMaterialDlg.activeMat.blendHeightContrast = %this.getText();
TerrainMaterialDlg.matDirty = true; TerrainMaterialDlg.matDirty = true;
} }
//
//
function terrMatEdDragNDropMapAssignment(%mapName, %payload)
{
%assetType = %payload.assetType;
if(%assetType !$= "ImageAsset")
return;
%module = %payload.moduleName;
%assetName = %payload.assetName;
%assetId = %module @ ":" @ %assetName;
TerrainMaterialDlg.updateTargetMap = %mapName;
AssetBrowser.selectedAsset = %assetId;
TerrainMaterialDlg.changeTerrainMatMapAsset();
}
function DiffuseMapContainer::onControlDropped( %this, %payload, %position )
{
terrMatEdDragNDropMapAssignment("DiffuseMap", %payload);
}
function DetailMapContainer::onControlDropped( %this, %payload, %position )
{
terrMatEdDragNDropMapAssignment("DetailMap", %payload);
}
function NormalMapContainer::onControlDropped( %this, %payload, %position )
{
terrMatEdDragNDropMapAssignment("NormalMap", %payload);
}
function ORMMapContainer::onControlDropped( %this, %payload, %position )
{
terrMatEdDragNDropMapAssignment("ORMMap", %payload);
}
function MacroMapContainer::onControlDropped( %this, %payload, %position )
{
terrMatEdDragNDropMapAssignment("MacroMap", %payload);
}