SpinOff World Editor Modifications
Several editors and editor modifications are availible. This bug is common to every existend editor!
When you copy multiple entities, they show up in all views. But using the entity editor and leaving
it again, all the entities suddenly disapear from their position and are now at position 0,0,0
(or somewhere else). This bug doesn't show up, when you copy the entities, go to select mode,
press "move" and move all entities contained in the Lib object a little bit. This is basicly,
what I do in the code modification.
in File FusionView.cpp
in Function OnLButtonUp(UINT nFlags, CPoint point)
beginning in line 956:
else if(IsCopying)
{
// MS We need to switch to move mode, to
// correctly place groups of entities.
// Switch to move mode
OnToolsBrushMoverotatebrush();
// Do what has to be done
DoneMovingBrushes ();
// switch bach to Select mode
GetDocument()->DoGeneralSelect();
// ~MS
IsCopying = FALSE;
}
The next bug is simillar: When you place a lib object containing entities to its dedicated position and
press enter, the object shows up in all views. But using the entity editor and leaving it again all the
entities suddenly disapear are now at position 0,0,0 (or somewhere else).
This bug doesn't show up, when you place the lib object, press enter, go to select mode, press "move"
and move all entities contained in the Lib object a little bit. So this is basicly, what I do in the
code modification.
in File FusionDoc.cpp
in Function OnBrushAddtoworld()
beginning in line 1020:
if (Placed)
{
// MS: We need to simualate a "move", to finally place
// Lib objects to where they were placed in Template mode
// switch to move mode
mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
ConfigureCurrentTool();
// fake a move
DoneMove ();
// Back to select mode
DoGeneralSelect();
// ~MS
SetModifiedFlag();
}
Another annoying feature is, that when you can't change to face adjustment mode, when you have
the "move" or "resize" button down. This is corrected by these two lines of code:
in File FusionDoc.cpp
line 2200 new code:
void CFusionDoc::OnToolsFaceAdjustmentmode()
{
//MS change to select mode before changing to face adjustment
DoGeneralSelect();
if( /*mModeTool == ID_GENERALSELECT &&
!IsSelectionLocked() && */
mCurrentTool == CURTOOL_NONE )
{
SetAdjustmentMode( ADJUST_MODE_FACE ) ;
}
}
void CFusionDoc::OnToolsToggleadjustmode()
{
//MS change to select mode before changing to face adjustment
DoGeneralSelect();
if( /*mModeTool == ID_GENERALSELECT &&
!IsSelectionLocked() && */
mCurrentTool == CURTOOL_NONE )
{
SetAdjustmentMode( ADJUST_MODE_TOGGLE ) ; // Flip between Brush & face
}
}
The bug that won't rotate entities, only brushes is corrected in several editors.
Anyway, here ist what you have to do, in file FusionDoc.cpp line 4110:
geVec3d_Add(v, &FinalRot, &FinalRot);
geXForm3d_SetEulerAngles(&rm, v);
for(i=0;i < NumBrushes;i++)
{
Brush *pBrush = SelBrushList_GetBrush (pList, i);
Brush_Rotate (pBrush, &rm, &RotationPoint);
}
CEntityArray *Entities = Level_GetEntities (pLevel);
const EntityTable *EntityTable = Level_GetEntityDefs (pLevel);
for(i=0;i < Entities->GetSize();i++)
{
if ((*Entities)[i].IsSelected ())
{
(*Entities)[i].Rotate(&rm, &RotationPoint, EntityTable);
}
}
}/* CFusionDoc::RotateSelectedBrushList */
I did several other changes, they were all made, to enable bloody beginners
to use the world editor as "SpinOff construction set". These changes consist
of disabling advanced features. I doubt anyone will see them.