• R/O
  • SSH
  • HTTPS

vima19: Commit


Commit MetaInfo

Revisión2542 (tree)
Tiempo2023-09-16 01:13:05
Autorhgtterry

Log Message

GameDirectorSB 15-09-23 [v1.26] World Editor Sound Manager

Cambiar Resumen

Diferencia incremental

--- WorldEditor/WorldEditor/AB_App.cpp (revision 2541)
+++ WorldEditor/WorldEditor/AB_App.cpp (revision 2542)
@@ -96,6 +96,7 @@
9696 CLSB_Objects_Create = nullptr;
9797 CLSB_Physics = nullptr;
9898 CLSB_Environment = nullptr;
99+ CLSB_SoundMgr = nullptr;
99100
100101 AppBackground = NULL;
101102 BlackBrush = NULL;
@@ -297,7 +298,8 @@
297298 CLSB_Objects_Create = new SB_Objects_Create();
298299 CLSB_Physics = new SB_Physics();
299300 CLSB_Environment = new SB_Environment();
300-
301+ CLSB_SoundMgr = new SB_SoundMgr();
302+
301303 InitCommonControls();
302304
303305 hInst =NULL;
--- WorldEditor/WorldEditor/AB_App.h (revision 2541)
+++ WorldEditor/WorldEditor/AB_App.h (revision 2542)
@@ -98,6 +98,7 @@
9898 #include "SB_Objects_Create.h"
9999 #include "SB_Physics.h"
100100 #include "SB_Environment.h"
101+#include "SB_SoundMgr.h"
101102
102103 class SB_App
103104 {
@@ -174,7 +175,9 @@
174175 SB_Objects_Create* CLSB_Objects_Create;
175176 SB_Physics* CLSB_Physics;
176177 SB_Environment* CLSB_Environment;
178+ SB_SoundMgr* CLSB_SoundMgr;
177179
180+
178181 bool InitApp(void);
179182 void InitMFC(void);
180183
--- WorldEditor/WorldEditor/A_Dialogs.cpp (revision 2541)
+++ WorldEditor/WorldEditor/A_Dialogs.cpp (revision 2542)
@@ -681,7 +681,7 @@
681681 SetDlgItemText(hDlg, IDC_EDCAMZ,buf);
682682
683683 geVec3d_Subtract(&App->CL_Dialogs->CenterOfSelection, &App->CLSB_Doc->SelectedGeoCenter, &App->CL_Dialogs->CenterOfSelection);
684- if (App->CL_Dialogs->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
684+ if (App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
685685 {
686686 App->CL_Dialogs->m_pDoc->MoveTemplateBrush(&App->CL_Dialogs->CenterOfSelection);
687687 }
@@ -709,7 +709,7 @@
709709 App->CL_Dialogs->CenterOfSelection.Z = (float)atof(buff);
710710
711711 geVec3d_Subtract(&App->CL_Dialogs->CenterOfSelection, &App->CLSB_Doc->SelectedGeoCenter, &App->CL_Dialogs->CenterOfSelection);
712- if (App->CL_Dialogs->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
712+ if (App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
713713 {
714714 App->CL_Dialogs->m_pDoc->MoveTemplateBrush(&App->CL_Dialogs->CenterOfSelection);
715715 }
--- WorldEditor/WorldEditor/A_File.cpp (revision 2541)
+++ WorldEditor/WorldEditor/A_File.cpp (revision 2542)
@@ -194,7 +194,7 @@
194194
195195 Reset_View(1.0);
196196
197- App->m_pDoc->IsNewDocument = 0;
197+ App->CLSB_Doc->IsNewDocument = 0;
198198 App->m_pDoc->SetModifiedFlag(FALSE);
199199
200200 App->CLSB_TopTabs->Update_Dlg_Controls();
@@ -316,7 +316,7 @@
316316 GroupListType *Groups;
317317
318318 Groups = Level_GetGroups (App->CLSB_Doc->pLevel);
319- App->m_pDoc->mCurrentGroup = Group_GetFirstId (Groups, &gi);
319+ App->CLSB_Doc->mCurrentGroup = Group_GetFirstId (Groups, &gi);
320320 {
321321 Brush *pBox = BrushTemplate_CreateBox (Level_GetBoxTemplate (App->CLSB_Doc->pLevel));
322322 if (pBox != NULL)
@@ -915,7 +915,7 @@
915915 return;;
916916 }
917917
918- App->m_pDoc->IsNewDocument = 0;
918+ App->CLSB_Doc->IsNewDocument = 0;
919919 App->m_pDoc->SetModifiedFlag(FALSE);
920920
921921 App->Say("Saved", App->CL_World->mCurrent_3DT_PathAndFile);
@@ -1153,7 +1153,7 @@
11531153
11541154 Reset_View(1.0);
11551155
1156- App->m_pDoc->IsNewDocument = 0;
1156+ App->CLSB_Doc->IsNewDocument = 0;
11571157 App->m_pDoc->SetModifiedFlag(FALSE);
11581158
11591159 //App->CL_CreateBoxDialog->CreateDefault_TemplateCube();
--- WorldEditor/WorldEditor/A_MainView.cpp (revision 2541)
+++ WorldEditor/WorldEditor/A_MainView.cpp (revision 2542)
@@ -1130,7 +1130,7 @@
11301130 brushDrawData.FlagTest = ::fdocBrushNotDetail;
11311131 brushDrawData.GroupId = GroupId;
11321132 if( (GroupVis == Group_ShowAll) ||
1133- ((GroupVis == Group_ShowCurrent) && (GroupId == m_pDoc->mCurrentGroup)) ||
1133+ ((GroupVis == Group_ShowCurrent) && (GroupId == App->CLSB_Doc->mCurrentGroup)) ||
11341134 ((GroupVis == Group_ShowVisible) && (Group_IsVisible (Groups, GroupId)))
11351135 )
11361136 {
@@ -1140,7 +1140,7 @@
11401140
11411141 pDC->SelectObject (&PenThisGroup);
11421142 Level_EnumLeafBrushes (App->CLSB_Doc->pLevel, &brushDrawData, BrushDraw); // Draw Brushes
1143- if( m_pDoc->mShowEntities == GE_TRUE )
1143+ if(App->CLSB_Doc->mShowEntities == GE_TRUE )
11441144 {
11451145 Level_EnumEntities (App->CLSB_Doc->pLevel, &brushDrawData, EntityDraw);
11461146 }
@@ -1218,7 +1218,7 @@
12181218
12191219 if (pEnt->IsSelected ())
12201220 {
1221- fdocDrawEntity (pEnt, v, pDC, Level_GetEntityDefs (App->CLSB_Doc->pLevel), (i==m_pDoc->mCurrentEntity) ? GE_TRUE : GE_FALSE ) ;
1221+ fdocDrawEntity (pEnt, v, pDC, Level_GetEntityDefs (App->CLSB_Doc->pLevel), (i==App->CLSB_Doc->mCurrentEntity) ? GE_TRUE : GE_FALSE ) ;
12221222 }
12231223 }
12241224 }
@@ -1237,8 +1237,8 @@
12371237 // template brush/entity
12381238 pDC->SelectObject (&PenTemplate);
12391239
1240- if((m_pDoc->mModeTool==ID_TOOLS_TEMPLATE)||
1241- (m_pDoc->mModeTool==ID_TOOLS_CAMERA && m_pDoc->GetSelState()==NOSELECTIONS))
1240+ if((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE)||
1241+ (App->CLSB_Doc->mModeTool==ID_TOOLS_CAMERA && m_pDoc->GetSelState()==NOSELECTIONS))
12421242 {
12431243 if(!m_pDoc->TempEnt)
12441244 {
--- WorldEditor/WorldEditor/A_TabsTemplates_Dlg.cpp (revision 2541)
+++ WorldEditor/WorldEditor/A_TabsTemplates_Dlg.cpp (revision 2542)
@@ -160,7 +160,7 @@
160160 {
161161 App->Get_Current_Document();
162162
163- if (App->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
163+ if (App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
164164 {
165165 if (App->CL_Brush->Get_Brush_Count() == 0)
166166 {
--- WorldEditor/WorldEditor/A_TextureDialog.cpp (revision 2541)
+++ WorldEditor/WorldEditor/A_TextureDialog.cpp (revision 2542)
@@ -400,7 +400,7 @@
400400
401401 SelectedItem = SelectedItem;
402402
403- if (App->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
403+ if (App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
404404 {
405405 return;
406406 }
--- WorldEditor/WorldEditor/A_TopTabs.cpp (revision 2541)
+++ WorldEditor/WorldEditor/A_TopTabs.cpp (revision 2542)
@@ -1034,8 +1034,8 @@
10341034 {
10351035 m_pDoc = (CFusionDoc*)App->m_pMainFrame->GetCurrentDoc();
10361036
1037- m_pDoc->mCurrentTool = CURTOOL_NONE;
1038- m_pDoc->mModeTool = ID_GENERALSELECT;
1037+ App->CLSB_Doc->mCurrentTool = CURTOOL_NONE;
1038+ App->CLSB_Doc->mModeTool = ID_GENERALSELECT;
10391039 m_pDoc->ConfigureCurrentTool();
10401040
10411041 }
@@ -1084,23 +1084,23 @@
10841084 App->Get_Current_Document();
10851085
10861086
1087- int mode = App->m_pDoc->mModeTool;// pView->GetModeTool();
1087+ int mode = App->CLSB_Doc->mModeTool;// pView->GetModeTool();
10881088
10891089 if(mode == ID_TOOLS_TEMPLATE)
10901090 {
1091- App->m_pDoc->mCurrentTool = ID_TOOLS_BRUSH_SCALEBRUSH;
1091+ App->CLSB_Doc->mCurrentTool = ID_TOOLS_BRUSH_SCALEBRUSH;
10921092 App->m_pDoc->ConfigureCurrentTool();
10931093 }
10941094 else
10951095 {
1096- if(App->m_pDoc->mCurrentTool == ID_TOOLS_BRUSH_SCALEBRUSH)
1096+ if(App->CLSB_Doc->mCurrentTool == ID_TOOLS_BRUSH_SCALEBRUSH)
10971097 {
1098- App->m_pDoc->mCurrentTool = CURTOOL_NONE;
1098+ App->CLSB_Doc->mCurrentTool = CURTOOL_NONE;
10991099 App->m_pDoc->mAdjustMode = ADJUST_MODE_FACE;
11001100 }
11011101 else
11021102 {
1103- App->m_pDoc->mCurrentTool = ID_TOOLS_BRUSH_SCALEBRUSH;
1103+ App->CLSB_Doc->mCurrentTool = ID_TOOLS_BRUSH_SCALEBRUSH;
11041104 }
11051105
11061106 App->m_pDoc->ConfigureCurrentTool();
--- WorldEditor/WorldEditor/Base_Environment.h (revision 2541)
+++ WorldEditor/WorldEditor/Base_Environment.h (revision 2542)
@@ -38,7 +38,7 @@
3838 HTREEITEM FileViewItem;
3939
4040 //--------------- Sound
41- //irrklang::ISound* SndFile;
41+ irrklang::ISound* SndFile;
4242 Ogre::Real SndVolume;
4343 char Sound_File[MAX_PATH];
4444 bool Play;
--- WorldEditor/WorldEditor/Base_Object.h (revision 2541)
+++ WorldEditor/WorldEditor/Base_Object.h (revision 2542)
@@ -23,6 +23,44 @@
2323 distribution.
2424 */
2525
26+typedef struct Environ_type
27+{
28+ int Environment_ID;
29+ char Environment_Name[MAX_PATH];
30+
31+ bool Environ_Enabled;
32+
33+ //--------------- Sound
34+ irrklang::ISound* SndFile;
35+ Ogre::Real SndVolume;
36+ char Sound_File[MAX_PATH];
37+ bool Play;
38+ bool Loop;
39+
40+ //--------------- Light
41+ Ogre::Vector3 AmbientColour;
42+ Ogre::Vector3 Light_Position;
43+
44+ //--------------- Sky
45+ bool Enabled;
46+ int type;
47+ char Material[MAX_PATH];
48+ float Curvature;
49+ float Tiling;
50+ float Distance;
51+
52+ //--------------- Fog
53+ int Fog_On;
54+ int Fog_Mode;
55+ Ogre::Vector3 Fog_Colour;
56+ float Fog_Start;
57+ float Fog_End;
58+ float Fog_Density;
59+
60+ bool IsMainEnvironment;
61+
62+}Environ_type;
63+
2664 class Base_Object
2765 {
2866 public:
@@ -99,9 +137,11 @@
99137 Move_Type* S_MoveType[1];
100138 Teleport_type* S_Teleport[1];
101139 Collectable_type* S_Collectable[1];
102- Message_type* S_Message[1];
140+ Message_type* S_Message[1];*/
141+
103142 Environ_type* S_Environ[1];
104- Particle_type* S_Particle[1];
143+
144+ /*Particle_type* S_Particle[1];
105145 Light_type* S_Light[1];*/
106146
107147 bool Show_Message_Flag;
--- WorldEditor/WorldEditor/EntitiesDialog.cpp (revision 2541)
+++ WorldEditor/WorldEditor/EntitiesDialog.cpp (revision 2542)
@@ -122,7 +122,7 @@
122122 {
123123 App->CLSB_Doc->ResetAllSelectedEntities();
124124 pDoc->SelectEntity (&(*mEntityArray)[mCurrentEntity]);
125- pDoc->mCurrentEntity = mCurrentEntity;
125+ App->CLSB_Doc->mCurrentEntity = mCurrentEntity;
126126 }
127127 }
128128 }
--- WorldEditor/WorldEditor/FUSION.cpp (revision 2541)
+++ WorldEditor/WorldEditor/FUSION.cpp (revision 2542)
@@ -386,6 +386,8 @@
386386 //return;
387387 }
388388
389+ App->CLSB_SoundMgr->Play_StartUp_Sound();
390+
389391 App->CLSB_Ogre->OgreIsRunning = 1;
390392
391393 App->CLSB_Ogre->Ogre_Render_Loop();
--- WorldEditor/WorldEditor/FUSIONDoc.cpp (revision 2541)
+++ WorldEditor/WorldEditor/FUSIONDoc.cpp (revision 2542)
@@ -282,16 +282,15 @@
282282 CFusionDoc::CFusionDoc() : CDocument (),
283283
284284 SelectLock (FALSE), TempEnt (FALSE), SelState (NOSELECTIONS),
285- mShowSelectedFaces (FALSE), mShowSelectedBrushes (FALSE),
285+ mShowSelectedBrushes (FALSE),
286286 LeakPoints (NULL), NumLeakPoints (0), bLeakLoaded (FALSE), bShowLeak (TRUE),
287- IsNewDocument (1), mShowEntities (GE_TRUE), mCurTextureSelection (1),
288287 bShowClipBrushes (GE_TRUE), bShowDetailBrushes (GE_TRUE), bShowHintBrushes (GE_TRUE), bShowActors(GE_TRUE)/*changed QD*/,
289288 mpActiveViewFrame (NULL), // mpBrushAttributes (NULL), mpFaceAttributes (NULL),
290- /*mpTextureView (NULL), */mWorldBsp (NULL), mActiveView (-1), mCurrentEntity (-1),
291- mModeTool (ID_TOOLS_TEMPLATE), mAdjustMode (ADJUST_MODE_FACE),
292- mCurrentTool (ID_TOOLS_BRUSH_MOVEROTATEBRUSH), mShowBrush (TRUE), mConstrainHollows (GE_TRUE),
293- mCurrentBitmap (0), NumSelEntities (0), //mTextureBrowserOpen (0),
294- mCurrentGroup (0), TempShearTemplate (NULL), PlaceObjectFlag (FALSE),
289+ /*mpTextureView (NULL), */mWorldBsp (NULL),
290+ mAdjustMode (ADJUST_MODE_FACE),
291+ mConstrainHollows (GE_TRUE),
292+ //mTextureBrowserOpen (0),
293+ TempShearTemplate (NULL), PlaceObjectFlag (FALSE),
295294 pSelFaces (NULL), pSelBrushes (NULL)//, pCameraEntity (NULL)
296295 {
297296
@@ -911,7 +910,7 @@
911910 GroupListType *Groups;
912911
913912 Groups = Level_GetGroups (App->CLSB_Doc->pLevel);
914- mCurrentGroup = Group_GetFirstId (Groups, &gi);
913+ App->CLSB_Doc->mCurrentGroup = Group_GetFirstId (Groups, &gi);
915914
916915 {
917916 Brush *pBox = BrushTemplate_CreateBox (Level_GetBoxTemplate (App->CLSB_Doc->pLevel));
@@ -960,7 +959,7 @@
960959 {
961960 geBoolean Placed;
962961
963- if(mModeTool!=ID_TOOLS_TEMPLATE)
962+ if(App->CLSB_Doc->mModeTool!=ID_TOOLS_TEMPLATE)
964963 return;
965964
966965 Placed = GE_FALSE;
@@ -1033,7 +1032,7 @@
10331032 pTemplatePos = Level_GetTemplatePos (App->CLSB_Doc->pLevel);
10341033 Brush_Center (nb, pTemplatePos);
10351034 // add to current group
1036- Brush_SetGroupId (nb, mCurrentGroup);
1035+ Brush_SetGroupId (nb, App->CLSB_Doc->mCurrentGroup);
10371036
10381037 {
10391038 // set draw scale and lightmap scale defaults for all faces
@@ -1071,7 +1070,7 @@
10711070 // MS: We need to simualate a "move", to finally place
10721071 // Lib objects to where they were placed in Template mode
10731072 // switch to move mode
1074- mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
1073+ App->CLSB_Doc->mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
10751074 ConfigureCurrentTool();
10761075 // fake a move
10771076 App->CLSB_Doc->DoneMove();
@@ -1089,7 +1088,7 @@
10891088 Brush *nb;
10901089 BrushList *BList = Level_GetBrushes (App->CLSB_Doc->pLevel);
10911090
1092- if ((mModeTool==ID_GENERALSELECT) && (BrushList_Count (BList, BRUSH_COUNT_MULTI | BRUSH_COUNT_LEAF) < 2))
1091+ if ((App->CLSB_Doc->mModeTool==ID_GENERALSELECT) && (BrushList_Count (BList, BRUSH_COUNT_MULTI | BRUSH_COUNT_LEAF) < 2))
10931092 {
10941093 // cuts shouldn't start the list
10951094 return;
@@ -1097,7 +1096,7 @@
10971096
10981097 SetModifiedFlag();
10991098
1100- if(mModeTool==ID_GENERALSELECT)
1099+ if(App->CLSB_Doc->mModeTool==ID_GENERALSELECT)
11011100 {
11021101 // put the brush at the very end of the list
11031102 BrushList_Remove (BList, CurBrush);
@@ -1114,7 +1113,7 @@
11141113 Brush_Bound (nb);
11151114
11161115 // add to current group
1117- Brush_SetGroupId (nb, mCurrentGroup);
1116+ Brush_SetGroupId (nb, App->CLSB_Doc->mCurrentGroup);
11181117
11191118 BrushList_Append (BList, nb);
11201119 }
@@ -1307,7 +1306,7 @@
13071306 return GE_TRUE;
13081307
13091308 case Group_ShowCurrent :
1310- return (GroupId == mCurrentGroup);
1309+ return (GroupId == App->CLSB_Doc->mCurrentGroup);
13111310
13121311 case Group_ShowVisible :
13131312 return Group_IsVisible (Level_GetGroups (App->CLSB_Doc->pLevel), GroupId);
@@ -1330,7 +1329,7 @@
13301329 {
13311330 return pEntity->IsVisible ();
13321331 }
1333- if ((mShowEntities == GE_FALSE) || !pEntity->IsVisible ())
1332+ if ((App->CLSB_Doc->mShowEntities == GE_FALSE) || !pEntity->IsVisible ())
13341333 {
13351334 return GE_FALSE ;
13361335 }
@@ -1343,7 +1342,7 @@
13431342 return GE_TRUE;
13441343
13451344 case Group_ShowCurrent :
1346- return (GroupId == mCurrentGroup);
1345+ return (GroupId == App->CLSB_Doc->mCurrentGroup);
13471346
13481347 case Group_ShowVisible :
13491348 return Group_IsVisible (Level_GetGroups (App->CLSB_Doc->pLevel), GroupId);
@@ -1656,7 +1655,7 @@
16561655 CEntitiesDialog Dialog (AfxGetMainWnd ());
16571656 CEntityArray *Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
16581657
1659- Dialog.EditEntity( *Entities, mCurrentEntity, this);
1658+ Dialog.EditEntity( *Entities, App->CLSB_Doc->mCurrentEntity, this);
16601659 UpdateEntityOrigins();
16611660 // changed QD Actors
16621661 UpdateEntityActors();
@@ -1706,12 +1705,12 @@
17061705 TempEnt = TRUE;
17071706
17081707 mRegularEntity = NewEnt;
1709- mCurrentEntity = -1;
1708+ App->CLSB_Doc->mCurrentEntity = -1;
17101709 // set this flag so that doc knows when enter is pressed that user is NOT adding
17111710 // objects to level
17121711 PlaceObjectFlag = FALSE;
17131712
1714- mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
1713+ App->CLSB_Doc->mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
17151714 ConfigureCurrentTool();
17161715
17171716 App->CLSB_Doc->UpdateAllViews(UAV_ALL3DVIEWS, NULL);
@@ -1733,13 +1732,13 @@
17331732 NewEnt.SetOrigin (0.0f, 0.0f, 0.0f, Level_GetEntityDefs (App->CLSB_Doc->pLevel));
17341733
17351734 mRegularEntity=NewEnt;
1736- mCurrentEntity=-1;
1735+ App->CLSB_Doc->mCurrentEntity=-1;
17371736
17381737 // set this flag so that doc knows when enter is pressed that user is adding objects
17391738 // to level
17401739 PlaceObjectFlag = TRUE;
17411740
1742- mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
1741+ App->CLSB_Doc->mCurrentTool=ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
17431742 ConfigureCurrentTool();
17441743
17451744 App->CLSB_Doc->UpdateAllViews(UAV_ALL3DVIEWS, NULL);
@@ -1749,13 +1748,13 @@
17491748
17501749 void CFusionDoc::OnEntitiesShow(void)
17511750 {
1752- mShowEntities = !mShowEntities;
1751+ App->CLSB_Doc->mShowEntities = !App->CLSB_Doc->mShowEntities;
17531752 App->CLSB_Doc->UpdateAllViews(UAV_ALL3DVIEWS, NULL);
17541753 }
17551754
17561755 void CFusionDoc::OnUpdateEntitiesShow(CCmdUI* pCmdUI)
17571756 {
1758- pCmdUI->SetCheck( mShowEntities );
1757+ pCmdUI->SetCheck(App->CLSB_Doc->mShowEntities );
17591758 }
17601759
17611760 void CFusionDoc::OnViewShowAllGroups()
@@ -1898,7 +1897,7 @@
18981897 {
18991898 assert (v != NULL);
19001899
1901- if(mCurrentEntity < 0) //template
1900+ if(App->CLSB_Doc->mCurrentEntity < 0) //template
19021901 {
19031902 mRegularEntity.Move (v);
19041903 }
@@ -1906,7 +1905,7 @@
19061905 {
19071906 CEntityArray *Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
19081907
1909- (*Entities)[mCurrentEntity].Move(v);
1908+ (*Entities)[App->CLSB_Doc->mCurrentEntity].Move(v);
19101909 SetModifiedFlag();
19111910 }
19121911 }
@@ -1931,7 +1930,7 @@
19311930 {
19321931 if( /*mModeTool == ID_GENERALSELECT &&
19331932 !IsSelectionLocked() && */
1934- mCurrentTool == CURTOOL_NONE )
1933+ App->CLSB_Doc->mCurrentTool == CURTOOL_NONE )
19351934 {
19361935 // SetAdjustmentMode( ADJUST_MODE_BRUSH ) ;
19371936 SetAdjustmentMode( ADJUST_MODE_FACE ) ;
@@ -1948,7 +1947,7 @@
19481947 {
19491948 if( /*mModeTool == ID_GENERALSELECT &&
19501949 !IsSelectionLocked() && */
1951- mCurrentTool == CURTOOL_NONE )
1950+ App->CLSB_Doc->mCurrentTool == CURTOOL_NONE )
19521951 {
19531952 SetAdjustmentMode( ADJUST_MODE_FACE ) ;
19541953 }
@@ -1960,7 +1959,7 @@
19601959 DoGeneralSelect();
19611960 if( /*mModeTool == ID_GENERALSELECT &&
19621961 !IsSelectionLocked() && */
1963- mCurrentTool == CURTOOL_NONE )
1962+ App->CLSB_Doc->mCurrentTool == CURTOOL_NONE )
19641963 {
19651964 SetAdjustmentMode( ADJUST_MODE_FACE ) ;
19661965 }
@@ -1973,7 +1972,7 @@
19731972 DoGeneralSelect();
19741973 if( /*mModeTool == ID_GENERALSELECT &&
19751974 !IsSelectionLocked() && */
1976- mCurrentTool == CURTOOL_NONE )
1975+ App->CLSB_Doc->mCurrentTool == CURTOOL_NONE )
19771976 {
19781977 SetAdjustmentMode( ADJUST_MODE_TOGGLE ) ; // Flip between Brush & face
19791978 }
@@ -2261,7 +2260,7 @@
22612260 if ((*Entities)[i].IsSelected())
22622261 {
22632262 (*Entities)[i].DeSelect();
2264- --NumSelEntities;
2263+ --App->CLSB_Doc->NumSelEntities;
22652264 }
22662265 }
22672266 }
@@ -2296,7 +2295,7 @@
22962295 if (!(*Entities)[i].IsSelected())
22972296 {
22982297 (*Entities)[i].Select();
2299- ++NumSelEntities;
2298+ ++App->CLSB_Doc->NumSelEntities;
23002299 }
23012300 }
23022301 }
@@ -2323,7 +2322,7 @@
23232322 SelBrushList_Add (pSelBrushes, pBrush);
23242323 }
23252324 // end change
2326- ++NumSelEntities;
2325+ ++App->CLSB_Doc->NumSelEntities;
23272326 }
23282327 }
23292328
@@ -2345,7 +2344,7 @@
23452344 SelBrushList_Remove(pSelBrushes, pBrush);
23462345 }
23472346 // end change
2348- --NumSelEntities;
2347+ --App->CLSB_Doc->NumSelEntities;
23492348 assert (NumSelEntities >= 0);
23502349 }
23512350 }
@@ -2444,7 +2443,7 @@
24442443 {
24452444 DoGeneralSelect ();
24462445
2447- NumSelEntities = 0;
2446+ App->CLSB_Doc->NumSelEntities = 0;
24482447 Level_EnumEntities (App->CLSB_Doc->pLevel, this, ::fdocSelectEntity);
24492448
24502449 App->CLSB_Doc->UpdateSelected();
@@ -2502,7 +2501,7 @@
25022501
25032502 Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
25042503 App->CLSB_Doc->ResetAllSelectedEntities();
2505- mCurrentEntity = ID;
2504+ App->CLSB_Doc->mCurrentEntity = ID;
25062505 SelectEntity (&(*Entities)[ID]);
25072506 App->CLSB_Doc->UpdateSelected() ;
25082507 }
@@ -2517,7 +2516,7 @@
25172516
25182517 Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
25192518
2520- pEnt = &(*Entities)[mCurrentEntity];
2519+ pEnt = &(*Entities)[App->CLSB_Doc->mCurrentEntity];
25212520
25222521
25232522 if (pEnt->IsCamera ())
@@ -2549,7 +2548,7 @@
25492548 geFloat fArcDelta ;
25502549 CEntityArray *Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
25512550
2552- pEnt = &(*Entities)[mCurrentEntity];
2551+ pEnt = &(*Entities)[App->CLSB_Doc->mCurrentEntity];
25532552
25542553 pEnt->GetArc( &fArc, Level_GetEntityDefs (App->CLSB_Doc->pLevel) ) ;
25552554
@@ -2573,7 +2572,7 @@
25732572 geFloat fRadius ;
25742573 CEntityArray *Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
25752574
2576- pEnt = &(*Entities)[mCurrentEntity];
2575+ pEnt = &(*Entities)[App->CLSB_Doc->mCurrentEntity];
25772576
25782577 pEnt->GetRadius( &fRadius, Level_GetEntityDefs (App->CLSB_Doc->pLevel) ) ;
25792578 fRadius += geVec3d_Length (pVec);
@@ -2657,9 +2656,9 @@
26572656 {
26582657 App->CLSB_Doc->mLastOp =BRUSH_SCALE;
26592658
2660- if(mModeTool == ID_TOOLS_TEMPLATE)
2659+ if(App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
26612660 {
2662- Brush_Resize(CurBrush, dx, dy, sides, inidx, &FinalScale, &ScaleNum);
2661+ Brush_Resize(CurBrush, dx, dy, sides, inidx, &App->CLSB_Doc->FinalScale, &App->CLSB_Doc->ScaleNum);
26632662 if(Brush_IsMulti(CurBrush))
26642663 {
26652664 BrushList_ClearCSGAndHollows((BrushList *)App->CL_Brush->Brush_GetBrushList(CurBrush), Brush_GetModelId(CurBrush));
@@ -2679,7 +2678,7 @@
26792678
26802679 pBrush = SelBrushList_GetBrush (App->CLSB_Doc->pTempSelBrushes, i);
26812680
2682- Brush_Resize (pBrush, dx, dy, sides, inidx, &FinalScale, &ScaleNum);
2681+ Brush_Resize (pBrush, dx, dy, sides, inidx, &App->CLSB_Doc->FinalScale, &App->CLSB_Doc->ScaleNum);
26832682 if (Brush_IsMulti(pBrush))
26842683 {
26852684 BrushList_ClearCSGAndHollows((BrushList *)App->CL_Brush->Brush_GetBrushList(pBrush), Brush_GetModelId(pBrush));
@@ -2700,7 +2699,7 @@
27002699 geVec3d_Subtract(&VecOrigin, &App->CLSB_Doc->SelectedGeoCenter, &MoveTo);
27012700 geVec3d_Subtract(&App->CLSB_Doc->SelectedGeoCenter, &VecOrigin, &MoveBack);
27022701
2703- if(mModeTool == ID_TOOLS_TEMPLATE)
2702+ if(App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
27042703 {
27052704 Brush_Scale3d(CurBrush, ScaleVector);
27062705 if(Brush_IsMulti(CurBrush))
@@ -3286,8 +3285,8 @@
32863285 }
32873286 else
32883287 {
3289- if(!pView->IsPanning && mCurrentTool!=ID_TOOLS_BRUSH_SCALEBRUSH
3290- && mCurrentTool!=ID_TOOLS_BRUSH_SHEARBRUSH)
3288+ if(!pView->IsPanning && App->CLSB_Doc->mCurrentTool!=ID_TOOLS_BRUSH_SCALEBRUSH
3289+ && App->CLSB_Doc->mCurrentTool!=ID_TOOLS_BRUSH_SHEARBRUSH)
32913290 {
32923291
32933292 int FoundThingType;
@@ -3295,11 +3294,11 @@
32953294 CEntity *pMinEntity;
32963295 geFloat Dist;
32973296 FoundThingType = FindClosestThing (&ViewCursorPos, pView->VCam, &pMinBrush, &pMinEntity, &Dist);
3298- if (mCurrentTool==ID_TOOLS_BRUSH_MOVEROTATEBRUSH)
3297+ if (App->CLSB_Doc->mCurrentTool==ID_TOOLS_BRUSH_MOVEROTATEBRUSH)
32993298 SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZEALL));
33003299 else
33013300 SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
3302- if ((FoundThingType == fctNOTHING) || (Dist > MAX_PIXEL_SELECT_DIST) || (mCurrentTool != CURTOOL_NONE))
3301+ if ((FoundThingType == fctNOTHING) || (Dist > MAX_PIXEL_SELECT_DIST) || (App->CLSB_Doc->mCurrentTool != CURTOOL_NONE))
33033302 {
33043303 }
33053304 else
@@ -3404,7 +3403,7 @@
34043403
34053404 void CFusionDoc::OnFileSave()
34063405 {
3407- if (IsNewDocument)
3406+ if (App->CLSB_Doc->IsNewDocument)
34083407 {
34093408 OnFileSaveAs ();
34103409 }
@@ -3444,7 +3443,7 @@
34443443
34453444 UpdateGridInformation();
34463445
3447- IsNewDocument = 0;
3446+ App->CLSB_Doc->IsNewDocument = 0;
34483447 SetModifiedFlag(FALSE);
34493448
34503449 // CFusionView* pFusionView = GetCameraView();
@@ -3800,8 +3799,8 @@
38003799 BrushList_EnumLeafBrushes(BList, &brushDrawData, ::BrushDrawWireSel3dCB);
38013800 }
38023801
3803- if((mModeTool==ID_TOOLS_TEMPLATE)||
3804- (mModeTool==ID_TOOLS_CAMERA && GetSelState()==NOSELECTIONS))
3802+ if((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE)||
3803+ (App->CLSB_Doc->mModeTool==ID_TOOLS_CAMERA && GetSelState()==NOSELECTIONS))
38053804 {
38063805 brushDrawData.Color = PEN_BLUE_COLOR;
38073806 if(!TempEnt)
@@ -3863,7 +3862,7 @@
38633862
38643863 App->CLSB_Doc->mLastOp =BRUSH_ROTATE;
38653864
3866- geVec3d_Add(v, &FinalRot, &FinalRot);
3865+ geVec3d_Add(v, &App->CLSB_Doc->FinalRot, &App->CLSB_Doc->FinalRot);
38673866 geXForm3d_SetEulerAngles(&rm, v);
38683867 Brush_Rotate (CurBrush, &rm, &App->CLSB_Doc->SelectedGeoCenter);
38693868 }
@@ -3921,7 +3920,7 @@
39213920 GetRotationPoint (&RotationPoint);
39223921
39233922
3924- geVec3d_Add(v, &FinalRot, &FinalRot);
3923+ geVec3d_Add(v, &App->CLSB_Doc->FinalRot, &App->CLSB_Doc->FinalRot);
39253924 geXForm3d_SetEulerAngles(&rm, v);
39263925
39273926 for(i=0;i < NumBrushes;i++)
@@ -3956,7 +3955,7 @@
39563955 {
39573956 RotateSelectedBrushList (pSelBrushes, v);
39583957 UpdateSelectedModel (BRUSH_ROTATE, v);
3959- geVec3d_Clear (&FinalRot);
3958+ geVec3d_Clear (&App->CLSB_Doc->FinalRot);
39603959 }
39613960
39623961 static geBoolean fdocBrushTextureScaleCallback (Brush *pBrush, void *lParam)
@@ -3989,7 +3988,7 @@
39893988 geVec3d RotationPoint;
39903989 geVec3d TemplateReversalRot;
39913990
3992- TemplateReversalRot = FinalRot;
3991+ TemplateReversalRot = App->CLSB_Doc->FinalRot;
39933992
39943993 App->CLSB_Doc->mLastOp =BRUSH_ROTATE;
39953994
@@ -4001,17 +4000,17 @@
40014000 if((SelState & NOENTITIES) && Level_UseGrid (App->CLSB_Doc->pLevel))
40024001 {
40034002 RSnap =Units_DegreesToRadians ((float)Level_GetRotationSnap (App->CLSB_Doc->pLevel));
4004- FinalRot.X =((float)((int)(FinalRot.X / RSnap))) * RSnap;
4005- FinalRot.Y =((float)((int)(FinalRot.Y / RSnap))) * RSnap;
4006- FinalRot.Z =((float)((int)(FinalRot.Z / RSnap))) * RSnap;
4003+ App->CLSB_Doc->FinalRot.X =((float)((int)(App->CLSB_Doc->FinalRot.X / RSnap))) * RSnap;
4004+ App->CLSB_Doc->FinalRot.Y =((float)((int)(App->CLSB_Doc->FinalRot.Y / RSnap))) * RSnap;
4005+ App->CLSB_Doc->FinalRot.Z =((float)((int)(App->CLSB_Doc->FinalRot.Z / RSnap))) * RSnap;
40074006 }
40084007
4009- if(mModeTool == ID_TOOLS_TEMPLATE)
4010- geVec3d_Subtract(&FinalRot, &TemplateReversalRot, &FinalRot);
4008+ if(App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
4009+ geVec3d_Subtract(&App->CLSB_Doc->FinalRot, &TemplateReversalRot, &App->CLSB_Doc->FinalRot);
40114010
4012- geXForm3d_SetEulerAngles(&rm, &FinalRot);
4011+ geXForm3d_SetEulerAngles(&rm, &App->CLSB_Doc->FinalRot);
40134012
4014- if(mModeTool == ID_TOOLS_TEMPLATE)
4013+ if(App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
40154014 {
40164015 if (TempEnt)
40174016 {
@@ -4075,9 +4074,9 @@
40754074 }
40764075 App->CLSB_Doc->UpdateSelected();
40774076
4078- UpdateSelectedModel (BRUSH_ROTATE, &FinalRot);
4077+ UpdateSelectedModel (BRUSH_ROTATE, &App->CLSB_Doc->FinalRot);
40794078
4080- geVec3d_Clear (&FinalRot);
4079+ geVec3d_Clear (&App->CLSB_Doc->FinalRot);
40814080
40824081 // Find the camera entity and update the rendered view's camera position
40834082 {
@@ -4130,7 +4129,7 @@
41304129 CEntityArray *Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
41314130 CEntity *pEnt;
41324131
4133- if (mCurrentTool==ID_TOOLS_BRUSH_MOVEROTATEBRUSH)
4132+ if (App->CLSB_Doc->mCurrentTool==ID_TOOLS_BRUSH_MOVEROTATEBRUSH)
41344133 {
41354134 if ((GetSelState()==ONEENTITYONLY) && Level_UseGrid (App->CLSB_Doc->pLevel))
41364135 {
@@ -4162,13 +4161,13 @@
41624161 }
41634162 else
41644163 {
4165- if(mCurrentEntity < 0) //template
4164+ if(App->CLSB_Doc->mCurrentEntity < 0) //template
41664165 {
41674166 pEnt = &mRegularEntity;
41684167 }
41694168 else
41704169 {
4171- pEnt = &(*Entities)[mCurrentEntity];
4170+ pEnt = &(*Entities)[App->CLSB_Doc->mCurrentEntity];
41724171 }
41734172
41744173 SnapSize = 1.0f;
@@ -4317,11 +4316,11 @@
43174316 {
43184317 BOOL Redraw =FALSE;
43194318
4320- if(mModeTool==ID_TOOLS_CAMERA)
4319+ if(App->CLSB_Doc->mModeTool==ID_TOOLS_CAMERA)
43214320 {
4322- mCurrentTool =CURTOOL_NONE;
4321+ App->CLSB_Doc->mCurrentTool =CURTOOL_NONE;
43234322 mShowSelectedBrushes=(mAdjustMode==ADJUST_MODE_BRUSH);
4324- mShowSelectedFaces =(mAdjustMode==ADJUST_MODE_FACE);
4323+ App->CLSB_Doc->mShowSelectedFaces =(mAdjustMode==ADJUST_MODE_FACE);
43254324 App->CLSB_Doc->UpdateAllViews(UAV_ALL3DVIEWS, NULL);
43264325 return;
43274326 }
@@ -4329,7 +4328,7 @@
43294328 switch(mAdjustMode)
43304329 {
43314330 case ADJUST_MODE_BRUSH :
4332- mShowSelectedFaces =FALSE;
4331+ App->CLSB_Doc->mShowSelectedFaces =FALSE;
43334332 mShowSelectedBrushes=TRUE;
43344333
43354334 App->CLSB_Doc->UpdateSelected();
@@ -4337,7 +4336,7 @@
43374336 break;
43384337
43394338 case ADJUST_MODE_FACE :
4340- mShowSelectedFaces =TRUE;
4339+ App->CLSB_Doc->mShowSelectedFaces =TRUE;
43414340 mShowSelectedBrushes=FALSE;
43424341
43434342 App->CLSB_Doc->UpdateSelected();
@@ -4349,39 +4348,39 @@
43494348 break;
43504349 }
43514350
4352- switch(mCurrentTool)
4351+ switch(App->CLSB_Doc->mCurrentTool)
43534352 {
43544353 case ID_TOOLS_BRUSH_MOVEROTATEBRUSH:
4355- if(mModeTool!=ID_TOOLS_TEMPLATE)
4354+ if(App->CLSB_Doc->mModeTool!=ID_TOOLS_TEMPLATE)
43564355 {
4357- mShowSelectedFaces =FALSE;
4356+ App->CLSB_Doc->mShowSelectedFaces =FALSE;
43584357 mShowSelectedBrushes=TRUE;
43594358 Redraw =TRUE;
43604359 }
43614360 else
43624361 {
4363- mShowSelectedFaces =FALSE;
4362+ App->CLSB_Doc->mShowSelectedFaces =FALSE;
43644363 mShowSelectedBrushes=FALSE;
43654364 }
43664365 break;
43674366
43684367 case ID_TOOLS_BRUSH_SCALEBRUSH:
4369- if(mModeTool!=ID_TOOLS_TEMPLATE)
4368+ if(App->CLSB_Doc->mModeTool!=ID_TOOLS_TEMPLATE)
43704369 {
43714370 Redraw =TRUE;
4372- mShowSelectedFaces =FALSE;
4371+ App->CLSB_Doc->mShowSelectedFaces =FALSE;
43734372 mShowSelectedBrushes=TRUE;
43744373 }
43754374 else
43764375 {
4377- mShowSelectedFaces =FALSE;
4376+ App->CLSB_Doc->mShowSelectedFaces =FALSE;
43784377 mShowSelectedBrushes=FALSE;
43794378 }
43804379 break;
43814380
43824381 }
4383- if(mModeTool==ID_TOOLS_TEMPLATE && TempEnt)
4384- mCurrentEntity=-1;
4382+ if(App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE && TempEnt)
4383+ App->CLSB_Doc->mCurrentEntity=-1;
43854384
43864385 Redraw =TRUE;
43874386 if(Redraw)
@@ -4439,8 +4438,8 @@
44394438
44404439 void CFusionDoc::DoGeneralSelect (void)
44414440 {
4442- mCurrentTool =CURTOOL_NONE;
4443- mModeTool =ID_GENERALSELECT;
4441+ App->CLSB_Doc->mCurrentTool =CURTOOL_NONE;
4442+ App->CLSB_Doc->mModeTool =ID_GENERALSELECT;
44444443 ConfigureCurrentTool();
44454444 //mpMainFrame->m_wndTabControls->m_pBrushEntityDialog->Update(this);
44464445 }
@@ -4447,7 +4446,7 @@
44474446
44484447 void CFusionDoc::OnUpdateGeneralselect(CCmdUI* pCmdUI)
44494448 {
4450- pCmdUI->SetCheck ((mModeTool == ID_GENERALSELECT) ? 1 : 0);
4449+ pCmdUI->SetCheck ((App->CLSB_Doc->mModeTool == ID_GENERALSELECT) ? 1 : 0);
44514450 }
44524451
44534452 static geBoolean fdocSelectBrushesFromFaces (Brush *pBrush, void *lParam)
@@ -4775,11 +4774,11 @@
47754774 {
47764775 App->CLSB_Doc->mLastOp =BRUSH_SHEAR;
47774776
4778- if(mModeTool == ID_TOOLS_TEMPLATE)
4777+ if(App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
47794778 {
47804779 Brush_Destroy(&CurBrush);
47814780 CurBrush =BTemplate =Brush_Clone(TempShearTemplate);
4782- Brush_ShearFixed(CurBrush, dx, dy, sides, inidx, &FinalScale, &ScaleNum);
4781+ Brush_ShearFixed(CurBrush, dx, dy, sides, inidx, &App->CLSB_Doc->FinalScale, &App->CLSB_Doc->ScaleNum);
47834782 }
47844783 else
47854784 {
@@ -4794,7 +4793,7 @@
47944793 Brush *pBrush;
47954794
47964795 pBrush = SelBrushList_GetBrush (App->CLSB_Doc->pTempSelBrushes, i);
4797- Brush_ShearFixed(pBrush, dx, dy, sides, inidx, &FinalScale, &ScaleNum);
4796+ Brush_ShearFixed(pBrush, dx, dy, sides, inidx, &App->CLSB_Doc->FinalScale, &App->CLSB_Doc->ScaleNum);
47984797 }
47994798 }
48004799
@@ -4818,13 +4817,13 @@
48184817 bsnap = Level_GetGridSnapSize (App->CLSB_Doc->pLevel);
48194818 }
48204819
4821- if(mModeTool==ID_TOOLS_TEMPLATE)
4820+ if(App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE)
48224821 {
48234822 if(TempShearTemplate) //can get here without shearing
48244823 { //by rapid clicking
48254824 Brush_Destroy(&CurBrush);
48264825 CurBrush =BTemplate =Brush_Clone(TempShearTemplate);
4827- Brush_ShearFinal(CurBrush, sides, inidx, &FinalScale);
4826+ Brush_ShearFinal(CurBrush, sides, inidx, &App->CLSB_Doc->FinalScale);
48284827
48294828 //check which side of the bounds changed
48304829 bx1 =Brush_GetBoundingBox(CurBrush);
@@ -4862,7 +4861,7 @@
48624861 continue;
48634862 // end change
48644863
4865- Brush_ShearFinal(pBrush, sides, inidx, &FinalScale);
4864+ Brush_ShearFinal(pBrush, sides, inidx, &App->CLSB_Doc->FinalScale);
48664865
48674866 //check which side of the bounds changed
48684867 bx1 =Brush_GetBoundingBox(pBrush);
@@ -5311,7 +5310,7 @@
53115310 if( NewGroupId != 0 ) // You can't add the default group
53125311 {
53135312 Group_SetName( Groups, NewGroupId, szName ) ;
5314- mCurrentGroup = NewGroupId;
5313+ App->CLSB_Doc->mCurrentGroup = NewGroupId;
53155314 AddSelToGroup() ;
53165315 }//Good new Group ID
53175316 else
@@ -5331,7 +5330,7 @@
53315330 )
53325331 {// Fill brush group combo box with group names and IDs
53335332 int CurSel = LB_ERR;
5334- GroupList_FillCombobox( Level_GetGroups (App->CLSB_Doc->pLevel), &cb, mCurrentGroup ) ;
5333+ GroupList_FillCombobox( Level_GetGroups (App->CLSB_Doc->pLevel), &cb, App->CLSB_Doc->mCurrentGroup ) ;
53355334 return CurSel;
53365335 }
53375336
@@ -5363,7 +5362,7 @@
53635362 int NumSelBrushes = SelBrushList_GetSize (pSelBrushes);
53645363
53655364 entData.Groups = Level_GetGroups (App->CLSB_Doc->pLevel);
5366- entData.CurrentGroup = mCurrentGroup;
5365+ entData.CurrentGroup = App->CLSB_Doc->mCurrentGroup;
53675366
53685367 // tag all selected brushes with this group id...
53695368 for (int i = 0; i < NumSelBrushes; i++)
@@ -5375,7 +5374,7 @@
53755374 if(strstr(App->CL_Brush->Brush_GetName(pBrush),".act")!=NULL)
53765375 continue;
53775376 // end change
5378- Group_AddBrush (entData.Groups, mCurrentGroup, pBrush);
5377+ Group_AddBrush (entData.Groups, App->CLSB_Doc->mCurrentGroup, pBrush);
53795378 }
53805379 // tag all selected entities with this group id...
53815380 Level_EnumEntities (App->CLSB_Doc->pLevel, &entData, ::fdocAddEntityToGroupCallback);
@@ -5408,7 +5407,7 @@
54085407 int NumSelBrushes = SelBrushList_GetSize (pSelBrushes);
54095408
54105409 entData.Groups = Level_GetGroups (App->CLSB_Doc->pLevel);
5411- entData.CurrentGroup = mCurrentGroup;
5410+ entData.CurrentGroup = App->CLSB_Doc->mCurrentGroup;
54125411
54135412 for(int i = 0; i < NumSelBrushes; i++)
54145413 {
@@ -5415,9 +5414,9 @@
54155414 Brush *pBrush;
54165415
54175416 pBrush = SelBrushList_GetBrush (pSelBrushes, i);
5418- if( Brush_GetGroupId(pBrush) == mCurrentGroup )
5417+ if( Brush_GetGroupId(pBrush) == App->CLSB_Doc->mCurrentGroup )
54195418 {
5420- Group_RemoveBrush( entData.Groups, mCurrentGroup, pBrush );
5419+ Group_RemoveBrush( entData.Groups, App->CLSB_Doc->mCurrentGroup, pBrush );
54215420 }
54225421 }
54235422
@@ -5444,8 +5443,8 @@
54445443
54455444 BOOL CFusionDoc::OneBrushSelectedOnly(void)
54465445 {
5447- return ((mModeTool==ID_TOOLS_TEMPLATE) ||
5448- ((SelBrushList_GetSize (pSelBrushes)==1) && (NumSelEntities == 0) &&
5446+ return ((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE) ||
5447+ ((SelBrushList_GetSize (pSelBrushes)==1) && (App->CLSB_Doc->NumSelEntities == 0) &&
54495448 (SelFaceList_GetSize (pSelFaces) == 0)));
54505449 }
54515450
@@ -5453,10 +5452,10 @@
54535452 {
54545453 BOOL EnableFlag;
54555454
5456- EnableFlag = ((mModeTool==ID_GENERALSELECT) &&
5455+ EnableFlag = ((App->CLSB_Doc->mModeTool==ID_GENERALSELECT) &&
54575456 (SelBrushList_GetSize (pSelBrushes)==1) &&
54585457 (SelFaceList_GetSize (pSelFaces) == 0) &&
5459- (NumSelEntities == 0));
5458+ (App->CLSB_Doc->NumSelEntities == 0));
54605459 pCmdUI->Enable (EnableFlag);
54615460 }
54625461
@@ -5742,9 +5741,9 @@
57425741 bsnap = Level_GetGridSnapSize (App->CLSB_Doc->pLevel);
57435742 }
57445743
5745- if(mModeTool == ID_TOOLS_TEMPLATE)
5744+ if(App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
57465745 {
5747- Brush_SnapScaleNearest(CurBrush, bsnap, sides, inidx, &FinalScale, &ScaleNum);
5746+ Brush_SnapScaleNearest(CurBrush, bsnap, sides, inidx, &App->CLSB_Doc->FinalScale, &App->CLSB_Doc->ScaleNum);
57485747 }
57495748 else
57505749 {
@@ -5754,7 +5753,7 @@
57545753 for (i = 0; i < NumBrushes; ++i)
57555754 {
57565755 Brush *pBrush = SelBrushList_GetBrush (App->CLSB_Doc->pTempSelBrushes, i);
5757- Brush_SnapScaleNearest(pBrush, bsnap, sides, inidx, &FinalScale, &ScaleNum);
5756+ Brush_SnapScaleNearest(pBrush, bsnap, sides, inidx, &App->CLSB_Doc->FinalScale, &App->CLSB_Doc->ScaleNum);
57585757 }
57595758 }
57605759 }
@@ -6735,7 +6734,7 @@
67356734 }
67366735
67376736 // update textures tab
6738- mCurTextureSelection = 0;
6737+ App->CLSB_Doc->mCurTextureSelection = 0;
67396738 App->CL_TextureDialog->Fill_ListBox();
67406739
67416740 // update all brush faces
@@ -7873,11 +7872,11 @@
78737872 if(p->IsSelected())
78747873 break;
78757874 }
7876- mCurrentEntity = i;
7877- if(mCurrentEntity > Entities->GetSize()-1 )
7875+ App->CLSB_Doc->mCurrentEntity = i;
7876+ if(App->CLSB_Doc->mCurrentEntity > Entities->GetSize()-1 )
78787877 return NULL;
78797878
7880- pEnt = &(*Entities)[mCurrentEntity];
7879+ pEnt = &(*Entities)[App->CLSB_Doc->mCurrentEntity];
78817880
78827881 return pEnt;
78837882 }
@@ -7989,12 +7988,12 @@
79897988 {
79907989 int NumSelBrushes = SelBrushList_GetSize( pSelBrushes );
79917990
7992- if ((!NumSelBrushes) && (!NumSelEntities))
7991+ if ((!NumSelBrushes) && (!App->CLSB_Doc->NumSelEntities))
79937992 return;
79947993
79957994 geVec3d EntitySelectionCenter = {0.0f,0.0f,0.0f};
79967995
7997- if (NumSelEntities)
7996+ if (App->CLSB_Doc->NumSelEntities)
79987997 {
79997998 CEntityArray *Entities;
80007999 Entities = Level_GetEntities (App->CLSB_Doc->pLevel);
@@ -8018,7 +8017,7 @@
80188017
80198018 geVec3d_Add(&EntitySelectionCenter, &BrushSelectionCenter, &CurrentThingPos);
80208019
8021- geVec3d_Scale(&CurrentThingPos, 1/(float)((NumSelEntities)+NumSelBrushes), &CurrentThingPos);
8020+ geVec3d_Scale(&CurrentThingPos, 1/(float)((App->CLSB_Doc->NumSelEntities)+NumSelBrushes), &CurrentThingPos);
80228021 }
80238022
80248023 if (geVec3d_DistanceBetween(&CurrentThingPos, &(pCameraEntity->mOrigin)) > 0)
@@ -8078,9 +8077,9 @@
80788077 UpdateBrushAttributesDlg();
80798078 UpdateFaceAttributesDlg();
80808079
8081- mModeTool = ID_TOOLS_TEMPLATE;
8080+ App->CLSB_Doc->mModeTool = ID_TOOLS_TEMPLATE;
80828081
8083- mCurrentTool = ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
8082+ App->CLSB_Doc->mCurrentTool = ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
80848083
80858084 SetAdjustmentMode( ADJUST_MODE_FACE ) ;
80868085 //ConfigureCurrentTool();
@@ -8140,7 +8139,7 @@
81408139
81418140 void CFusionDoc::OnUpdateModifyMove(CCmdUI* pCmdUI)
81428141 {
8143- if ((GetSelState()!=NOSELECTIONS) || ((mModeTool==ID_TOOLS_TEMPLATE) && !PlaceObjectFlag))
8142+ if ((GetSelState()!=NOSELECTIONS) || ((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE) && !PlaceObjectFlag))
81448143 pCmdUI->Enable( TRUE );
81458144 else
81468145 pCmdUI->Enable( FALSE );
@@ -8168,7 +8167,7 @@
81688167
81698168 void CFusionDoc::OnUpdateModifyScale(CCmdUI* pCmdUI)
81708169 {
8171- if ((GetSelState()!=NOSELECTIONS) || ((mModeTool==ID_TOOLS_TEMPLATE) && !PlaceObjectFlag))
8170+ if ((GetSelState()!=NOSELECTIONS) || ((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE) && !PlaceObjectFlag))
81728171 pCmdUI->Enable( TRUE );
81738172 else
81748173 pCmdUI->Enable( FALSE );
--- WorldEditor/WorldEditor/FUSIONDoc.h (revision 2541)
+++ WorldEditor/WorldEditor/FUSIONDoc.h (revision 2542)
@@ -111,15 +111,7 @@
111111 DECLARE_SERIAL(CFusionDoc);
112112
113113 public:
114- //Level *pLevel;
115-
116- //states and stats
117- int NumSelEntities;
118-
119- int mShowSelectedFaces;
120- int mCurrentTool, mCurrentBitmap, mShowBrush, mModeTool;
121- int mShowEntities, mCurrentGroup, mCurTextureSelection;
122- int IsNewDocument, mActiveView;
114+
123115 fdocAdjustEnum mAdjustMode;
124116 int mShowSelectedBrushes;
125117 int mLockAxis;
@@ -137,9 +129,7 @@
137129
138130 GNode *mWorldBsp;
139131 CEntity mRegularEntity;
140- int mCurrentEntity, ScaleNum;
141- geVec3d FinalRot, FinalScale;
142-
132+
143133 //dialogs / controls
144134 CFrameWnd *mpActiveViewFrame;
145135 CMainFrame *mpMainFrame;
--- WorldEditor/WorldEditor/FUSIONView.cpp (revision 2541)
+++ WorldEditor/WorldEditor/FUSIONView.cpp (revision 2542)
@@ -158,7 +158,7 @@
158158 return;
159159 }
160160
161- if ((pDoc->GetSelState()!=NOSELECTIONS) || (pDoc->mModeTool==ID_TOOLS_TEMPLATE))
161+ if ((pDoc->GetSelState()!=NOSELECTIONS) || (App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE))
162162 pCmdUI->Enable( TRUE );
163163 else
164164 pCmdUI->Enable( FALSE );
@@ -205,7 +205,7 @@
205205 }
206206
207207 // We've computed the delta, so move the thing...
208- if (pDoc->mModeTool == ID_TOOLS_TEMPLATE)
208+ if (App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE)
209209 pDoc->MoveTemplateBrush (&MoveDelta);
210210 else
211211 App->CLSB_Doc->MoveSelectedBrushList(pDoc->pSelBrushes, &MoveDelta);
@@ -675,7 +675,7 @@
675675
676676 if(this==GetParentFrame()->GetActiveView())
677677 {
678- pDoc->mActiveView =mViewType;
678+ App->CLSB_Doc->mActiveView =mViewType;
679679 }
680680
681681 dx = (RealCursorPosition.x - mStartPoint.x);
@@ -1299,16 +1299,16 @@
12991299
13001300 if(Tool == ID_TOOLS_BRUSH_SCALEBRUSH)
13011301 {
1302- pDoc->ScaleNum =0;
1302+ App->CLSB_Doc->ScaleNum =0;
13031303
1304- geVec3d_Set (&pDoc->FinalScale, 1.0f, 1.0f, 1.0f);
1304+ geVec3d_Set (&App->CLSB_Doc->FinalScale, 1.0f, 1.0f, 1.0f);
13051305 pDoc->TempCopySelectedBrushes();
13061306 }
13071307 else if(Tool == ID_TOOLS_BRUSH_SHEARBRUSH)
13081308 {
1309- pDoc->ScaleNum =0;
1309+ App->CLSB_Doc->ScaleNum =0;
13101310
1311- geVec3d_Clear (&pDoc->FinalScale);
1311+ geVec3d_Clear (&App->CLSB_Doc->FinalScale);
13121312 if (ModeTool == ID_TOOLS_TEMPLATE)
13131313 {
13141314 pDoc->TempShearTemplate =Brush_Clone(pDoc->CurBrush);
@@ -1375,7 +1375,7 @@
13751375
13761376 if ((Tool == ID_TOOLS_BRUSH_MOVEROTATEBRUSH) || (Tool == ID_TOOLS_BRUSH_MOVESELECTEDBRUSHES))
13771377 {
1378- geVec3d_Set (&(pDoc->FinalRot), 0.0f, 0.0f, 0.0f);
1378+ geVec3d_Set (&(App->CLSB_Doc->FinalRot), 0.0f, 0.0f, 0.0f);
13791379 pDoc->TempCopySelectedBrushes();
13801380 pDoc->SetModifiedFlag();
13811381 }
@@ -1832,11 +1832,8 @@
18321832
18331833 void CFusionView::OnToolsBrushShowbrush()
18341834 {
1835-
1836- CFusionDoc* pDoc = GetDocument();
1837-
18381835 // toggle brush
1839- pDoc->mShowBrush ^= 1;
1836+ App->CLSB_Doc->mShowBrush ^= 1;
18401837
18411838 // redraw the screen
18421839 App->CLSB_Doc->UpdateAllViews(UAV_ALL3DVIEWS, NULL);
@@ -1844,9 +1841,7 @@
18441841
18451842 void CFusionView::OnUpdateToolsBrushShowbrush(CCmdUI* pCmdUI)
18461843 {
1847- CFusionDoc* pDoc = GetDocument();
1848-
1849- pCmdUI->SetCheck (pDoc->mShowBrush);
1844+ pCmdUI->SetCheck (App->CLSB_Doc->mShowBrush);
18501845 }
18511846
18521847
@@ -2045,9 +2040,7 @@
20452040
20462041 int CFusionView::GetTool(void)
20472042 {
2048- CFusionDoc* pDoc = GetDocument();
2049-
2050- return pDoc->mCurrentTool;
2043+ return App->CLSB_Doc->mCurrentTool;
20512044 }
20522045
20532046 fdocAdjustEnum CFusionView::GetAdjustMode(void)
@@ -2059,16 +2052,12 @@
20592052
20602053 int CFusionView::GetModeTool(void)
20612054 {
2062- CFusionDoc* pDoc = GetDocument();
2063-
2064- return pDoc->mModeTool;
2055+ return App->CLSB_Doc->mModeTool;
20652056 }
20662057
20672058 void CFusionView::SetTool(int Tool)
20682059 {
2069- CFusionDoc* pDoc = GetDocument();
2070-
2071- pDoc->mCurrentTool = Tool;
2060+ App->CLSB_Doc->mCurrentTool = Tool;
20722061 }
20732062
20742063 void CFusionView::SetAdjustMode(fdocAdjustEnum Mode)
@@ -2081,9 +2070,7 @@
20812070
20822071 void CFusionView::SetModeTool(int Tool)
20832072 {
2084- CFusionDoc* pDoc = GetDocument();
2085-
2086- pDoc->mModeTool = Tool;
2073+ App->CLSB_Doc->mModeTool = Tool;
20872074 }
20882075
20892076
@@ -2125,7 +2112,7 @@
21252112 {
21262113 CFusionDoc* pDoc = GetDocument();
21272114
2128- if( (pDoc->mCurrentGroup == 0) || (pDoc->GetSelState() == NOSELECTIONS) )
2115+ if( (App->CLSB_Doc->mCurrentGroup == 0) || (pDoc->GetSelState() == NOSELECTIONS) )
21292116 pCmdUI->Enable( FALSE ) ;
21302117 else
21312118 pCmdUI->Enable( TRUE ) ;
@@ -2675,7 +2662,7 @@
26752662
26762663 if (NumEntities)
26772664 {
2678- if (pDoc->NumSelEntities == 0)
2665+ if (App->CLSB_Doc->NumSelEntities == 0)
26792666 {
26802667 pDoc->SelectEntity(&(*Entities)[0]);
26812668 App->CLSB_Doc->UpdateSelected ();
@@ -2743,7 +2730,7 @@
27432730
27442731 if (NumEntities)
27452732 {
2746- if (pDoc->NumSelEntities == 0)
2733+ if (App->CLSB_Doc->NumSelEntities == 0)
27472734 {
27482735 pDoc->SelectEntity(&(*Entities)[0]);
27492736 App->CLSB_Doc->UpdateSelected ();
@@ -2977,7 +2964,7 @@
29772964 {
29782965 CFusionDoc *pDoc = GetDocument ();
29792966 if (pDoc) {
2980- if ((pDoc->GetSelState()!=NOSELECTIONS) || (pDoc->mModeTool == ID_TOOLS_TEMPLATE))
2967+ if ((pDoc->GetSelState()!=NOSELECTIONS) || (App->CLSB_Doc->mModeTool == ID_TOOLS_TEMPLATE))
29812968 pCmdUI->Enable( TRUE );
29822969 else
29832970 pCmdUI->Enable( FALSE );
@@ -3179,7 +3166,7 @@
31793166 return;
31803167 }
31813168
3182- if ((pDoc->GetSelState()!=NOSELECTIONS) || ((pDoc->mModeTool==ID_TOOLS_TEMPLATE) && !pDoc->PlaceObjectFlag))
3169+ if ((pDoc->GetSelState()!=NOSELECTIONS) || ((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE) && !pDoc->PlaceObjectFlag))
31833170 pCmdUI->Enable( TRUE );
31843171 else
31853172 pCmdUI->Enable( FALSE );
--- WorldEditor/WorldEditor/F_View.cpp (revision 2541)
+++ WorldEditor/WorldEditor/F_View.cpp (revision 2542)
@@ -555,7 +555,7 @@
555555 brushDrawData.FlagTest = fdocBrushNotDetail;
556556 brushDrawData.GroupId = GroupId;
557557 if( (GroupVis == Group_ShowAll) ||
558- ((GroupVis == Group_ShowCurrent) && (GroupId == m_pDoc->mCurrentGroup)) ||
558+ ((GroupVis == Group_ShowCurrent) && (GroupId == App->CLSB_Doc->mCurrentGroup)) ||
559559 ((GroupVis == Group_ShowVisible) && (Group_IsVisible (Groups, GroupId)))
560560 )
561561 {
@@ -567,7 +567,7 @@
567567 SelectObject(MemoryhDC, PenThisGroup);
568568
569569 Level_EnumLeafBrushes (App->CLSB_Doc->pLevel, &brushDrawData, BrushDraw2); // Draw Brushes
570- if( m_pDoc->mShowEntities == GE_TRUE )
570+ if(App->CLSB_Doc->mShowEntities == GE_TRUE )
571571 {
572572 //Level_EnumEntities (m_pDoc->pLevel, &brushDrawData, EntityDraw);
573573 }
@@ -668,8 +668,8 @@
668668 //pDC->SelectObject (&PenTemplate);
669669 SelectObject(MemoryhDC, PenTemplate2);
670670
671- if((m_pDoc->mModeTool==ID_TOOLS_TEMPLATE)||
672- (m_pDoc->mModeTool==ID_TOOLS_CAMERA && m_pDoc->GetSelState()==NOSELECTIONS))
671+ if((App->CLSB_Doc->mModeTool==ID_TOOLS_TEMPLATE)||
672+ (App->CLSB_Doc->mModeTool==ID_TOOLS_CAMERA && m_pDoc->GetSelState()==NOSELECTIONS))
673673 {
674674 if(!m_pDoc->TempEnt)
675675 {
--- WorldEditor/WorldEditor/MainFrm.cpp (revision 2541)
+++ WorldEditor/WorldEditor/MainFrm.cpp (revision 2542)
@@ -164,11 +164,11 @@
164164 int NumSelFaces = SelFaceList_GetSize (pDoc->pSelFaces);
165165 int NumSelBrushes = SelBrushList_GetSize (pDoc->pSelBrushes);
166166
167- etxt.Format("Entities: %d", pDoc->NumSelEntities);
167+ etxt.Format("Entities: %d", App->CLSB_Doc->NumSelEntities);
168168 btxt.Format(" Brushes: %d", NumSelBrushes);
169169 ftxt.Format(" Faces: %d", NumSelFaces);
170170 Text.Format("%s%s%s",
171- pDoc->NumSelEntities ? etxt : "",
171+ App->CLSB_Doc->NumSelEntities ? etxt : "",
172172 NumSelBrushes ? btxt : "",
173173 NumSelFaces ? ftxt : "");
174174
@@ -1060,13 +1060,12 @@
10601060
10611061 void CMainFrame::OnSelchangeGroupList ()
10621062 {
1063- CFusionDoc *pDoc = GetCurrentDoc ();
10641063 int CurSel;
10651064
10661065 CurSel = m_wndGroupBar.m_comboBox.GetCurSel ();
10671066 if (CurSel != LB_ERR)
10681067 {
1069- pDoc->mCurrentGroup = m_wndGroupBar.m_comboBox.GetItemData (CurSel);
1068+ App->CLSB_Doc->mCurrentGroup = m_wndGroupBar.m_comboBox.GetItemData (CurSel);
10701069 App->CL_TabsGroups_Dlg->Fill_ListBox(); // hgtterry App->CL_TabsGroups_Dlg->Fill_ListBox()
10711070 }
10721071 }
--- WorldEditor/WorldEditor/SB_Dialogs.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_Dialogs.cpp (revision 2542)
@@ -39,6 +39,8 @@
3939 Mouse_Fast = 0;
4040
4141 Canceled = 0;
42+ TrueFlase = 0;
43+
4244 YesNoCancel_Result = 0;
4345
4446 mWhatList = 0;
@@ -905,6 +907,146 @@
905907 }
906908
907909 // *************************************************************************
910+// * TrueFlase Terry Bernie *
911+// *************************************************************************
912+void SB_Dialogs::Dialog_TrueFlase()
913+{
914+ if (App->CLSB_Equity->EquitySB_Dialog_Visible == 0)
915+ {
916+ DialogBox(App->hInst, (LPCTSTR)IDD_SB_TRUEFALSE, App->MainHwnd, (DLGPROC)Dialog_TrueFlase_Proc);
917+ }
918+ else
919+ {
920+ DialogBox(App->hInst, (LPCTSTR)IDD_SB_TRUEFALSE, App->Equity_Dlg_hWnd, (DLGPROC)Dialog_TrueFlase_Proc);
921+ }
922+}
923+// *************************************************************************
924+// * Dialog_TrueFlase_Proc *
925+// *************************************************************************
926+LRESULT CALLBACK SB_Dialogs::Dialog_TrueFlase_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
927+{
928+ switch (message)
929+ {
930+ case WM_INITDIALOG:
931+ {
932+ SendDlgItemMessage(hDlg, IDC_TITLENAME, WM_SETFONT, (WPARAM)App->Font_Arial20, MAKELPARAM(TRUE, 0));
933+ SendDlgItemMessage(hDlg, IDC_CHECKNO, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
934+ SendDlgItemMessage(hDlg, IDC_CHECKYES, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
935+
936+ SendDlgItemMessage(hDlg, IDOK, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
937+ SendDlgItemMessage(hDlg, IDCANCEL, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
938+
939+ SetDlgItemText(hDlg, IDC_TITLENAME, (LPCTSTR)App->CLSB_Dialogs->btext);
940+
941+
942+ if (App->CLSB_Dialogs->TrueFlase == 1)
943+ {
944+ HWND temp = GetDlgItem(hDlg, IDC_CHECKYES);
945+ SendMessage(temp, BM_SETCHECK, 1, 0);
946+ temp = GetDlgItem(hDlg, IDC_CHECKNO);
947+ SendMessage(temp, BM_SETCHECK, 0, 0);
948+ }
949+ else
950+ {
951+ HWND temp = GetDlgItem(hDlg, IDC_CHECKYES);
952+ SendMessage(temp, BM_SETCHECK, 0, 0);
953+ temp = GetDlgItem(hDlg, IDC_CHECKNO);
954+ SendMessage(temp, BM_SETCHECK, 1, 0);
955+ }
956+ return TRUE;
957+ }
958+ case WM_CTLCOLORSTATIC:
959+ {
960+ if (GetDlgItem(hDlg, IDC_TITLENAME) == (HWND)lParam)
961+ {
962+ SetBkColor((HDC)wParam, RGB(0, 255, 0));
963+ SetTextColor((HDC)wParam, RGB(0, 0, 255));
964+ SetBkMode((HDC)wParam, TRANSPARENT);
965+ return (UINT)App->AppBackground;
966+ }
967+ if (GetDlgItem(hDlg, IDC_CHECKYES) == (HWND)lParam)
968+ {
969+ SetBkColor((HDC)wParam, RGB(0, 255, 0));
970+ SetTextColor((HDC)wParam, RGB(0, 0, 255));
971+ SetBkMode((HDC)wParam, TRANSPARENT);
972+ return (UINT)App->AppBackground;
973+ }
974+ if (GetDlgItem(hDlg, IDC_CHECKNO) == (HWND)lParam)
975+ {
976+ SetBkColor((HDC)wParam, RGB(0, 255, 0));
977+ SetTextColor((HDC)wParam, RGB(0, 0, 255));
978+ SetBkMode((HDC)wParam, TRANSPARENT);
979+ return (UINT)App->AppBackground;
980+ }
981+ return FALSE;
982+ }
983+
984+ case WM_CTLCOLORDLG:
985+ {
986+ return (LONG)App->AppBackground;
987+ }
988+
989+ case WM_NOTIFY:
990+ {
991+ LPNMHDR some_item = (LPNMHDR)lParam;
992+
993+ if (some_item->idFrom == IDOK && some_item->code == NM_CUSTOMDRAW)
994+ {
995+ LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)some_item;
996+ App->Custom_Button_Normal(item);
997+ return CDRF_DODEFAULT;
998+ }
999+
1000+ if (some_item->idFrom == IDCANCEL && some_item->code == NM_CUSTOMDRAW)
1001+ {
1002+ LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)some_item;
1003+ App->Custom_Button_Normal(item);
1004+ return CDRF_DODEFAULT;
1005+ }
1006+
1007+ return CDRF_DODEFAULT;
1008+ }
1009+
1010+ case WM_COMMAND:
1011+ if (LOWORD(wParam) == IDC_CHECKYES)
1012+ {
1013+ HWND temp = GetDlgItem(hDlg, IDC_CHECKYES);
1014+ SendMessage(temp, BM_SETCHECK, 1, 0);
1015+ temp = GetDlgItem(hDlg, IDC_CHECKNO);
1016+ SendMessage(temp, BM_SETCHECK, 0, 0);
1017+ App->CLSB_Dialogs->TrueFlase = 1;
1018+ }
1019+
1020+ if (LOWORD(wParam) == IDC_CHECKNO)
1021+ {
1022+ HWND temp = GetDlgItem(hDlg, IDC_CHECKNO);
1023+ SendMessage(temp, BM_SETCHECK, 1, 0);
1024+ temp = GetDlgItem(hDlg, IDC_CHECKYES);
1025+ SendMessage(temp, BM_SETCHECK, 0, 0);
1026+ App->CLSB_Dialogs->TrueFlase = 0;
1027+ }
1028+
1029+ if (LOWORD(wParam) == IDOK)
1030+ {
1031+ App->CLSB_Dialogs->Canceled = 0;
1032+ EndDialog(hDlg, LOWORD(wParam));
1033+ return TRUE;
1034+ }
1035+
1036+ if (LOWORD(wParam) == IDCANCEL)
1037+ {
1038+ App->CLSB_Dialogs->Canceled = 1;
1039+ EndDialog(hDlg, LOWORD(wParam));
1040+ return TRUE;
1041+ }
1042+
1043+ break;
1044+
1045+ }
1046+ return FALSE;
1047+}
1048+
1049+// *************************************************************************
9081050 // * UpdateGroupDetails:- Terry and Hazel Flanigan 2023 *
9091051 // *************************************************************************
9101052 void SB_Dialogs::UpdateGroupDetails(HWND List)
--- WorldEditor/WorldEditor/SB_Dialogs.h (revision 2541)
+++ WorldEditor/WorldEditor/SB_Dialogs.h (revision 2542)
@@ -34,9 +34,12 @@
3434 bool Start_ListData(int WhatList);
3535 void Start_Speed_Camera();
3636 bool Start_Dialog_DropGen();
37+ void Dialog_TrueFlase();
3738
3839 bool Canceled;
40+ bool TrueFlase;
3941
42+
4043 int YesNoCancel_Result;
4144
4245 char MessageString[100];
@@ -52,6 +55,7 @@
5255 static LRESULT CALLBACK ListData_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
5356 static LRESULT CALLBACK Speed_Camera_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
5457 static LRESULT CALLBACK Dialog_DropGen_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
58+ static LRESULT CALLBACK Dialog_TrueFlase_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
5559
5660 void List_SceneData(HWND hDlg);
5761 void List_BoundingBox(HWND hDlg);
--- WorldEditor/WorldEditor/SB_Doc.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_Doc.cpp (revision 2542)
@@ -10,6 +10,18 @@
1010 SB_Doc::SB_Doc(void)
1111 {
1212 pTempSelBrushes = NULL;
13+ mCurrentEntity = -1;
14+ mShowSelectedFaces = FALSE;
15+ IsNewDocument = 1;
16+ mShowEntities = GE_TRUE;
17+ mCurTextureSelection = 1;
18+ mActiveView = -1;
19+ mModeTool = ID_TOOLS_TEMPLATE;
20+ mShowBrush = TRUE;
21+ mCurrentTool = ID_TOOLS_BRUSH_MOVEROTATEBRUSH;
22+ mCurrentBitmap = 0;
23+ NumSelEntities = 0;
24+ mCurrentGroup = 0;
1325 }
1426
1527 SB_Doc::~SB_Doc(void)
@@ -44,7 +56,7 @@
4456
4557 BOOL ReBuild;
4658
47- if (App->m_pDoc->mModeTool == ID_GENERALSELECT)
59+ if (mModeTool == ID_GENERALSELECT)
4860 {
4961 // set wait cursor
5062 SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
@@ -84,7 +96,7 @@
8496 {
8597 if ((*Entities)[Ent].IsCamera() == GE_FALSE) // Exclude Cameras
8698 {
87- if ((*Entities)[Ent].GetGroupId() == App->m_pDoc->mCurrentGroup)
99+ if ((*Entities)[Ent].GetGroupId() == mCurrentGroup)
88100 {
89101 bAlteredCurrentGroup = GE_TRUE;
90102 }
@@ -107,7 +119,7 @@
107119 if (strstr(App->CL_Brush->Brush_GetName(pBrush), ".act") != NULL)
108120 continue;
109121
110- if (Brush_GetGroupId(pBrush) == App->m_pDoc->mCurrentGroup)
122+ if (Brush_GetGroupId(pBrush) == mCurrentGroup)
111123 {
112124 bAlteredCurrentGroup = GE_TRUE;
113125 }
@@ -118,7 +130,7 @@
118130 }
119131
120132 //turn off any operation tools
121- App->m_pDoc->mCurrentTool = CURTOOL_NONE;
133+ mCurrentTool = CURTOOL_NONE;
122134
123135 App->m_pDoc->SetModifiedFlag();
124136 }
@@ -157,7 +169,7 @@
157169 // end change
158170 Entities->RemoveAt(EntityIndex);
159171 App->m_pDoc->SelState &= (~ENTITYCLEAR);
160- App->m_pDoc->SelState |= (App->m_pDoc->NumSelEntities > 1) ? MULTIENTITY : (App->m_pDoc->NumSelEntities + 1) << 7;
172+ App->m_pDoc->SelState |= (NumSelEntities > 1) ? MULTIENTITY : (NumSelEntities + 1) << 7;
161173 }
162174
163175 // *************************************************************************
@@ -281,7 +293,7 @@
281293
282294 App->m_pDoc->TempDeleteSelected();
283295
284- if (App->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
296+ if (mModeTool == ID_TOOLS_TEMPLATE)
285297 {
286298 if (Brush_IsMulti(App->m_pDoc->CurBrush))
287299 {
@@ -301,7 +313,7 @@
301313 if (strstr(App->CL_Brush->Brush_GetName(pBrush), ".act") != NULL)
302314 continue;
303315
304- Brush_ResizeFinal(pBrush, sides, inidx, &App->m_pDoc->FinalScale);
316+ Brush_ResizeFinal(pBrush, sides, inidx, &FinalScale);
305317 if (Brush_IsMulti(pBrush))
306318 {
307319 BrushList_ClearCSGAndHollows((BrushList*)App->CL_Brush->Brush_GetBrushList(pBrush), Brush_GetModelId(pBrush));
@@ -324,7 +336,7 @@
324336
325337 App->m_pDoc->TempDeleteSelected();
326338
327- if (App->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
339+ if (mModeTool == ID_TOOLS_TEMPLATE)
328340 {
329341 if (App->m_pDoc->TempEnt)
330342 {
@@ -434,7 +446,7 @@
434446
435447 App->m_pDoc->DoGeneralSelect();
436448
437- App->m_pDoc->NumSelEntities = 0;
449+ NumSelEntities = 0;
438450 Level_EnumEntities(pLevel, this, fdocSelectEntity);
439451 Level_EnumBrushes(pLevel, this, fdocSelectBrush);
440452
@@ -477,10 +489,10 @@
477489
478490 App->m_pDoc->SelState = (NumSelBrushes > 1) ? MULTIBRUSH : NumSelBrushes;
479491 App->m_pDoc->SelState |= (NumSelFaces > 1) ? MULTIFACE : (NumSelFaces + 1) << 3;
480- App->m_pDoc->SelState |= (App->m_pDoc->NumSelEntities > 1) ? MULTIENTITY : (App->m_pDoc->NumSelEntities + 1) << 7;
492+ App->m_pDoc->SelState |= (NumSelEntities > 1) ? MULTIENTITY : (NumSelEntities + 1) << 7;
481493
482494
483- if (App->m_pDoc->mModeTool == ID_GENERALSELECT)
495+ if (mModeTool == ID_GENERALSELECT)
484496 {
485497 if (App->m_pDoc->GetSelState() & ONEBRUSH)
486498 App->m_pDoc->CurBrush = SelBrushList_GetBrush(App->m_pDoc->pSelBrushes, 0);
@@ -490,7 +502,7 @@
490502
491503 geVec3d_Clear(&SelectedGeoCenter);
492504
493- if (App->m_pDoc->mModeTool == ID_TOOLS_TEMPLATE)
505+ if (mModeTool == ID_TOOLS_TEMPLATE)
494506 {
495507 if (App->m_pDoc->TempEnt)
496508 {
@@ -518,7 +530,7 @@
518530 {
519531 SelBrushList_Center(App->m_pDoc->pSelBrushes, &SelectedGeoCenter);
520532 }
521- else if (App->m_pDoc->NumSelEntities)
533+ else if (NumSelEntities)
522534 {
523535 geVec3d EntitySelectionCenter = { 0.0f,0.0f,0.0f };
524536
@@ -537,7 +549,7 @@
537549 }
538550 }
539551
540- geVec3d_Scale(&EntitySelectionCenter, 1 / (float)(App->m_pDoc->NumSelEntities), &SelectedGeoCenter);
552+ geVec3d_Scale(&EntitySelectionCenter, 1 / (float)(NumSelEntities), &SelectedGeoCenter);
541553 }
542554 }
543555 }
@@ -547,11 +559,11 @@
547559 CEntityArray* Entities = Level_GetEntities(pLevel);
548560
549561 for (i = 0; i < Entities->GetSize() && !((*Entities)[i].IsSelected()); i++);
550- App->m_pDoc->mCurrentEntity = i;
562+ mCurrentEntity = i;
551563 }
552564 else
553565 {
554- App->m_pDoc->mCurrentEntity = -1;
566+ mCurrentEntity = -1;
555567 }
556568
557569 App->m_pDoc->UpdateFaceAttributesDlg();
--- WorldEditor/WorldEditor/SB_Doc.h (revision 2541)
+++ WorldEditor/WorldEditor/SB_Doc.h (revision 2542)
@@ -33,9 +33,16 @@
3333 void MoveSelectedBrushes(geVec3d const* v);
3434 void MoveSelectedBrushList(SelBrushList* pList, geVec3d const* v);
3535
36- int mLastOp;
37- geVec3d SelectedGeoCenter, FinalPos;
36+ int NumSelEntities;
37+ int mShowSelectedFaces;
38+ int mCurrentTool, mCurrentBitmap, mShowBrush, mModeTool;
39+ int mShowEntities, mCurrentGroup, mCurTextureSelection;
40+ int IsNewDocument, mActiveView;
3841
42+ int mLastOp, mCurrentEntity, ScaleNum;
43+
44+ geVec3d SelectedGeoCenter, FinalPos, FinalRot, FinalScale;
45+
3946 SelBrushList* pTempSelBrushes;
4047
4148 Level* pLevel;
--- WorldEditor/WorldEditor/SB_Environment.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_Environment.cpp (revision 2542)
@@ -32,3 +32,756 @@
3232 SB_Environment::~SB_Environment(void)
3333 {
3434 }
35+
36+// *************************************************************************
37+// * V_Set_Environ_Defaults:- Terry and Hazel Flanigan 2023 *
38+// *************************************************************************
39+void SB_Environment::V_Set_Environ_Defaults(int Index)
40+{
41+ Base_Object* V_Object = App->CLSB_Scene->V_Object[Index];
42+
43+ V_Object->Altered = 0;
44+
45+ V_Object->S_Environ[0]->Environment_ID = 0;
46+ strcpy(V_Object->S_Environ[0]->Environment_Name, "Not_Set");
47+
48+ V_Object->S_Environ[0]->Environ_Enabled = 1;
49+
50+ //----------------------- Sound
51+ strcpy(V_Object->S_Environ[0]->Sound_File, "The_Sun.ogg");
52+ V_Object->S_Environ[0]->SndFile = NULL;
53+ V_Object->S_Environ[0]->Play = 0;
54+ V_Object->S_Environ[0]->Loop = 1;
55+ V_Object->S_Environ[0]->SndVolume = 0.5;
56+
57+ //----------------------- Light
58+ V_Object->S_Environ[0]->AmbientColour.x = 0.5;
59+ V_Object->S_Environ[0]->AmbientColour.y = 0.5;
60+ V_Object->S_Environ[0]->AmbientColour.z = 0.5;
61+
62+ V_Object->S_Environ[0]->Light_Position.x = 0;
63+ V_Object->S_Environ[0]->Light_Position.y = 0;
64+ V_Object->S_Environ[0]->Light_Position.z = 0;
65+
66+ // Sky
67+ V_Object->S_Environ[0]->Curvature = 15;
68+ V_Object->S_Environ[0]->Distance = 4000;
69+ V_Object->S_Environ[0]->Enabled = 1;
70+ strcpy(V_Object->S_Environ[0]->Material, "Examples/CloudySky");
71+ V_Object->S_Environ[0]->Tiling = 15;
72+ V_Object->S_Environ[0]->type = 1;
73+
74+ // Fog
75+ V_Object->S_Environ[0]->Fog_On = 1;
76+ V_Object->S_Environ[0]->Fog_Mode = FOG_LINEAR;
77+ V_Object->S_Environ[0]->Fog_Density = 0.001000;
78+ V_Object->S_Environ[0]->Fog_Start = 150;
79+ V_Object->S_Environ[0]->Fog_End = 1000;
80+ V_Object->S_Environ[0]->Fog_Colour = Ogre::Vector3(1, 1, 1);
81+
82+ V_Object->S_Environ[0]->IsMainEnvironment = 0;
83+}
84+
85+// *************************************************************************
86+// * Add_New_Environ_Entiry:- Terry and Hazel Flanigan 2022 *
87+// *************************************************************************
88+bool SB_Environment::Add_New_Environ_Entity(bool FirstOne)
89+{
90+ char B_Name[MAX_PATH];
91+ char ConNum[MAX_PATH];
92+
93+ int Index = App->CLSB_Scene->Object_Count;
94+
95+ App->CLSB_Scene->V_Object[Index] = new Base_Object();
96+ App->CLSB_Scene->V_Object[Index]->S_Environ[0] = new Environ_type;
97+ V_Set_Environ_Defaults(Index);
98+
99+
100+ App->CLSB_Scene->V_Object[Index]->Type = Enums::Bullet_Type_Static;
101+ App->CLSB_Scene->V_Object[Index]->Shape = Enums::Shape_Box;
102+ //App->CLSB_Scene->V_Object[Index]->This_Object_UniqueID = App->CLSB_Scene->UniqueID_Object_Counter; // Unique ID
103+
104+ strcpy(App->CLSB_Scene->V_Object[Index]->Mesh_FileName, "EnvironmentEntity_GD.mesh");
105+
106+ strcpy_s(B_Name, "Environ_");
107+ _itoa(Index, ConNum, 10);
108+ strcat(B_Name, ConNum);
109+ strcpy(App->CLSB_Scene->V_Object[Index]->Mesh_Name, B_Name);
110+
111+ //if (FirstOne == 0)
112+ //{
113+ // Ogre::Vector3 Pos = App->CL_Object->GetPlacement(-50);
114+ // App->SBC_Scene->V_Object[Index]->Mesh_Pos = Pos;
115+ //}
116+ //else
117+ //{
118+ // Ogre::Vector3 Pos = Ogre::Vector3(0, 0, 0);
119+ //}
120+
121+ //Create_Environ_Entity(Index);
122+
123+ HTREEITEM Temp = App->CLSB_FileView->Add_Item(App->CLSB_FileView->FV_Evirons_Folder, App->CLSB_Scene->V_Object[Index]->Mesh_Name, Index, false);
124+ App->CLSB_Scene->V_Object[Index]->FileViewItem = Temp;
125+
126+ App->CLSB_FileView->Set_FolderActive(App->CLSB_FileView->FV_Evirons_Folder);
127+ //App->SBC_FileView->SelectItem(App->SBC_Scene->V_Object[Index]->FileViewItem);
128+
129+ //App->SBC_Scene->UniqueID_Object_Counter++;
130+ App->CLSB_Scene->Object_Count++;
131+
132+ //App->SBC_FileView->Set_FolderActive(App->SBC_FileView->FV_Sounds_Folder);
133+ return 1;
134+}
135+
136+// *************************************************************************
137+// * Set_First_Environment:- Terry and Hazel Flanigan 2022 *
138+// *************************************************************************
139+void SB_Environment::Set_First_Environment(int Index)
140+{
141+ float x = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->AmbientColour.x;
142+ float y = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->AmbientColour.y;
143+ float z = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->AmbientColour.z;
144+
145+ App->CLSB_Ogre->mSceneMgr->setAmbientLight(ColourValue(x, y, z));
146+
147+ if (App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_On == 1)
148+ {
149+ float Start = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Start;
150+ float End = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_End;
151+ float Density = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Density;
152+
153+ float x = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.x;
154+ float y = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.y;
155+ float z = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.z;
156+
157+ App->CLSB_Ogre->mSceneMgr->setFog(FOG_LINEAR, ColourValue(x, y, z), Density, (Ogre::Real)Start, (Ogre::Real)End);
158+ }
159+ else
160+ {
161+ App->CLSB_Ogre->mSceneMgr->setFog(FOG_NONE, ColourValue(0.7, 0.7, 0.8), 0, 100, 1000);
162+ }
163+
164+ if (App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Enabled == 1)
165+ {
166+ App->CLSB_Ogre->mSceneMgr->setSkyDome(true,
167+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Material,
168+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Curvature,
169+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Tiling,
170+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Distance);
171+ }
172+ else
173+ {
174+
175+ }
176+
177+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->IsMainEnvironment = 1;
178+ App->CLSB_Scene->V_Object[Index]->Usage = Enums::Usage_EnvironEntity;
179+}
180+
181+// *************************************************************************
182+// * Mark_As_Altered_Environ:- Terry and Hazel Flanigan 2022 *
183+// *************************************************************************
184+void SB_Environment::Mark_As_Altered_Environ(int Index)
185+{
186+ App->CLSB_Scene->V_Object[Index]->Altered = 1;
187+
188+ App->CLSB_Scene->Scene_Modified = 1;
189+
190+ App->CLSB_FileView->Mark_Altered(App->CLSB_Scene->V_Object[Index]->FileViewItem);
191+}
192+
193+// *************************************************************************
194+// * Set_Environment_By_Index:- Terry and Hazel Flanigan 2022 *
195+// *************************************************************************
196+int SB_Environment::Set_Environment_By_Index(bool PlayMusic, int Index)
197+{
198+
199+ float x = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->AmbientColour.x;
200+ float y = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->AmbientColour.y;
201+ float z = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->AmbientColour.z;
202+ App->CLSB_Ogre->mSceneMgr->setAmbientLight(ColourValue(x, y, z));
203+
204+
205+ // Fog
206+ if (App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_On == 1)
207+ {
208+ float Start = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Start;
209+ float End = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_End;
210+ float Density = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Density;
211+
212+ float x = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.x;
213+ float y = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.y;
214+ float z = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.z;
215+
216+ App->CLSB_Ogre->mSceneMgr->setFog(FOG_LINEAR, ColourValue(x, y, z), Density, (Ogre::Real)Start, (Ogre::Real)End);
217+ }
218+ else
219+ {
220+ App->CLSB_Ogre->mSceneMgr->setFog(FOG_NONE, ColourValue(0.7, 0.7, 0.8), 0, 100, 1000);
221+ }
222+
223+ if (PlayMusic == 1)
224+ {
225+ /*char buff[1024];
226+ strcpy(buff, App->CLSB_SoundMgr->Default_Folder);
227+ strcat(buff, "\\Media\\Sounds\\");
228+
229+ if (App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Play == 1)
230+ {
231+ strcat(buff, App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Sound_File);
232+
233+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile = App->SBC_SoundMgr->SoundEngine->play2D(buff, App->SBC_Scene->V_Object[Index]->S_Environ[0]->Loop, true, true);
234+
235+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile->setVolume(App->SBC_Scene->V_Object[Index]->S_Environ[0]->SndVolume);
236+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile->setIsPaused(false);
237+ }*/
238+ }
239+ else
240+ {
241+ /*if (App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile == NULL)
242+ {
243+ }
244+ else
245+ {
246+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile->setIsPaused(true);
247+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile->drop();
248+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->SndFile = NULL;
249+ }*/
250+ }
251+
252+ return 1;
253+}
254+
255+// *************************************************************************
256+// * Get_First_Environ:- Terry and Hazel Flanigan 2022 *
257+// *************************************************************************
258+int SB_Environment::Get_First_Environ()
259+{
260+ int Count = 0;
261+ while (Count < App->CLSB_Scene->Object_Count)
262+ {
263+ if (App->CLSB_Scene->V_Object[Count]->Usage == Enums::Usage_EnvironEntity && App->CLSB_Scene->V_Object[Count]->S_Environ[0]->IsMainEnvironment == 1)
264+ {
265+ return Count;
266+ }
267+
268+ Count++;
269+ }
270+
271+ return -1;
272+}
273+
274+// ----------------------------------------------------------------------------------------------------------------
275+// *************************************************************************
276+// * Start_Environment_Editor:- Terry and Hazel Flanigan 2023 *
277+// *************************************************************************
278+void SB_Environment::Start_Environment_Editor(int Index, bool IsTeleport)
279+{
280+ Eviron_Index = Index;
281+ Is_Teleport = IsTeleport;
282+
283+ Float_Exit = 0;
284+
285+ Ambient_Colour_Copy.x = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour.x;
286+ Ambient_Colour_Copy.y = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour.y;
287+ Ambient_Colour_Copy.z = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour.z;
288+
289+ Ambient_Colour.x = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour.x;
290+ Ambient_Colour.y = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour.y;
291+ Ambient_Colour.z = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour.z;
292+
293+ Ambient_Int_Red = Ambient_Colour.x * 255;
294+ Ambient_Int_Green = Ambient_Colour.y * 255;
295+ Ambient_Int_Blue = Ambient_Colour.z * 255;
296+
297+ Fog_Colour_Copy.x = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour.x;
298+ Fog_Colour_Copy.y = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour.y;
299+ Fog_Colour_Copy.z = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour.z;
300+
301+ Fog_Colour.x = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour.x;
302+ Fog_Colour.y = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour.y;
303+ Fog_Colour.z = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour.z;
304+
305+ Fog_Colour_Int_Red = Fog_Colour.x * 255;
306+ Fog_Colour_Int_Green = Fog_Colour.y * 255;
307+ Fog_Colour_Int_Blue = Fog_Colour.z * 255;
308+
309+
310+ /*App->Disable_Panels(true);
311+ App->Show_Panels(false);*/
312+
313+ App->CLSB_FileView->Show_FileView(false);
314+ //App->CLSB_Com_Environments->Set_Environment_By_Index(1, Eviron_Index);
315+
316+ Show_PropertyEditor = 1;
317+}
318+
319+// *************************************************************************
320+// * Environ_PropertyEditor:- Terry and Hazel Flanigan 2022 *
321+// *************************************************************************
322+void SB_Environment::Environ_PropertyEditor()
323+{
324+
325+ ImGui::SetNextWindowPos(ImVec2(10, 10), ImGuiCond_FirstUseEver);
326+ ImGui::SetNextWindowSize(ImVec2(350, 190), ImGuiCond_FirstUseEver);
327+
328+ if (!ImGui::Begin("Environment Editor", &Show_PropertyEditor, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar))
329+ {
330+ ImGui::End();
331+ return;
332+ }
333+
334+ ImGuiColorEditFlags misc_flags2 = (ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_Uint8);
335+
336+ ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(2, 2));
337+ ImGui::PushStyleColor(ImGuiCol_WindowBg, IM_COL32(213, 222, 242, 255));
338+
339+ ImGui::Columns(2);
340+ ImGui::SetColumnWidth(-1, 120);
341+
342+ if (ImGui::Button(" Main Light ", ImVec2(100, 0)))
343+ {
344+ PropertyEditor_Page = 0;
345+ }
346+
347+ if (ImGui::Button("Sound ", ImVec2(100, 0)))
348+ {
349+ PropertyEditor_Page = 1;
350+ }
351+
352+ if (ImGui::Button("Fog ", ImVec2(100, 0)))
353+ {
354+ PropertyEditor_Page = 2;
355+ }
356+
357+ if (ImGui::Button("Sky ", ImVec2(100, 0)))
358+ {
359+ PropertyEditor_Page = 3;
360+ }
361+
362+ ImGui::Spacing();
363+ ImGui::Spacing();
364+ ImGui::Spacing();
365+ ImGui::Spacing();
366+
367+ // ---------------------------------------------------------------- Main Light
368+ if (PropertyEditor_Page == 0)
369+ {
370+ ImGui::NextColumn();
371+ ImGui::AlignTextToFramePadding();
372+
373+ ImGui::Text("Ambient Colour:");
374+ ImGui::SameLine();
375+
376+ if (ImGui::ColorEdit3("", (float*)&Ambient_Colour, ImGuiColorEditFlags_NoInputs | misc_flags2))
377+ {
378+ Ambient_Int_Red = Ambient_Colour.x * 255;
379+ Ambient_Int_Green = Ambient_Colour.y * 255;
380+ Ambient_Int_Blue = Ambient_Colour.z * 255;
381+
382+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->AmbientColour = Ogre::Vector3(Ambient_Colour.x, Ambient_Colour.y, Ambient_Colour.z);
383+ App->CLSB_Ogre->mSceneMgr->setAmbientLight(ColourValue(Ambient_Colour.x, Ambient_Colour.y, Ambient_Colour.z));
384+
385+ Mark_As_Altered_Environ(Eviron_Index);
386+ }
387+
388+ }
389+
390+ // ---------------------------------------------------------------- Sound
391+ if (PropertyEditor_Page == 1)
392+ {
393+ ImGui::NextColumn();
394+ ImGui::AlignTextToFramePadding();
395+
396+ ImGui::Selectable("Track:- ", &ClickOnTrack);
397+ ImGui::SameLine();
398+ ImGui::Text("%s", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Sound_File);
399+
400+ if (ClickOnTrack)
401+ {
402+ ImGui::TextColored(ImVec4(0.f, 1.f, 0.24f, 1.f), "ON");
403+
404+ App->CLSB_SoundMgr->Accessed = 1;
405+ strcpy(App->CLSB_SoundMgr->Access_File, App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Sound_File);
406+
407+ App->CLSB_Environment->Set_Environment_By_Index(0, Eviron_Index);
408+ //App->CLSB_SoundMgr->Dialog_SoundFile();
409+
410+ if (App->CLSB_SoundMgr->IsCancelled == 0)
411+ {
412+
413+ strcpy(App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Sound_File, App->CLSB_SoundMgr->Access_File);
414+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->SndVolume = App->CLSB_SoundMgr->SndVolume;
415+
416+ App->CLSB_Environment->Set_Environment_By_Index(1, Eviron_Index);
417+
418+ App->CLSB_Environment->Mark_As_Altered_Environ(Eviron_Index);
419+ }
420+ else
421+ {
422+ App->CLSB_Environment->Set_Environment_By_Index(1, Eviron_Index);
423+ }
424+
425+ ClickOnTrack = 0;
426+ }
427+
428+ // ----------------- Volume
429+ ImGui::Selectable("Volume:- ", &ClickOnVolume);
430+ ImGui::SameLine();
431+ ImGui::Text("%f", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->SndVolume);
432+ if (ClickOnVolume)
433+ {
434+ Mark_As_Altered_Environ(Eviron_Index);
435+ ClickOnVolume = 0;
436+ }
437+
438+ // ----------------- Play
439+ ImGui::Selectable("Play:- ", &ClickOnPlay);
440+ ImGui::SameLine();
441+ ImGui::Text("%i", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Play);
442+ if (ClickOnPlay)
443+ {
444+ strcpy(App->CLSB_Dialogs->btext, "Set Play Sound Track");
445+
446+ App->CLSB_Dialogs->TrueFlase = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Play;
447+
448+ App->CLSB_Dialogs->Dialog_TrueFlase();
449+
450+ if (App->CLSB_Dialogs->Canceled == 0)
451+ {
452+ if (App->CLSB_Dialogs->TrueFlase == 1)
453+ {
454+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Play = 1;
455+ App->CLSB_Environment->Set_Environment_By_Index(1, Eviron_Index);
456+ }
457+ else
458+ {
459+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Play = 0;
460+ App->CLSB_Environment->Set_Environment_By_Index(0, Eviron_Index);
461+ }
462+
463+ Mark_As_Altered_Environ(Eviron_Index);
464+ }
465+
466+ Mark_As_Altered_Environ(Eviron_Index);
467+
468+ ClickOnPlay = 0;
469+ }
470+
471+ // ----------------- Loop
472+ ImGui::Selectable("Loop:- ", &ClickOnLoop);
473+ ImGui::SameLine();
474+ ImGui::Text("%i", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Loop);
475+ if (ClickOnLoop)
476+ {
477+ strcpy(App->CLSB_Dialogs->btext, "Set Play Sound Loop");
478+
479+ App->CLSB_Dialogs->TrueFlase = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Loop;
480+
481+ App->CLSB_Dialogs->Dialog_TrueFlase();
482+
483+ if (App->CLSB_Dialogs->Canceled == 0)
484+ {
485+ if (App->CLSB_Dialogs->TrueFlase == 1)
486+ {
487+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Loop = 1;
488+ Set_Environment_By_Index(0, Eviron_Index);
489+ Set_Environment_By_Index(1, Eviron_Index);
490+ }
491+ else
492+ {
493+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Loop = 0;
494+ Set_Environment_By_Index(0, Eviron_Index);
495+ Set_Environment_By_Index(1, Eviron_Index);
496+ }
497+
498+ Mark_As_Altered_Environ(Eviron_Index);
499+ }
500+
501+ ClickOnLoop = 0;
502+ }
503+ }
504+
505+ // ---------------------------------------------------------------- Fog
506+ if (PropertyEditor_Page == 2)
507+ {
508+ ImGui::NextColumn();
509+ ImGui::AlignTextToFramePadding();
510+
511+ // ----------------- Visible
512+ ImGui::Selectable("Visible:- ", &ClickOnFogVisible);
513+ ImGui::SameLine();
514+ ImGui::Text("%i", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On);
515+ if (ClickOnFogVisible)
516+ {
517+ strcpy(App->CLSB_Dialogs->btext, "Set Fog Visiblity");
518+
519+ App->CLSB_Dialogs->TrueFlase = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On;
520+
521+ strcpy(App->CLSB_Dialogs->btext, "Set Fog On/Off");
522+ App->CLSB_Dialogs->Dialog_TrueFlase();
523+
524+ if (App->CLSB_Dialogs->Canceled == 0)
525+ {
526+ if (App->CLSB_Dialogs->TrueFlase == 1)
527+ {
528+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On = 1;
529+ EnableFog(true);
530+ }
531+ else
532+ {
533+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On = 0;
534+ EnableFog(false);
535+ }
536+
537+ Mark_As_Altered_Environ(Eviron_Index);
538+ }
539+
540+
541+ ClickOnFogVisible = 0;
542+ }
543+
544+ // ----------------- Mode
545+ ImGui::Selectable("Mode:- ", &ClickOnFogMode);
546+ ImGui::SameLine();
547+ ImGui::Text("%i", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Mode);
548+ if (ClickOnFogMode)
549+ {
550+ ClickOnFogMode = 0;
551+ }
552+
553+ // ----------------- Fog Colour
554+ ImGui::Text("Fog Colour:");
555+ ImGui::SameLine();
556+
557+ if (ImGui::ColorEdit3("", (float*)&Fog_Colour, ImGuiColorEditFlags_NoInputs | misc_flags2))
558+ {
559+ Ambient_Int_Red = Fog_Colour.x * 255;
560+ Ambient_Int_Green = Fog_Colour.y * 255;
561+ Ambient_Int_Blue = Fog_Colour.z * 255;
562+
563+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Colour = Ogre::Vector3(Fog_Colour.x, Fog_Colour.y, Fog_Colour.z);
564+
565+ if (App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On == 1)
566+ {
567+ EnableFog(true);
568+ }
569+
570+ Mark_As_Altered_Environ(Eviron_Index);
571+ }
572+
573+
574+
575+ // ----------------- Start
576+ ImGui::Text("Start:- ", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Start);
577+ ImGui::SameLine();
578+
579+ if (ImGui::InputFloat("##1", &App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_Start, 1, 0, "%.3f"))
580+ {
581+ if (App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On == 1)
582+ {
583+ EnableFog(true);
584+ }
585+
586+ Mark_As_Altered_Environ(Eviron_Index);
587+ }
588+
589+ // ----------------- End
590+ ImGui::Text("End:- ", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_End);
591+ ImGui::SameLine();
592+
593+ if (ImGui::InputFloat("##2", &App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_End, 1, 0, "%.3f"))
594+ {
595+ if (App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Fog_On == 1)
596+ {
597+ EnableFog(true);
598+ }
599+
600+ Mark_As_Altered_Environ(Eviron_Index);
601+ }
602+
603+ }
604+
605+ // ---------------------------------------------------------------- Sky
606+ if (PropertyEditor_Page == 3)
607+ {
608+ ImGui::NextColumn();
609+ ImGui::AlignTextToFramePadding();
610+
611+ // ----------------- Visible
612+ ImGui::Selectable("Enabled:- ", &ClickOnSkyEnabled);
613+ ImGui::SameLine();
614+ ImGui::Text("%i", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Enabled);
615+ if (ClickOnSkyEnabled)
616+ {
617+ strcpy(App->CLSB_Dialogs->btext, "Set Sky Visiblity");
618+
619+ App->CLSB_Dialogs->TrueFlase = App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Enabled;
620+
621+ strcpy(App->CLSB_Dialogs->btext, "Set Sky On/Off");
622+ App->CLSB_Dialogs->Dialog_TrueFlase();
623+
624+ if (App->CLSB_Dialogs->Canceled == 0)
625+ {
626+ if (App->CLSB_Dialogs->TrueFlase == 1)
627+ {
628+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Enabled = 1;
629+ SetSky(1);
630+ }
631+ else
632+ {
633+ App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Enabled = 0;
634+ SetSky(0);
635+ }
636+
637+ Mark_As_Altered_Environ(Eviron_Index);
638+ }
639+
640+ ClickOnSkyEnabled = 0;
641+ }
642+
643+ // ----------------- Tiling
644+ ImGui::Text("Tiling:- ", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Tiling);
645+ ImGui::SameLine();
646+
647+ if (ImGui::InputFloat("##5", &App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Tiling, 0.5, 0, "%.3f"))
648+ {
649+ if (App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Enabled == 1)
650+ {
651+ SetSky(true);
652+ }
653+
654+ Mark_As_Altered_Environ(Eviron_Index);
655+ }
656+
657+ // ----------------- Curvature
658+ ImGui::Text("Curve:- ", App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Curvature);
659+ ImGui::SameLine();
660+
661+ if (ImGui::InputFloat("##6", &App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Curvature, 0.5, 0, "%.3f"))
662+ {
663+ if (App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Enabled == 1)
664+ {
665+ SetSky(true);
666+ }
667+
668+ Mark_As_Altered_Environ(Eviron_Index);
669+ }
670+
671+ }
672+
673+ ImGui::PopStyleVar();
674+ ImGui::Columns(0);
675+
676+ ImGui::Spacing();
677+ ImGui::Spacing();
678+
679+ if (ImGui::Button("Close", ImVec2(100, 0)))
680+ {
681+ Close_Environment_Editor();
682+
683+ ImGui::PopStyleColor();
684+ PropertyEditor_Page = 0;
685+ Show_PropertyEditor = 0;
686+ }
687+
688+ if (Is_Teleport == 1)
689+ {
690+ ImGui::SameLine();
691+ if (ImGui::Button("Goto Location", ImVec2(120, 0)))
692+ {
693+ //App->CLSB_Scene->B_Player[0]->Phys_Body->getWorldTransform().setOrigin(App->CLSB_Scene->V_Object[Eviron_Index]->S_Teleport[0]->Physics_Position);
694+ //App->CLSB_Scene->B_Player[0]->Phys_Body->getWorldTransform().setRotation(App->CLSB_Scene->V_Object[Eviron_Index]->S_Teleport[0]->Physics_Rotation);
695+ //Set_To_PlayerView();
696+ }
697+
698+ ImGui::SameLine();
699+ if (ImGui::Checkbox("Enabled", &App->CLSB_Scene->V_Object[Eviron_Index]->S_Environ[0]->Environ_Enabled))
700+ {
701+ //App->SBC_Properties->Update_ListView_Teleport();
702+ }
703+ }
704+
705+
706+ ImGui::End();
707+}
708+
709+// *************************************************************************
710+// * Close_Environment_Editor:- Terry and Hazel Flanigan 2022 *
711+// *************************************************************************
712+void SB_Environment::Close_Environment_Editor()
713+{
714+ /*App->Disable_Panels(false);
715+ App->Show_Panels(true);*/
716+
717+ App->CLSB_FileView->Show_FileView(true);
718+ int Index = App->CLSB_Properties->Current_Selected_Object;
719+ Set_Environment_By_Index(0, Index);
720+
721+ Index = App->CLSB_Environment->Get_First_Environ();
722+ Set_Environment_By_Index(0, Index);
723+}
724+
725+// *************************************************************************
726+// * Set_To_PlayerView:- Terry and Hazel Flanigan 2022 *
727+// *************************************************************************
728+void SB_Environment::Set_To_PlayerView()
729+{
730+ App->CLSB_Ogre->OgreListener->GD_CameraMode = Enums::CamFirst;
731+ //App->CLSB_TopTabs->Toggle_FirstCam_Flag = 1;
732+ //App->CLSB_TopTabs->Toggle_FreeCam_Flag = 0;
733+
734+ App->CLSB_Scene->B_Player[0]->Player_Node->setVisible(false);
735+
736+ int f = App->CLSB_Scene->B_Player[0]->Phys_Body->getCollisionFlags();
737+ App->CLSB_Scene->B_Player[0]->Phys_Body->setCollisionFlags(f | (1 << 5));
738+
739+ App->CLSB_Ogre->BulletListener->Render_Debug_Flag = 0;
740+ App->CLSB_Ogre->BulletListener->Render_Debug_Flag = 1;
741+
742+ App->CLSB_Ogre->OgreListener->GD_Run_Physics = 1;
743+
744+ //RedrawWindow(App->CLSB_TopTabs->Camera_TB_hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
745+}
746+
747+// *************************************************************************
748+// * SetSky:- Terry and Hazel Flanigan 2023 *
749+// *************************************************************************
750+void SB_Environment::SetSky(bool Enable)
751+{
752+ int Index = App->CLSB_Properties->Current_Selected_Object;
753+
754+ App->CLSB_Ogre->mSceneMgr->setSkyDome(Enable,
755+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Material,
756+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Curvature,
757+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Tiling,
758+ App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Distance);
759+}
760+
761+// *************************************************************************
762+// * EnableFog:- Terry and Hazel Flanigan 2023 *
763+// *************************************************************************
764+bool SB_Environment::EnableFog(bool SetFog)
765+{
766+ int Index = App->CLSB_Properties->Current_Selected_Object;
767+
768+ if (SetFog == true)
769+ {
770+ float Start = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Start;
771+ float End = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_End;
772+ float Density = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Density;
773+
774+ float x = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.x;
775+ float y = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.y;
776+ float z = App->CLSB_Scene->V_Object[Index]->S_Environ[0]->Fog_Colour.z;
777+
778+ App->CLSB_Ogre->mSceneMgr->setFog(FOG_LINEAR, ColourValue(x, y, z), Density, (Ogre::Real)Start, (Ogre::Real)End);
779+ }
780+ else
781+ {
782+ App->CLSB_Ogre->mSceneMgr->setFog(FOG_NONE, ColourValue(0.7, 0.7, 0.8), 0, 100, 1000);
783+ }
784+
785+ return 1;
786+}
787+
--- WorldEditor/WorldEditor/SB_Environment.h (revision 2541)
+++ WorldEditor/WorldEditor/SB_Environment.h (revision 2542)
@@ -28,5 +28,66 @@
2828 public:
2929 SB_Environment(void);
3030 ~SB_Environment(void);
31+
32+ bool Add_New_Environ_Entity(bool FirstOne);
33+ void V_Set_Environ_Defaults(int Index);
34+ void Set_First_Environment(int Index);
35+ void Mark_As_Altered_Environ(int Index);
36+ int Set_Environment_By_Index(bool PlayMusic, int Index);
37+ int Get_First_Environ();
38+
39+
40+
41+ void Start_Environment_Editor(int Index, bool IsTeleport);
42+ void Environ_PropertyEditor();
43+ void Close_Environment_Editor();
44+ void Set_To_PlayerView();
45+ void SetSky(bool Enable);
46+ bool EnableFog(bool SetFog);
47+
48+ bool Show_PropertyEditor;
49+
50+protected:
51+
52+ int PropertyEditor_Page;
53+
54+ // Ambient
55+ int Ambient_Int_Red;
56+ int Ambient_Int_Green;
57+ int Ambient_Int_Blue;
58+ ImVec4 Ambient_Colour_Copy;
59+ ImVec4 Ambient_Colour;
60+
61+ // Fog Colour
62+ int Fog_Colour_Int_Red;
63+ int Fog_Colour_Int_Green;
64+ int Fog_Colour_Int_Blue;
65+ ImVec4 Fog_Colour_Copy;
66+ ImVec4 Fog_Colour;
67+
68+ int Eviron_Index;
69+
70+ bool Float_Exit;
71+
72+ bool Is_Teleport;
73+
74+ float Float_PosX;
75+ float Float_PosY;
76+ bool Float_StartPos;
77+
78+ bool ClickOnTrack;
79+ bool ClickOnVolume;
80+ bool ClickOnPlay;
81+ bool ClickOnLoop;
82+
83+ bool ClickOnFogVisible;
84+ bool ClickOnFogMode;
85+ bool ClickOnFogColour;
86+ bool ClickOnFogStart;
87+ bool ClickOnFogEnd;
88+
89+ bool ClickOnSkyEnabled;
90+ bool ClickOnSkyTiling;
91+ bool ClickOnSkyCurve;
3192 };
3293
--- WorldEditor/WorldEditor/SB_Equity.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_Equity.cpp (revision 2542)
@@ -337,7 +337,13 @@
337337 return TRUE;
338338 }
339339
340- // File Export
340+ // File Export/Save
341+ if (LOWORD(wParam) == ID_FILE_SAVESCENE)
342+ {
343+ Debug
344+ return TRUE;
345+ }
346+
341347 if (LOWORD(wParam) == ID_OGRE3D_MESH)
342348 {
343349 App->CLSB_Exporter->Ogre3D_Model();
@@ -1242,12 +1248,10 @@
12421248 ShowWindow(App->ListPanel, true);
12431249 ShowWindow(App->CLSB_Properties->Properties_Dlg_hWnd, true);
12441250
1245- App->CLSB_Object->Do_Basketball();
1246-
1247- App->CLSB_Ogre->mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8);
1248-
12491251 App->CLSB_Equity->Show_Equity_Dialog(true);
12501252 App->CLSB_TopTabs->Update_Dlg_Controls();
1253+ App->CLSB_Equity->Resize_3DView();
1254+ App->CLSB_Panels->MovePhysicsView();
12511255
12521256 if (App->CLSB_Equity->First_Run == 1)
12531257 {
@@ -1256,6 +1260,9 @@
12561260 }
12571261
12581262 App->CLSB_Project->Load_Project();
1263+
1264+ App->CLSB_Environment->Add_New_Environ_Entity(true);
1265+ App->CLSB_Environment->Set_First_Environment(App->CLSB_Scene->Object_Count - 1);
12591266 }
12601267 else
12611268 {
--- WorldEditor/WorldEditor/SB_FileView.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_FileView.cpp (revision 2542)
@@ -37,6 +37,8 @@
3737 FV_LevelFolder = nullptr;
3838 FV_Cameras_Folder = nullptr;
3939 FV_Objects_Folder = nullptr;
40+ FV_EntitiesFolder = nullptr;
41+ FV_Evirons_Folder = nullptr;
4042
4143 FileView_Folder[0] = 0;
4244 FileView_File[0] = 0;
@@ -68,7 +70,8 @@
6870 {
6971 //App->SBC_FileView->FileView_Active = 1;
7072 SendDlgItemMessage(hDlg, IDC_TREE1, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
71-
73+ SendDlgItemMessage(hDlg, IDC_BT_ENVIRONMENT, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
74+
7275 //CheckMenuItem(App->mMenu, ID_WINDOWS_FILEVIEW, MF_BYCOMMAND | MF_CHECKED);
7376 return TRUE;
7477 }
@@ -106,29 +109,15 @@
106109 }
107110 }
108111
109- /*LPNMHDR some_item = (LPNMHDR)lParam;
112+ LPNMHDR some_item = (LPNMHDR)lParam;
110113
111- if (some_item->idFrom == IDC_LEVELS && some_item->code == NM_CUSTOMDRAW)
114+ if (some_item->idFrom == IDC_BT_ENVIRONMENT && some_item->code == NM_CUSTOMDRAW)
112115 {
113116 LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)some_item;
114- App->Custom_Button_Toggle(item, App->SBC_FileView->Level_But_Active);
117+ App->Custom_Button_Normal(item);
115118 return CDRF_DODEFAULT;
116119 }
117120
118- if (some_item->idFrom == IDC_STOCK && some_item->code == NM_CUSTOMDRAW)
119- {
120- LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)some_item;
121- App->Custom_Button_Toggle(item, App->SBC_FileView->Stock_But_Active);
122- return CDRF_DODEFAULT;
123- }
124-
125- if (some_item->idFrom == IDC_BT_INFO_FILEVIEW && some_item->code == NM_CUSTOMDRAW)
126- {
127- LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)some_item;
128- App->Custom_Button_Normal(item);
129- return CDRF_DODEFAULT;
130- }*/
131-
132121 return 1;
133122 }
134123 case WM_COMMAND:
@@ -194,6 +183,22 @@
194183 // App->Cl_Utilities->OpenHTML("Help\\FileView.html");
195184 // return TRUE;
196185 //}
186+
187+ if (LOWORD(wParam) == IDC_BT_ENVIRONMENT)
188+ {
189+ int Index = App->CLSB_Environment->Get_First_Environ();
190+ if (Index == -1)
191+ {
192+ App->Say("Cant Find First Environment");
193+ return TRUE;
194+ }
195+
196+ App->CLSB_Properties->Current_Selected_Object = Index;
197+ App->CLSB_Environment->Start_Environment_Editor(Index, 0);
198+ return TRUE;
199+ }
200+
201+
197202 break;
198203 }
199204
@@ -344,6 +349,22 @@
344349 tvinsert.item.iSelectedImage = 1;
345350 FV_Objects_Folder = (HTREEITEM)SendDlgItemMessage(App->ListPanel, IDC_TREE1, TVM_INSERTITEM, 0, (LPARAM)&tvinsert);
346351
352+ tvinsert.hParent = FV_LevelFolder;
353+ tvinsert.hInsertAfter = TVI_LAST;
354+ tvinsert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
355+ tvinsert.item.pszText = "Entities";
356+ tvinsert.item.iImage = 0;
357+ tvinsert.item.iSelectedImage = 1;
358+ FV_EntitiesFolder = (HTREEITEM)SendDlgItemMessage(App->ListPanel, IDC_TREE1, TVM_INSERTITEM, 0, (LPARAM)&tvinsert);
359+
360+ //--------------------------------------- Evironments Eviron_Entity
361+ tvinsert.hParent = FV_EntitiesFolder;
362+ tvinsert.hInsertAfter = TVI_LAST;
363+ tvinsert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
364+ tvinsert.item.pszText = "Evironments";
365+ tvinsert.item.iImage = 0;
366+ tvinsert.item.iSelectedImage = 1;
367+ FV_Evirons_Folder = (HTREEITEM)SendDlgItemMessage(App->ListPanel, IDC_TREE1, TVM_INSERTITEM, 0, (LPARAM)&tvinsert);
347368 }
348369
349370 // *************************************************************************
@@ -589,5 +610,34 @@
589610 //TreeView_Select(Temp, NULL, TVGN_CARET);
590611 TreeView_Select(Temp, TreeItem, TVGN_CARET);
591612 }
613+}
592614
615+// *************************************************************************
616+// * Mark_Altered:- Terry and Hazel Flanigan 2022 *
617+// *************************************************************************
618+void SB_FileView::Mark_Altered(HTREEITEM Item)
619+{
620+ TVITEM Sitem;
621+ Sitem.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
622+ Sitem.hItem = Item;
623+ Sitem.iImage = 6;
624+ Sitem.iSelectedImage = 7;
625+ SendDlgItemMessage(App->ListPanel, IDC_TREE1, TVM_SETITEM, 0, (LPARAM)(const LPTVITEM)&Sitem);
626+
627+ //EnableMenuItem(App->mMenu, ID_FILE_SAVEPROJECTALL, MF_ENABLED);
593628 }
629+
630+// **************************************************************************
631+// * Show_FileView:- Terry and Hazel Flanigan 2022 *
632+// **************************************************************************
633+void SB_FileView::Show_FileView(bool show)
634+{
635+ if (show == 1)
636+ {
637+ ShowWindow(App->ListPanel, SW_SHOW);
638+ }
639+ else
640+ {
641+ ShowWindow(App->ListPanel, SW_HIDE);
642+ }
643+}
--- WorldEditor/WorldEditor/SB_FileView.h (revision 2541)
+++ WorldEditor/WorldEditor/SB_FileView.h (revision 2542)
@@ -35,9 +35,13 @@
3535 void Set_FolderActive(HTREEITEM Folder);
3636 void SelectItem(HTREEITEM TreeItem);
3737 void ExpandRoot(void);
38+ void Mark_Altered(HTREEITEM Item);
39+ void Show_FileView(bool show);
3840
3941 HTREEITEM FV_Players_Folder; // Players Folder FileFView
4042 HTREEITEM FV_Objects_Folder;
43+ HTREEITEM FV_EntitiesFolder;
44+ HTREEITEM FV_Evirons_Folder;
4145
4246 private:
4347
--- WorldEditor/WorldEditor/SB_ImGui.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_ImGui.cpp (revision 2542)
@@ -133,6 +133,11 @@
133133 {
134134 Dialog_Float();
135135 }
136+
137+ if (App->CLSB_Environment->Show_PropertyEditor == 1)
138+ {
139+ App->CLSB_Environment->Environ_PropertyEditor();
140+ }
136141 }
137142
138143 // *************************************************************************
--- WorldEditor/WorldEditor/SB_Object.cpp (revision 2541)
+++ WorldEditor/WorldEditor/SB_Object.cpp (revision 2542)
@@ -27,7 +27,7 @@
2727
2828 SB_Object::SB_Object()
2929 {
30- BasketBall_Done = 0;
30+
3131 }
3232
3333 SB_Object::~SB_Object()
@@ -35,78 +35,6 @@
3535 }
3636
3737 // *************************************************************************
38-// * Do_Basketball (Terry Bernie) *
39-// *************************************************************************
40-void SB_Object::Do_Basketball()
41-{
42- BasketBall_Done = 1;
43- return;
44- if (BasketBall_Done == 0)
45- {
46-
47- App->CLSB_Scene->V_Object.push_back(new Base_Object());
48- App->CLSB_Scene->Object_Count = 1;
49-
50- Base_Object* m_Object = App->CLSB_Scene->V_Object[0];
51-
52- m_Object->Object_Ent = App->CLSB_Ogre->mSceneMgr->createEntity("Ball", "basketball.mesh", App->CLSB_Ogre->App_Resource_Group);
53- m_Object->Object_Node = App->CLSB_Ogre->mSceneMgr->getRootSceneNode()->createChildSceneNode();
54- m_Object->Object_Node->attachObject(m_Object->Object_Ent);
55-
56- m_Object->Object_Node->setVisible(true);
57-
58- m_Object->Object_Node->setPosition(0, -10, -50);
59- m_Object->Object_Node->scale(2, 2, 2);
60-
61- AxisAlignedBox worldAAB = m_Object->Object_Ent->getBoundingBox();
62- worldAAB.transformAffine(m_Object->Object_Node->_getFullTransform());
63- Ogre::Vector3 Centre = worldAAB.getCenter();
64-
65- btTransform startTransform;
66- startTransform.setIdentity();
67- startTransform.setRotation(btQuaternion(0.0f, 0.0f, 0.0f, 1));
68-
69- btScalar mass;
70- mass = 1.0f;
71-
72- btVector3 localInertia(0, 0, 0);
73- btVector3 initialPosition(Centre.x, Centre.y, Centre.z);
74-
75- startTransform.setOrigin(initialPosition);
76-
77- float Radius = 16;// App->CL_Object->GetMesh_BB_Radius(Object_Node);
78-
79-
80- btCollisionShape* newRigidShape = new btSphereShape(Radius);
81- newRigidShape->calculateLocalInertia(mass, localInertia);
82-
83- App->CLSB_Bullet->collisionShapes.push_back(newRigidShape);
84-
85- btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform);
86-
87- btRigidBody::btRigidBodyConstructionInfo rbInfo(mass, myMotionState, newRigidShape, localInertia);
88-
89- m_Object->Phys_Body = new btRigidBody(rbInfo);
90- m_Object->Phys_Body->setRestitution(1.0);
91- m_Object->Phys_Body->setFriction(2.5);
92- m_Object->Phys_Body->setUserPointer(m_Object->Object_Node);
93- m_Object->Phys_Body->setWorldTransform(startTransform);
94-
95- int f = m_Object->Phys_Body->getCollisionFlags();
96- m_Object->Phys_Body->setCollisionFlags(f | btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT);
97-
98- m_Object->Usage = Enums::Usage_Dynamic;
99- m_Object->Phys_Body->setUserIndex(Enums::Usage_Dynamic);
100- m_Object->Phys_Body->setUserIndex2(0);
101-
102- App->CLSB_Bullet->dynamicsWorld->addRigidBody(m_Object->Phys_Body);
103-
104- BasketBall_Done = 1;
105- }
106-
107-}
108-
109-// *************************************************************************
11038 // Get_BoundingBox_World_Centre:- Terry and Hazel Flanigan 2023 *
11139 // *************************************************************************
11240 Ogre::Vector3 SB_Object::Get_BoundingBox_World_Centre(int Object_Index)
--- WorldEditor/WorldEditor/SB_Object.h (revision 2541)
+++ WorldEditor/WorldEditor/SB_Object.h (revision 2542)
@@ -29,11 +29,7 @@
2929 SB_Object();
3030 ~SB_Object();
3131
32- void Do_Basketball();
33-
3432 Ogre::Vector3 Get_BoundingBox_World_Centre(int Object_Index);
3533 float GetMesh_BB_Radius(SceneNode* mNode);
36-
37- bool BasketBall_Done;
3834 };
3935
--- WorldEditor/WorldEditor/SB_SoundMgr.cpp (nonexistent)
+++ WorldEditor/WorldEditor/SB_SoundMgr.cpp (revision 2542)
@@ -0,0 +1,425 @@
1+/*
2+Copyright (c) Vima19 Inflanite Software W.T.Flanigan H.C.Flanigan
3+
4+This software is provided 'as-is', without any express or implied
5+warranty. In no event will the authors be held liable for any damages
6+arising from the use of this software.
7+
8+Permission is granted to anyone to use this software for any purpose,
9+including commercial applications, and to alter it and redistribute it
10+freely, subject to the following restrictions:
11+
12+1. The origin of this software must not be misrepresented; you must not
13+claim that you wrote the original software. If you use this software
14+in a product, an acknowledgment in the product documentation would be
15+appreciated but is not required.
16+
17+2. Altered source versions must be plainly marked as such, and must not be
18+misrepresented as being the original software.
19+
20+3. This notice may not be removed or altered from any source
21+distribution.
22+*/
23+
24+#include "StdAfx.h"
25+#include "resource.h"
26+#include "AB_App.h"
27+#include "SB_SoundMgr.h"
28+
29+
30+SB_SoundMgr::SB_SoundMgr(void)
31+{
32+ SoundEngine = irrklang::createIrrKlangDevice();
33+ SndFile = nullptr;
34+ SndVolume=0.5;
35+ IsObject = 0;
36+ strcpy(mSoundFile,"");
37+ strcpy(Default_Folder,App->WorldEditor_Directory);
38+
39+ SoundFile_Count = 0;
40+ Current_Object_Sound[0] = 0;
41+
42+ m_Current_Sound_file[0] = 0;
43+
44+ IsCancelled = 0;
45+ Accessed = 0;
46+}
47+
48+
49+SB_SoundMgr::~SB_SoundMgr(void)
50+{
51+}
52+
53+//// *************************************************************************
54+//// * Dialog_SoundFile() Terry Bernie *
55+//// *************************************************************************
56+//bool SB_SoundMgr::Dialog_SoundFile()
57+//{
58+// IsCancelled = 0;
59+// SndFile = nullptr;
60+//
61+// DialogBox(App->hInst,(LPCTSTR)IDD_GD_SOUNDPLAYER,App->Fdlg,(DLGPROC)Dialog_SoundFile_Proc);
62+// return 1;
63+//}
64+//// *************************************************************************
65+//// * Dialog_SoundFile_Proc Terry Bernie *
66+//// *************************************************************************
67+//LRESULT CALLBACK SB_SoundMgr::Dialog_SoundFile_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
68+//{
69+//
70+// switch (message)
71+// {
72+// case WM_INITDIALOG:
73+// {
74+// App->SetTitleBar(hDlg);
75+//
76+// HFONT Font;
77+// Font = CreateFont( -15,0,0,0,FW_BOLD,0,0,0,0,OUT_TT_ONLY_PRECIS ,0,0,0, "Aerial Black");
78+// SendDlgItemMessage(hDlg,IDC_TITLENAME, WM_SETFONT, (WPARAM)App->Font_Arial20, MAKELPARAM(TRUE, 0));
79+// SendDlgItemMessage(hDlg,IDC_SOUNDLIST, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
80+// SendDlgItemMessage(hDlg,IDC_EDITINT, WM_SETFONT, (WPARAM)App->Font_CB15, MAKELPARAM(TRUE, 0));
81+//
82+// SetDlgItemText(hDlg,IDC_TITLENAME,(LPCTSTR)"Sound Player");
83+//
84+//
85+// App->SBC_SoundMgr->GetSoundFiles(hDlg,"*.ogg");
86+// App->SBC_SoundMgr->GetSoundFiles(hDlg,"*.wav");
87+//
88+// char Sound[MAX_PATH];
89+// HWND ListHwnd = GetDlgItem(hDlg, IDC_SOUNDLIST);
90+//
91+// SendMessage(ListHwnd, LB_SETCURSEL, 0, (LPARAM)(LPCTSTR)0);
92+// SendDlgItemMessage(hDlg, IDC_SOUNDLIST, LB_GETTEXT, (WPARAM) 0, (LPARAM)Sound);
93+// SetDlgItemText(hDlg, IDC_EDITINT, (LPTSTR)Sound);
94+//
95+// //int Sel = SendMessage(GetDlgItem(hDlg, IDC_SOUNDLIST), LB_SELECTSTRING, -1, (LPARAM)App->SBC_SoundMgr->Current_Object_Sound);
96+//
97+// //char buff[255];
98+// //SendDlgItemMessage(hDlg, IDC_SOUNDLIST, LB_GETTEXT, (WPARAM)Sel, (LPARAM)buff);
99+// //SetDlgItemText(hDlg, IDC_EDITINT, (LPTSTR)buff);
100+//
101+// int VolPer = int(App->SBC_SoundMgr->SndVolume*10);
102+//
103+// HWND Slider =GetDlgItem(hDlg,IDC_SLVOLUME);
104+// SendMessage(Slider, TBM_SETRANGE, (WPARAM) TRUE,(LPARAM) MAKELONG(0,10));
105+// SendMessage(Slider, TBM_SETPOS, (WPARAM) 1,(LPARAM)VolPer);
106+//
107+// VolPer = VolPer*10;
108+//
109+// char buf[10];
110+// sprintf(buf,"%i",VolPer);
111+// SetDlgItemText(hDlg,IDC_VOLBOX,(LPCTSTR)buf);
112+//
113+// if (App->SBC_SoundMgr->Accessed == 1)
114+// {
115+// SendMessage(GetDlgItem(hDlg, IDC_SOUNDLIST), LB_SELECTSTRING, -1, (LPARAM)App->SBC_SoundMgr->Access_File);
116+// }
117+//
118+// return TRUE;
119+// }
120+// case WM_CTLCOLORSTATIC:
121+// {
122+// /*if(GetDlgItem(hDlg,IDC_STPER) == (HWND)lParam)
123+// {
124+// SetBkColor((HDC) wParam, RGB(0, 255, 0));
125+// SetTextColor((HDC) wParam, RGB(0,0,0));
126+// SetBkMode((HDC) wParam, TRANSPARENT);
127+// return (UINT) App->AppBackground;
128+// }*/
129+// if(GetDlgItem(hDlg,IDC_STVOLUME) == (HWND)lParam)
130+// {
131+// SetBkColor((HDC) wParam, RGB(0, 255, 0));
132+// SetTextColor((HDC) wParam, RGB(0,0,0));
133+// SetBkMode((HDC) wParam, TRANSPARENT);
134+// return (UINT) App->DialogBackGround;
135+// }
136+// if(GetDlgItem(hDlg,IDC_VOLBOX) == (HWND)lParam)
137+// {
138+// SetBkColor((HDC) wParam, RGB(0, 255, 0));
139+// SetTextColor((HDC) wParam, RGB(0,0,0));
140+// SetBkMode((HDC) wParam, TRANSPARENT);
141+// return (UINT) App->Brush_White;
142+// }
143+// if(GetDlgItem(hDlg,IDC_EDITINT) == (HWND)lParam)
144+// {
145+// SetBkColor((HDC) wParam, RGB(0, 255, 0));
146+// SetTextColor((HDC) wParam, RGB(0,0,0));
147+// SetBkMode((HDC) wParam, TRANSPARENT);
148+// return (UINT) App->Brush_White;
149+// }
150+// if(GetDlgItem(hDlg,IDC_SLVOLUME) == (HWND)lParam)
151+// {
152+// SetBkColor((HDC) wParam, RGB(0, 255, 0));
153+// SetTextColor((HDC) wParam, RGB(0,0,255));
154+// SetBkMode((HDC) wParam, TRANSPARENT);
155+// return (UINT) App->DialogBackGround;
156+// }
157+// if(GetDlgItem(hDlg,IDC_TITLENAME) == (HWND)lParam)
158+// {
159+// SetBkColor((HDC) wParam, RGB(0, 255, 0));
160+// SetTextColor((HDC) wParam, RGB(0,0,0));
161+// SetBkMode((HDC) wParam, TRANSPARENT);
162+// return (UINT) App->DialogBackGround;
163+// }
164+// return FALSE;
165+// }
166+//
167+// case WM_CTLCOLORDLG:
168+// {
169+// return (LONG)App->DialogBackGround;
170+// }
171+// case WM_HSCROLL :
172+// {
173+// HWND Slider = GetDlgItem(hDlg,IDC_SLVOLUME);
174+// int pos = 0;
175+// int Percent = 0;
176+// char buf[20];
177+// pos = SendMessage(Slider, TBM_GETPOS, (WPARAM) 0,(LPARAM)0);
178+// Percent = pos*10;
179+// sprintf(buf,"%i",Percent);
180+// SetDlgItemText(hDlg,IDC_VOLBOX,(LPCTSTR)buf);
181+//
182+// float sum2 = float(Percent) / 100;
183+// App->SBC_SoundMgr->SndVolume = sum2;
184+//
185+// if (App->SBC_SoundMgr->SndFile)
186+// {
187+// App->SBC_SoundMgr->SndFile->setVolume(sum2);
188+// }
189+//
190+// return 1;
191+// }
192+//
193+// case WM_NOTIFY:
194+// {
195+// LPNMHDR nmhdr = (LPNMHDR) lParam;
196+//
197+// if (nmhdr->idFrom == IDC_PLAY && nmhdr->code == NM_CUSTOMDRAW)
198+// {
199+// LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)nmhdr;
200+// App->Custom_Button_Normal(item);
201+// return CDRF_DODEFAULT;
202+// }
203+//
204+// if (nmhdr->idFrom == IDOK && nmhdr->code == NM_CUSTOMDRAW)
205+// {
206+// LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)nmhdr;
207+// App->Custom_Button_Normal(item);
208+// return CDRF_DODEFAULT;
209+// }
210+//
211+// if (nmhdr->idFrom == IDCANCEL && nmhdr->code == NM_CUSTOMDRAW)
212+// {
213+// LPNMCUSTOMDRAW item = (LPNMCUSTOMDRAW)nmhdr;
214+// App->Custom_Button_Normal(item);
215+// return CDRF_DODEFAULT;
216+// }
217+//
218+// }break;
219+//
220+// case WM_COMMAND:
221+//
222+//
223+// if (LOWORD(wParam) == IDC_BT_STOP)
224+// {
225+// App->SBC_SoundMgr->SndFile->stop();
226+//
227+// return TRUE;
228+// }
229+//
230+// if (LOWORD(wParam) == IDC_BT_PAUSE)
231+// {
232+// bool Paused = App->SBC_SoundMgr->SndFile->getIsPaused();
233+// if (Paused == 1)
234+// {
235+// App->SBC_SoundMgr->SndFile->setIsPaused(0);
236+// }
237+// else
238+// {
239+// App->SBC_SoundMgr->SndFile->setIsPaused(1);
240+// }
241+//
242+// return TRUE;
243+// }
244+//
245+// if (LOWORD(wParam) == IDC_SOUNDLIST)
246+// {
247+// char buff[256];
248+// int Index=0;
249+// Index = SendDlgItemMessage(hDlg,IDC_SOUNDLIST,LB_GETCURSEL, (WPARAM)0, (LPARAM)0);
250+//
251+// if (Index==-1)
252+// {
253+// return 1;
254+// }
255+//
256+// SendDlgItemMessage(hDlg,IDC_SOUNDLIST,LB_GETTEXT, (WPARAM)Index, (LPARAM)buff);
257+//
258+// SetDlgItemText(hDlg,IDC_EDITINT,(LPTSTR)buff);
259+//
260+// if (App->SBC_SoundMgr->Accessed == 1)
261+// {
262+// strcpy(App->SBC_SoundMgr->Access_File, buff);
263+// }
264+//
265+// return TRUE;
266+// }
267+//
268+// if (LOWORD(wParam) == IDOK)
269+// {
270+// if (App->SBC_SoundMgr->SndFile==NULL)
271+// {
272+// }
273+// else
274+// {
275+// App->SBC_SoundMgr->SndFile->stop();
276+// App->SBC_SoundMgr->SndFile=NULL;
277+// }
278+//
279+// App->SBC_SoundMgr->IsCancelled = 0;
280+//
281+// char file[256];
282+// GetDlgItemText(hDlg,IDC_EDITINT,(LPTSTR)file,256);
283+// strcpy(App->SBC_SoundMgr->mSoundFile,file);
284+// App->SBC_SoundMgr->Remeber_SoundFile(file);
285+//
286+// App->SBC_SoundMgr->Accessed = 0;
287+// EndDialog(hDlg, LOWORD(wParam));
288+// return TRUE;
289+// }
290+//
291+// if (LOWORD(wParam)== IDCANCEL)
292+// {
293+// if (App->SBC_SoundMgr->SndFile == NULL)
294+// {
295+// }
296+// else
297+// {
298+// App->SBC_SoundMgr->SndFile->stop();
299+// App->SBC_SoundMgr->SndFile->drop();
300+// App->SBC_SoundMgr->SndFile = NULL;
301+//
302+// }
303+//
304+// App->SBC_SoundMgr->Accessed = 0;
305+// App->SBC_SoundMgr->IsCancelled = 1;
306+// EndDialog(hDlg, LOWORD(wParam));
307+// return TRUE;
308+// }
309+//
310+// if (LOWORD(wParam)== IDC_PLAY)
311+// {
312+//
313+// GetDlgItemText(hDlg,IDC_EDITINT,(LPTSTR)App->SBC_SoundMgr->m_Current_Sound_file,MAX_PATH);
314+//
315+// if (App->SBC_SoundMgr->SndFile==NULL)
316+// {
317+// }
318+// else
319+// {
320+// App->SBC_SoundMgr->SndFile->stop();
321+// App->SBC_SoundMgr->SndFile=NULL;
322+// }
323+//
324+// int result=1;
325+// result = strcmp(App->SBC_SoundMgr->m_Current_Sound_file,"");
326+// if (result == 0)
327+// {
328+//
329+// }
330+// else
331+// {
332+// result = strcmp(App->SBC_SoundMgr->m_Current_Sound_file,"None");
333+// if (result == 0)
334+// {
335+//
336+// }
337+// else
338+// {
339+// char Sound[1024];
340+// strcpy(Sound,App->SBC_SoundMgr->Default_Folder);
341+// strcat(Sound,"\\Media\\Sounds\\");
342+// strcat(Sound, App->SBC_SoundMgr->m_Current_Sound_file);
343+//
344+// App->SBC_SoundMgr->SndFile = App->SBC_SoundMgr->SoundEngine->play2D(Sound,false,true,true);
345+// App->SBC_SoundMgr->SndFile->setVolume(App->SBC_SoundMgr->SndVolume);
346+// App->SBC_SoundMgr->SndFile->setIsPaused(false);
347+// }
348+// }
349+// return TRUE;
350+// }
351+//
352+// break;
353+//
354+// }
355+// return FALSE;
356+//}
357+//
358+// *************************************************************************
359+// * InitSound_Defaults Terry Bernie *
360+// *************************************************************************
361+bool SB_SoundMgr::InitSound_Defaults(int Index)
362+{
363+ //S_Object[Index]->Sound[0].Data0 = 0;
364+ //S_Object[Index]->Sound[0].Data1 = 0;
365+ //S_Object[Index]->Sound[0].Is3D = 0;
366+ //S_Object[Index]->Sound[0].Loop = 0;
367+ //S_Object[Index]->Sound[0].Pan = 0;
368+ //S_Object[Index]->Sound[0].Play = 1;
369+ //strcpy(S_Object[Index]->Sound[0].SoundFile,"None"); // Needs Lookind at
370+ //S_Object[Index]->Sound[0].Volume = 1;
371+ return 1;
372+}
373+// *************************************************************************
374+// * GetSoundFiles Terry Bernie *
375+// *************************************************************************
376+bool SB_SoundMgr::GetSoundFiles(HWND hDlg,char *Extention)
377+{
378+ /*HWND ListHwnd = GetDlgItem(hDlg,IDC_SOUNDLIST);
379+
380+ WIN32_FIND_DATA ffd;
381+ HANDLE hFind = INVALID_HANDLE_VALUE;
382+
383+ char SearchName[1024];
384+ strcpy(SearchName,Default_Folder);
385+ strcat(SearchName,"\\Media\\Sounds\\");
386+ strcat(SearchName,Extention);
387+
388+ hFind = FindFirstFile(SearchName,&ffd);
389+
390+ SendMessage(ListHwnd,LB_ADDSTRING, 0, (LPARAM) (LPCTSTR)ffd.cFileName);
391+
392+ while (FindNextFile(hFind, &ffd) != 0)
393+ {
394+ SendMessage(ListHwnd,LB_ADDSTRING, 0, (LPARAM) (LPCTSTR)ffd.cFileName);
395+ }*/
396+
397+ return 1;
398+}
399+
400+// *************************************************************************
401+// * Remeber_SoundFile Terry Bernie *
402+// *************************************************************************
403+bool SB_SoundMgr::Remeber_SoundFile(char* File)
404+{
405+ Sound_File.push_back(File);
406+ SoundFile_Count = Sound_File.size();
407+ return 1;
408+}
409+
410+// *************************************************************************
411+// * Play_StartUp_Sound Terry Bernie *
412+// *************************************************************************
413+bool SB_SoundMgr::Play_StartUp_Sound()
414+{
415+ char Sound[MAX_PATH];
416+ strcpy(Sound, App->WorldEditor_Directory);
417+ strcat(Sound, "\\Media\\Sounds\\");
418+ strcat(Sound, "welcome.ogg");
419+
420+ SndFile = App->CLSB_SoundMgr->SoundEngine->play2D(Sound, false, true, true);
421+ SndFile->setVolume(0.5);
422+ SndFile->setIsPaused(false);
423+
424+ return 1;
425+}
--- WorldEditor/WorldEditor/SB_SoundMgr.h (nonexistent)
+++ WorldEditor/WorldEditor/SB_SoundMgr.h (revision 2542)
@@ -0,0 +1,64 @@
1+/*
2+Copyright (c) Vima19 Inflanite Software W.T.Flanigan H.C.Flanigan
3+
4+This software is provided 'as-is', without any express or implied
5+warranty. In no event will the authors be held liable for any damages
6+arising from the use of this software.
7+
8+Permission is granted to anyone to use this software for any purpose,
9+including commercial applications, and to alter it and redistribute it
10+freely, subject to the following restrictions:
11+
12+1. The origin of this software must not be misrepresented; you must not
13+claim that you wrote the original software. If you use this software
14+in a product, an acknowledgment in the product documentation would be
15+appreciated but is not required.
16+
17+2. Altered source versions must be plainly marked as such, and must not be
18+misrepresented as being the original software.
19+
20+3. This notice may not be removed or altered from any source
21+distribution.
22+*/
23+
24+#pragma once
25+
26+class SB_SoundMgr
27+{
28+public:
29+ SB_SoundMgr(void);
30+ ~SB_SoundMgr(void);
31+
32+ //static LRESULT CALLBACK Dialog_SoundFile_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
33+
34+ //bool Dialog_SoundFile();
35+ bool InitSound_Defaults(int Index);
36+ bool GetSoundFiles(HWND hDlg,char *Extention);
37+ bool Remeber_SoundFile(char* File);
38+ bool Play_StartUp_Sound();
39+
40+ char mSoundFile[255];
41+ char Current_Object_Sound[255];
42+
43+ char m_Current_Sound_file[MAX_PATH];
44+
45+ char Default_Folder[1024];
46+
47+ bool IsObject;
48+ bool IsCancelled;
49+
50+ bool Accessed;
51+ char Access_File[MAX_PATH];
52+
53+ irrklang::ISoundEngine* SoundEngine;
54+ irrklang::ISound* SndFile;
55+ Ogre::Real SndVolume;
56+
57+ int SoundFile_Count;
58+ std::vector<std::string> Sound_File;
59+
60+protected:
61+
62+
63+};
64+
--- WorldEditor/WorldEditor/StdAfx.h (revision 2541)
+++ WorldEditor/WorldEditor/StdAfx.h (revision 2542)
@@ -68,6 +68,7 @@
6868 #include "OgreHardwareVertexBuffer.h"
6969 #include "OgreVertexIndexData.h"
7070 #include "OgreResourceGroupManager.h"
71+#include "irrKlang.h"
7172
7273 #include <gl/gl.h>
7374 #include <gl/glu.h>
@@ -186,6 +187,6 @@
186187 // re-enable warnings except 4514
187188 #pragma warning(default : 4201 4214 4115)
188189
189-#define Debug MessageBox(NULL, "Here", "Message", MB_OK);
190+#define Debug App->Say("Here", "Message"); //MessageBox(NULL, "Here", "Message", MB_OK);
190191
191192 #endif
--- WorldEditor/WorldEditor/resource.h (revision 2541)
+++ WorldEditor/WorldEditor/resource.h (revision 2542)
@@ -171,6 +171,7 @@
171171 #define IDB_FILESELECTED 343
172172 #define IDB_BITMAP2 344
173173 #define IDB_FVFOLDERRED 344
174+#define IDD_SB_TRUEFALSE 345
174175 #define IDC_RESET_ALL 1000
175176 #define IDC_EDIT1 1001
176177 #define IDC_EDIT10 1002
@@ -241,6 +242,7 @@
241242 #define IDC_BRUSHLIST 1067
242243 #define IDC_SKYRIGHT 1067
243244 #define IDC_VISDETAIL 1067
245+#define IDC_CHECKNO 1067
244246 #define IDC_NAME 1068
245247 #define IDC_CHECK3 1068
246248 #define IDC_SKYTOP 1068
@@ -839,6 +841,9 @@
839841 #define IDC_BTFACENEXT 1536
840842 #define IDC_TREE1 1537
841843 #define IDC_BT_VIEWUPDATE 1538
844+#define IDC_BT_ENVIRONMENT 1539
845+#define IDC_TITLENAME 1540
846+#define IDC_CHECKYES 1541
842847 #define ID_BRUSH_PRIMITIVES_CUBE 32771
843848 #define ID_BRUSH_PRIMITIVES_PYRAMID 32772
844849 #define ID_BRUSH_PRIMITIVES_SPHEROID 32773
@@ -1044,6 +1049,7 @@
10441049 #define ID_FILE_SAVE33088 33088
10451050 #define ID_FILE_SAVESB 33089
10461051 #define ID_RENDER_BRUSEHS 33090
1052+#define ID_FILE_SAVESCENE 33091
10471053 #define IDS_HELPINFORMATION 38000
10481054
10491055 // Next default values for new objects
@@ -1051,9 +1057,9 @@
10511057 #ifdef APSTUDIO_INVOKED
10521058 #ifndef APSTUDIO_READONLY_SYMBOLS
10531059 #define _APS_3D_CONTROLS 1
1054-#define _APS_NEXT_RESOURCE_VALUE 345
1055-#define _APS_NEXT_COMMAND_VALUE 33091
1056-#define _APS_NEXT_CONTROL_VALUE 1539
1060+#define _APS_NEXT_RESOURCE_VALUE 347
1061+#define _APS_NEXT_COMMAND_VALUE 33092
1062+#define _APS_NEXT_CONTROL_VALUE 1542
10571063 #define _APS_NEXT_SYMED_VALUE 112
10581064 #endif
10591065 #endif
Show on old repository browser