Game Development Community

Beta 2 Bug: Collada shape doesn't update in editor mode [resolved]

by Andreas Johansen · in Torque 3D Professional · 06/09/2009 (11:48 am) · 5 replies

If I place a Collada shape in the mission from within the Object Editor then open up the .dae file in notepad and change the geometry (for example the vertex positions making a box bigger) then save the file - the shape doesn't get updated. It does however when not in the Editor (ie. "game" mode).

For the shape to update when in editor mode, I have to hit F11 twice - exiting and re-entering editor mode.

#1
06/09/2009 (12:39 pm)
This works as expected in a debug build of T3D. Will continue to investigate...
#2
06/09/2009 (12:49 pm)
How to reproduce:

1. Launch the "World Editor" from the Toolbox.
2. Open up any mission.
3. Place a Collada shape in the scene.
4. Edit the Collada file (either manually in notepad or by exporting from some content creator).

The key here seems to be step 1, launching directly into the "World Editor" from the Toolbox. If you launch the game, open up a mission, then enable the editor this problem does not occur.
#3
06/09/2009 (1:07 pm)
If launching directly into the "World Editor" I have to close and re-open the editor (hit F11 twice) before placing a shape for it to be updated on runtime later.
#4
06/09/2009 (1:28 pm)
Fixed this issue by doing the following;

In game/tools/missionEditor/scripts/editor.ed.cs replace the function Editor::checkActiveLoadDone() with this;

function Editor::checkActiveLoadDone()
{
   if(EditorGui.loadingMission)
   {
      toggleEditor(true);
   }
}

In game/tools/missionEditor/scripts/EditorChooseLevelGui.ed.cs replace the following lines in the function WE_EditLevel(%levelFile);

// recreate and open the editor
   Editor::create();
   MissionCleanup.add(Editor);
   EditorGui.loadingMission = true;

with;

// open the editor when done loading mission
   EditorGui.loadingMission = true;

Then finally, in game/scripts/client/serverConnection.cs replace function GameConnection::initialControlSet(%this) with this;

function GameConnection::initialControlSet(%this)
{
   echo ("*** Initial Control Object");

   // The first control object has been set by the server
   // and we are now ready to go.
   
   // first set PlayGui
   if (Canvas.getContent() != PlayGui.getId())
      Canvas.setContent(PlayGui);
   
   // then allow for Editor to turn on
   Editor::checkActiveLoadDone();
}
#5
06/09/2009 (1:50 pm)
If I remember correctly, this was somewhat of a known issue, but Tom had problems trying to track it down (not to mention lack of time), especially since it didn't appear to happen in debug builds. Assuming I'm thinking of the same issue.