Platform: Win7
Affected Versions & Branches:
latest development [ tested and confirmed for DEBUG ~ Release builds result in an immediate crash before even creating the window frame(?) ]
release 3.10.1 [tested and confirmed]
release 3.10 [ files in question are the same ]
Compilers/Toolkits: Any [it's a TorqueScript issue]
Brief Description of Bug:
Physics menu disappears and "Editors" menu is empty after opening the world editor more than once in a session. In short, world editor menus aren't reinitialized and restored properly for subsequent invocations of the editor.
Requirements:
A physics library must be enabled in order for the physics menu bug to be present. [ PHYSICS_BULLET or PHYSICS_PHYSX3 ]
Torque editor tools must be enabled and built with the engine. [ TORQUE_TOOLS ]
To Reproduce:
1) Open the World Editor and load a level or create a new one.
2) Select File->New Level OR File->Exit Level [Return to main menu] OR File->Open Level [load map]
3) Open the World Editor again
4) Observe the lack of physics menu and that the "Editors" menu is now empty.
Possible Solutions:
A) For each EditorPlugin, in the main.cs file in the respective folder, create a new override for the onEditorWake( %this ) method and re-add the menu item [at a bare-minimum]. As far as I can tell there aren't any negative side effects to this. However, certain editors [terrain, inspector[shape], and a few others] will have to be explicitly re-initialized in function EditorGui::onWake( %this ) in [ /Templates/Full/game/tools/worldEditor/scripts/EditorGui.ed.cs Line 532 in the development branch ]
This will have to be applied to each Template that contains this script.
Example:
function ForestEditorPlugin::onEditorWake( %this ){
// Add ourselves to the window menu.
%accel = EditorGui.addToEditorsMenu( "Forest Editor", "", ForestEditorPlugin );
// Add ourselves to the tools menu.
%tooltip = "Forest Editor (" @ %accel @ ")";
EditorGui.addToToolsToolbar( "ForestEditorPlugin", "ForestEditorPalette", expandFilename("tools/forestEditor/images/forest-editor-btn"), %tooltip );
}
B) Defer tools initialization until editor invocation. This comes with the cost of a potentially slower editor load time, but greater reliability because it starts from the same completely cleared state every single time and eliminates the possibility of latent values from previous sessions. Tools/Editors are initialized on-demand and completely reset when they are closed. When the editor is closed, completely destroy and clear all the editor states from the session. When the editor is opened, execute all the init scripts right before creation rather than initializing them at startup. This is significantly more complicated and probably more difficult than A.
Screenshot of initial launch of the editor from the main menu:
Screenshot of menu bar after exiting to main menu or loading a new level [ the editors item is clicked and no physics menu ] .
Platform: Win7 Affected Versions & Branches: latest development [ tested and confirmed for DEBUG ~ Release builds result in an immediate crash before even creating the window frame(?) ] release 3.10.1 [tested and confirmed] release 3.10 [ files in question are the same ] Compilers/Toolkits: Any [it's a TorqueScript issue] Brief Description of Bug: Physics menu disappears and "Editors" menu is empty after opening the world editor more than once in a session. In short, world editor menus aren't reinitialized and restored properly for subsequent invocations of the editor. Requirements: A physics library must be enabled in order for the physics menu bug to be present. [ PHYSICS_BULLET or PHYSICS_PHYSX3 ] Torque editor tools must be enabled and built with the engine. [ TORQUE_TOOLS ]
To Reproduce: 1) Open the World Editor and load a level or create a new one. 2) Select File->New Level OR File->Exit Level [Return to main menu] OR File->Open Level [load map] 3) Open the World Editor again 4) Observe the lack of physics menu and that the "Editors" menu is now empty.
Possible Solutions: A) For each EditorPlugin, in the main.cs file in the respective folder, create a new override for the
onEditorWake( %this )
method and re-add the menu item [at a bare-minimum]. As far as I can tell there aren't any negative side effects to this. However, certain editors [terrain, inspector[shape], and a few others] will have to be explicitly re-initialized infunction EditorGui::onWake( %this )
in [ /Templates/Full/game/tools/worldEditor/scripts/EditorGui.ed.cs Line 532 in the development branch ] This will have to be applied to each Template that contains this script. Example:B) Defer tools initialization until editor invocation. This comes with the cost of a potentially slower editor load time, but greater reliability because it starts from the same completely cleared state every single time and eliminates the possibility of latent values from previous sessions. Tools/Editors are initialized on-demand and completely reset when they are closed. When the editor is closed, completely destroy and clear all the editor states from the session. When the editor is opened, execute all the init scripts right before creation rather than initializing them at startup. This is significantly more complicated and probably more difficult than A. Screenshot of initial launch of the editor from the main menu: Screenshot of menu bar after exiting to main menu or loading a new level [ the editors item is clicked and no physics menu ] .