Bladeren bron

Adds creator callback integration to pair with the base UI module having shortcut creator entries in the GUIEditor for creating stuff like the UINavigation containers, or MenuList controls with the namespace hooks already established.

JeffR 3 jaren geleden
bovenliggende
commit
5f871763fb

+ 3 - 0
Templates/BaseGame/game/data/UI/UI.tscript

@@ -85,6 +85,9 @@ function UI::initClient(%this)
    %this.queueExec("./scripts/help");
    %this.queueExec("./scripts/cursors");
    %this.queueExec("./scripts/utility");
+   
+   if(isToolBuild())
+      %this.queueExec("./tools/creator.tscript");
 }
 
 function UI::onCreateClientConnection(%this){}

+ 61 - 0
Templates/BaseGame/game/data/UI/tools/creator.tscript

@@ -0,0 +1,61 @@
+function UI::loadModuleCreatorClasses(%this)
+{
+   AssetBrowser.beginCreatorGroup( "BaseUI", "GuiEditor" );
+      AssetBrowser.addCreatorClass("GuiContainer",  "UINavigation Container", "UINavContainer" );
+      AssetBrowser.addCreatorClass("GuiContainer",  "Menu List", "GUIMenuList" );
+      AssetBrowser.addCreatorClass("GuiStackControl",  "Stack Menu List", "GuiStackMenuList" );
+      AssetBrowser.addCreatorClass("GuiContainer",  "Menu Input Button Handler", "MenuInputBtnHandler" );
+      AssetBrowser.addCreatorClass("GuiIconButtonCtrl",  "Menu Input Button", "MenuInputBtn" );
+   AssetBrowser.endCreatorGroup();
+}
+
+
+function ObjectBuilderGui::buildUINavContainer(%this)
+{
+   %ctrl = new GuiContainer()
+   {
+      superClass = "UINavigation";
+   };
+   
+   return %ctrl;
+}
+
+function ObjectBuilderGui::buildGUIMenuList(%this)
+{
+   %ctrl = new GuiContainer()
+   {
+      superClass = "MenuList";
+   };
+   
+   return %ctrl;
+}
+
+function ObjectBuilderGui::builduiStackMenuList(%this)
+{
+   %ctrl = new GuiStackControl()
+   {
+      superClass = "MenuList";
+   };
+   
+   return %ctrl;
+}
+
+function ObjectBuilderGui::buildMenuInputBtnHandler(%this)
+{
+   %ctrl = new GuiContainer()
+   {
+      class = "MenuInputButtonContainer";
+   };
+   
+   return %ctrl;
+}
+
+function ObjectBuilderGui::buildMenuInputBtn(%this)
+{
+   %ctrl = new GuiIconButtonCtrl()
+   {
+      class = "MenuInputButton";
+   };
+   
+   return %ctrl;
+}

+ 7 - 0
Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.tscript

@@ -2517,7 +2517,14 @@ function GuiEditor::onControlDropped(%this, %payload, %position)
    else
    {
       %className = %payload.assetName;
+      if(%payload.altCommand !$= "")
+      {
+         %cmd = %payload.altCommand;
+      }
+      else
+      {
       %cmd = "return new " @ %className @ "();";
+      }
       %ctrl = eval( %cmd );
    }
 

+ 10 - 1
Templates/BaseGame/game/tools/assetBrowser/scripts/creator.tscript

@@ -130,6 +130,8 @@ function AssetBrowser::loadCreatorClasses(%this)
    %this.creatorClassArray.sort(true);
    
    %guiClasses.delete();
+   
+   callOnModules("loadModuleCreatorClasses");
 }
 
 function AssetBrowser::beginCreatorGroup(%this, %group, %editor)
@@ -185,7 +187,14 @@ function AssetBrowser::addCreatorClass(%this, %class, %name, %buildfunc)
       %cmd = "ObjectBuilderGui.build" @ %buildfunc @ "();";
    }
 
-   %buildfunc = "ObjectBuilderGui.newObjectCallback = \"AssetBrowser.onFinishCreateObject\"; ObjectCreator.createObject( \"" @ %cmd @ "\" );";
+   if(GuiEditorIsActive())
+   {
+      %buildfunc = "return " @ %cmd;
+   }
+   else
+   {
+      %buildfunc = "ObjectBuilderGui.newObjectCallback = \"AssetBrowser.onFinishCreateObject\"; ObjectCreator.createObject( \"" @ %cmd @ "\" );";
+   }
    
    %args = new ScriptObject();
    %args.val[0] = %class;