/Ogitor/server/plugin/sceneEditMfcSkin/MainFrm.cpp

http://void-landscape.googlecode.com/ · C++ · 1283 lines · 504 code · 82 blank · 697 comment · 16 complexity · 0044d35826528e73c42f192bdce22812 MD5 · raw file

  1. #include "stdafx.h"
  2. #include "WinMFCSystem.h"
  3. #include "AppWinMFC.h"
  4. #include "MainFrm.h"
  5. #include "MFCSubClasses.h"
  6. #include "ProjectPropertiesDlg.h"
  7. #include "UserDefinedPropertyDlg.h"
  8. #include "ChildView.h"
  9. // #include "AddEntityWnd.h"
  10. #include "memory"
  11. //CAddEntityWnd m_CAddEntityWnd;
  12. CChildView m_wndView;
  13. const char NewSceneDefinition[] = "<OGITORSCENE>\n"
  14. " <OBJECT type=\"%s\" scenemanagertype=\"%s\" name=\"SceneManager\" configfile=\"%s\" ambient=\"1.000 1.000 1.000\"></OBJECT>\n"
  15. "</OGITORSCENE>\n";
  16. CChildView* CMainFrame::getChildView()
  17. {
  18. return &m_wndView;
  19. }
  20. // CAddEntityWnd* CMainFrame::getCAddEntityWnd()
  21. // {
  22. // return &m_CAddEntityWnd;
  23. // }
  24. // CMainFrame
  25. IMPLEMENT_DYNAMIC(CMainFrame, CFrameWndEx)
  26. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
  27. ON_WM_CREATE()
  28. ON_WM_SETFOCUS()
  29. ON_WM_SIZING()
  30. ON_WM_CLOSE()
  31. ON_COMMAND(ID_HELP, OnHelp)
  32. ON_COMMAND(ID_FILE_NEW,OnFileNew)
  33. ON_COMMAND(ID_FILE_OPEN,OnFileOpen)
  34. ON_COMMAND(ID_FILE_SAVE,OnFileSave)
  35. ON_COMMAND(ID_FILE_SAVE_AS,OnFileSaveAs)
  36. ON_COMMAND(ID_FILE_CLOSE,OnFileClose)
  37. ON_COMMAND(ID_OPTIONSDLG,OnOptionsDlg)
  38. ON_UPDATE_COMMAND_UI(ID_OPTIONSDLG,OnUpdateOptionsDlg)
  39. ON_UPDATE_COMMAND_UI(ID_FILE_NEW,OnUpdateFileNew)
  40. ON_UPDATE_COMMAND_UI(ID_FILE_OPEN,OnUpdateFileOpen)
  41. ON_UPDATE_COMMAND_UI(ID_FILE_SAVE,OnUpdateFileSave)
  42. ON_UPDATE_COMMAND_UI(ID_FILE_SAVE_AS,OnUpdateFileSaveAs)
  43. ON_UPDATE_COMMAND_UI(ID_FILE_CLOSE,OnUpdateFileClose)
  44. ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook)
  45. ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook)
  46. ON_COMMAND(ID_VIEW_FPS,OnFPSCombo)
  47. ON_UPDATE_COMMAND_UI(ID_VIEW_FPS,OnUpdateFPSCombo)
  48. ON_COMMAND_RANGE(ID_TOOLS_SELECT, ID_TOOLS_SMOOTH, OnToolChange)
  49. ON_UPDATE_COMMAND_UI_RANGE(ID_TOOLS_SELECT, ID_TOOLS_SMOOTH, OnUpdateToolChange)
  50. ON_COMMAND_RANGE(ID_TOOLS_AXISX, ID_TOOLS_AXISZ, OnAxisChange)
  51. ON_UPDATE_COMMAND_UI_RANGE(ID_TOOLS_AXISX, ID_TOOLS_AXISZ, OnUpdateAxisChange)
  52. ON_COMMAND_RANGE(ID_OBJECTS_START, ID_OBJECTS_END, OnAddObject)
  53. ON_UPDATE_COMMAND_UI_RANGE(ID_OBJECTS_START, ID_OBJECTS_END, OnUpdateAddObject)
  54. ON_COMMAND_RANGE(ID_VIEW_PROPERTIES,ID_VIEW_ADDVIEWPORT, OnViewTab)
  55. ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_PROPERTIES,ID_VIEW_ADDVIEWPORT, OnUpdateViewTab)
  56. ON_UPDATE_COMMAND_UI(ID_VIEW_WINDOWS,OnUpdateViewMenu)
  57. ON_COMMAND(ID_ETL_BRUSHES,OnETLBrushChange)
  58. ON_COMMAND(ID_ETL_TEXTURES,OnETLTextureChange)
  59. ON_COMMAND(ID_ETL_COLORS,OnETLColorChange)
  60. ON_COMMAND(ID_ETL_CALCLIGHT,OnETLReLight)
  61. ON_COMMAND_RANGE(ID_ETL_BRUSHSIZE,ID_ETL_BRUSHINTENSITY,OnETLBrushOptionChange)
  62. ON_UPDATE_COMMAND_UI_RANGE(ID_ETL_CALCLIGHT,ID_ETL_BRUSHINTENSITY,OnUpdateETLBrushOptions)
  63. ON_UPDATE_COMMAND_UI_RANGE(ID_CAMERA_SAVE,ID_CAMERA_9,OnUpdateCameraOptions)
  64. ON_COMMAND_RANGE(ID_CAMERA_SAVE,ID_CAMERA_9,OnCameraOptions)
  65. ON_COMMAND_RANGE(ID_CAMERA_REMOVE_0,ID_CAMERA_REMOVE_9,OnCameraDelete)
  66. ON_COMMAND_RANGE(ID_TOOLS_FOCUS,ID_TOOLS_DELETE,OnEditorHotKey)
  67. ON_COMMAND_RANGE(ID_ADDUSERDEFINED,ID_EDITUSERDEFINED, OnUserDefinedProperty)
  68. ON_UPDATE_COMMAND_UI_RANGE(ID_ADDUSERDEFINED, ID_EDITUSERDEFINED, OnUpdateUserDefinedProperty)
  69. ON_UPDATE_COMMAND_UI_RANGE(ID_IMPORT_START, ID_IMPORT_END, OnUpdateImportPlugins)
  70. ON_COMMAND_RANGE(ID_EXPORT_START, ID_EXPORT_END, OnExportPlugins)
  71. ON_COMMAND_RANGE(ID_IMPORT_START, ID_IMPORT_END, OnImportPlugins)
  72. ON_UPDATE_COMMAND_UI_RANGE(ID_EXPORT_START, ID_EXPORT_END, OnUpdateExportPlugins)
  73. ON_UPDATE_COMMAND_UI_RANGE(ID_CONTEXTMENU_START, ID_CONTEXTMENU_END, OnUpdateExportPlugins)
  74. ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT, OnUpdateImportPlugins)
  75. ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT, OnUpdateExportPlugins)
  76. ON_COMMAND_RANGE(ID_OGITOR_UNDO,ID_OGITOR_REDO,OnUndoRedo)
  77. ON_UPDATE_COMMAND_UI_RANGE(ID_OGITOR_UNDO,ID_OGITOR_REDO,OnUpdateUndoRedo)
  78. ON_COMMAND_RANGE(ID_CUSTOMGUI_START,ID_CUSTOMGUI_END,OnCustomGUI)
  79. ON_UPDATE_COMMAND_UI_RANGE(ID_CUSTOMGUI_START,ID_CUSTOMGUI_END,OnUpdateCustomGUI)
  80. //ON_UPDATE_COMMAND_UI_RANGE(ID_MUSIC_BRUSHSIZE,ID_TOOLS_SETMUSIC,OnUpdateMusicGUI)
  81. //ON_COMMAND_RANGE(ID_MUSIC_BRUSHSIZE,ID_TOOLS_SETMUSIC,OnMusicGUI)
  82. ON_WM_TIMER()
  83. END_MESSAGE_MAP()
  84. // CMainFrame construction/destruction
  85. //------------------------------------------------------------------------------------
  86. CMainFrame::CMainFrame()
  87. {
  88. //m_playAvaterTime = 10;
  89. m_MusicLabel = NULL;
  90. theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_OFF_2007_BLACK);
  91. }
  92. //------------------------------------------------------------------------------------
  93. CMainFrame::~CMainFrame()
  94. {
  95. }
  96. //------------------------------------------------------------------------------------
  97. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  98. {
  99. if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
  100. return -1;
  101. //DlgEditMusic.Create(IDD_DIALOG_EDIT_MUSIC,this);
  102. SetTimer(1,500,NULL);
  103. BOOL bNameValid;
  104. // set the visual manager and style based on persisted value
  105. OnApplicationLook(theApp.m_nAppLook);
  106. // create a view to occupy the client area of the frame
  107. if (!getChildView()->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
  108. {
  109. TRACE0("Failed to create view window\n");
  110. return -1;
  111. }
  112. m_wndRibbonBar.Create(this);
  113. m_wndRibbonBar.EnableKeyTips(FALSE);
  114. CreateDocumentColors();
  115. CreateImageCaches();
  116. m_BrushImages.SetImageSize(CSize(48,48));
  117. BOOL ret = m_BrushImages.Load(_T("..\\Data\\.cache\\Brushes.bmp"));
  118. m_TextureImages.SetImageSize(CSize(48,48));
  119. m_TextureImages.Load(_T("..\\Data\\.cache\\TTextures.bmp"));
  120. InitializeRibbon();
  121. if (!m_wndStatusBar.Create(this))
  122. {
  123. TRACE0("Failed to create status bar\n");
  124. return -1; // fail to create
  125. }
  126. CMFCToolBarImages images2;
  127. images2.SetImageSize(CSize(14, 14));
  128. images2.SetTransparentColor(RGB(0,0,0));
  129. images2.Load(IDB_CAMERAIMAGES);
  130. std::auto_ptr<CMFCRibbonButtonsGroup> apSBGroup2(new CMFCRibbonButtonsGroup);
  131. apSBGroup2->SetImages(&images2, NULL, NULL);
  132. CreateCameraMenu();
  133. apSBGroup2->AddButton(m_CamBtn);
  134. m_wndStatusBar.AddElement(apSBGroup2.release(),_T("Camera Save/Load"));
  135. CString strTitlePane1;
  136. bNameValid = strTitlePane1.LoadString(IDS_STATUS_PANE1);
  137. ASSERT(bNameValid);
  138. m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE1, _T("Camera Position:"), TRUE), _T("Camera Position:"));
  139. m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE3, _T("Ogre FPS: -----"), TRUE), _T("Ogre FPS: -----"));
  140. int FPSState = theApp.GetInt(_T("OgreFPS"), 4);
  141. if(FPSState > 11)
  142. FPSState = 4;
  143. CString strTemp;
  144. strTemp.Format(_T("FPS (%d)"),1000 / FPSLIST[FPSState]);
  145. m_FPSLabel = new CMFCRibbonStatusBarPane(ID_STATUSBAR_EXPANE1,strTemp,TRUE);
  146. m_wndStatusBar.AddExtendedElement(m_FPSLabel,_T("FPS (1000)"),TRUE);
  147. CMFCRibbonSlider* pFPS = new CMFCRibbonSlider(ID_VIEW_FPS,48);
  148. pFPS->SetRange(0,11);
  149. pFPS->SetPos(FPSState,1);
  150. pFPS->SetZoomIncrement(1);
  151. pFPS->SetZoomButtons(true);
  152. bNameValid = strTemp.LoadString(IDS_FPS_TIP);
  153. ASSERT(bNameValid);
  154. pFPS->SetToolTipText(strTemp);
  155. bNameValid = strTemp.LoadString(IDS_FPS_DESC);
  156. ASSERT(bNameValid);
  157. pFPS->SetDescription(strTemp);
  158. m_wndStatusBar.AddExtendedElement(pFPS,_T("FPS Slider"),TRUE);
  159. CMFCToolBarImages images;
  160. images.SetImageSize(CSize(14, 14));
  161. images.SetTransparentColor(RGB(0,0,0));
  162. std::auto_ptr<CMFCRibbonButtonsGroup> apSBGroup1(new CMFCRibbonButtonsGroup);
  163. if (images.Load(IDB_STATUSBAR))
  164. {
  165. apSBGroup1->SetImages(&images, NULL, NULL);
  166. }
  167. apSBGroup1->AddButton(new CMFCRibbonButton(ID_VIEW_BUILDERPLANE, _T(""), 0));
  168. apSBGroup1->AddButton(new CMFCRibbonButton(ID_VIEW_SCENEVIEW, _T(""), 1));
  169. apSBGroup1->AddButton(new CMFCRibbonButton(ID_VIEW_PROPERTIES, _T(""), 2));
  170. m_wndStatusBar.AddExtendedElement(apSBGroup1.release(), _T("View Shortcuts"));
  171. // enable Visual Studio 2005 style docking window behavior
  172. CDockingManager::SetDockingMode(DT_SMART);
  173. // enable Visual Studio 2005 style docking window auto-hide behavior
  174. EnableAutoHidePanes(CBRS_ALIGN_ANY);
  175. // Load menu item image (not placed on any standard toolbars):
  176. CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES_24, IDB_MENU_IMAGES_24);
  177. // create docking windows
  178. if (!CreateDockingWindows())
  179. {
  180. TRACE0("Failed to create docking windows\n");
  181. return -1;
  182. }
  183. m_wndSceneView.EnableDocking(CBRS_ALIGN_ANY);
  184. DockPane(&m_wndSceneView);
  185. m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);
  186. DockPane(&m_wndProperties);
  187. //getCAddEntityWnd()->EnableDocking(CBRS_ALIGN_ANY);
  188. CDockablePane* pTabbedBar = NULL;
  189. //getCAddEntityWnd()->AttachToTabWnd(&m_wndProperties, DM_SHOW, TRUE, &pTabbedBar);
  190. return 0;
  191. }
  192. //------------------------------------------------------------------------------------
  193. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  194. {
  195. if( !CFrameWndEx::PreCreateWindow(cs) )
  196. return FALSE;
  197. cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
  198. cs.lpszClass = AfxRegisterWndClass(0);
  199. return TRUE;
  200. }
  201. //------------------------------------------------------------------------------------
  202. void CMainFrame::InitializeRibbon()
  203. {
  204. BOOL bNameValid;
  205. CString strTemp;
  206. bNameValid = strTemp.LoadString(IDS_RIBBON_FILE);
  207. ASSERT(bNameValid);
  208. // Load panel images:
  209. m_PanelImages.SetImageSize(CSize(16, 16));
  210. m_PanelImages.Load(IDB_BUTTONS);
  211. // Init main button:
  212. m_MainButton.SetImage(IDB_MAIN);
  213. m_MainButton.SetText(_T("\nf"));
  214. m_MainButton.SetToolTipText(strTemp);
  215. m_wndRibbonBar.SetApplicationButton(&m_MainButton, CSize (45, 45));
  216. CMFCRibbonMainPanel* pMainPanel = m_wndRibbonBar.AddMainCategory(strTemp, IDB_FILESMALL, IDB_FILELARGE);
  217. bNameValid = strTemp.LoadString(IDS_RIBBON_NEW);
  218. ASSERT(bNameValid);
  219. pMainPanel->Add(new CMFCRibbonButton(ID_FILE_NEW, strTemp, 0, 0));
  220. bNameValid = strTemp.LoadString(IDS_RIBBON_OPEN);
  221. ASSERT(bNameValid);
  222. pMainPanel->Add(new CMFCRibbonButton(ID_FILE_OPEN, strTemp, 1, 1));
  223. bNameValid = strTemp.LoadString(IDS_RIBBON_SAVE);
  224. ASSERT(bNameValid);
  225. pMainPanel->Add(new CMFCRibbonButton(ID_FILE_SAVE, strTemp, 2, 2));
  226. bNameValid = strTemp.LoadString(IDS_RIBBON_SAVEAS);
  227. ASSERT(bNameValid);
  228. pMainPanel->Add(new CMFCRibbonButton(ID_FILE_SAVE_AS, strTemp, 3, 3));
  229. bNameValid = strTemp.LoadString(IDS_RIBBON_CLOSE);
  230. ASSERT(bNameValid);
  231. pMainPanel->Add(new CMFCRibbonButton(ID_FILE_CLOSE, strTemp, 9, 9));
  232. bNameValid = strTemp.LoadString(IDS_RIBBON_RECENT_DOCS);
  233. ASSERT(bNameValid);
  234. pMainPanel->AddRecentFilesList(strTemp);
  235. bNameValid = strTemp.LoadString(IDS_RIBBON_EXIT);
  236. ASSERT(bNameValid);
  237. pMainPanel->AddToBottom(new CMFCRibbonMainPanelButton(ID_APP_EXIT, strTemp, 15));
  238. CreateHomeCategory();
  239. CreateETLToolsCategory();
  240. CreateMusicToolsCategory();
  241. CreateCustomCategories();
  242. // Add elements to the right side of tabs:
  243. bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE);
  244. ASSERT(bNameValid);
  245. CMFCRibbonButton* pVisualStyleButton = new CMFCRibbonButton(-1, strTemp, -1, -1);
  246. pVisualStyleButton->SetMenu(IDR_THEME_MENU, FALSE /* No default command */, TRUE /* Right align */);
  247. bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE_TIP);
  248. ASSERT(bNameValid);
  249. pVisualStyleButton->SetToolTipText(strTemp);
  250. bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE_DESC);
  251. ASSERT(bNameValid);
  252. pVisualStyleButton->SetDescription(strTemp);
  253. m_wndRibbonBar.AddToTabs(pVisualStyleButton);
  254. // Add quick access toolbar commands:
  255. CList<UINT, UINT> lstQATCmds;
  256. lstQATCmds.AddTail(ID_FILE_NEW);
  257. lstQATCmds.AddTail(ID_FILE_OPEN);
  258. lstQATCmds.AddTail(ID_FILE_SAVE);
  259. m_wndRibbonBar.SetQuickAccessCommands(lstQATCmds);
  260. m_wndRibbonBar.AddToTabs(new CMFCRibbonButton(ID_APP_ABOUT, _T("\na"), m_PanelImages.ExtractIcon (28)));
  261. m_wndRibbonBar.AddToTabs(new CMFCRibbonButton(ID_HELP, _T("\na"), m_PanelImages.ExtractIcon (0)));
  262. }
  263. //------------------------------------------------------------------------------------
  264. BOOL CMainFrame::CreateDockingWindows()
  265. {
  266. BOOL bNameValid;
  267. // Create class view
  268. CString strSceneView;
  269. bNameValid = strSceneView.LoadString(IDS_SCENE_VIEW);
  270. ASSERT(bNameValid);
  271. if (!m_wndSceneView.Create(strSceneView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_SCENEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
  272. {
  273. TRACE0("Failed to create Scene View window\n");
  274. return FALSE; // failed to create
  275. }
  276. // Create properties window
  277. CString strPropertiesWnd;
  278. bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND);
  279. ASSERT(bNameValid);
  280. if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIES, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
  281. {
  282. TRACE0("Failed to create Properties window\n");
  283. return FALSE; // failed to create
  284. }
  285. CString strAddEntity;
  286. bNameValid = strAddEntity.LoadString(IDS_ADDENTITY);
  287. ASSERT(bNameValid);
  288. // if (!getCAddEntityWnd()->Create(strAddEntity, this, CRect(0, 0, 450, 250), TRUE, ID_VIEW_ADDENTITY, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
  289. // {
  290. // TRACE0("Failed to create Add Entity window\n");
  291. // return FALSE; // failed to create
  292. // }
  293. //m_ManagerCDockablePane.CreateDockingWindows(&m_wndProperties);
  294. SetDockingWindowIcons(theApp.m_bHiColorIcons);
  295. return TRUE;
  296. }
  297. //------------------------------------------------------------------------------------
  298. void CMainFrame::SetDockingWindowIcons(BOOL bHiColorIcons)
  299. {
  300. HICON hSceneViewIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_SCENE_VIEW_HC), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
  301. m_wndSceneView.SetIcon(hSceneViewIcon, FALSE);
  302. HICON hPropertiesBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_PROPERTIES_WND_HC), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
  303. m_wndProperties.SetIcon(hPropertiesBarIcon, FALSE);
  304. }
  305. //------------------------------------------------------------------------------------
  306. // CMainFrame diagnostics
  307. //------------------------------------------------------------------------------------
  308. #ifdef _DEBUG
  309. void CMainFrame::AssertValid() const
  310. {
  311. CFrameWndEx::AssertValid();
  312. }
  313. void CMainFrame::Dump(CDumpContext& dc) const
  314. {
  315. CFrameWndEx::Dump(dc);
  316. }
  317. #endif //_DEBUG
  318. //------------------------------------------------------------------------------------
  319. // CMainFrame message handlers
  320. //------------------------------------------------------------------------------------
  321. void CMainFrame::OnSetFocus(CWnd* /*pOldWnd*/)
  322. {
  323. getChildView()->SetFocus();
  324. }
  325. //------------------------------------------------------------------------------------
  326. void CMainFrame::OnSizing(UINT nSide,LPRECT lpRect)
  327. {
  328. CFrameWndEx::OnSizing(nSide,lpRect);
  329. }
  330. //------------------------------------------------------------------------------------
  331. BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
  332. {
  333. // let the view have first crack at the command
  334. if (getChildView()->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
  335. return TRUE;
  336. // otherwise, do default handling
  337. return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  338. }
  339. //------------------------------------------------------------------------------------
  340. void CMainFrame::OnApplicationLook(UINT id)
  341. {
  342. CWaitCursor wait;
  343. theApp.m_nAppLook = id;
  344. switch (theApp.m_nAppLook)
  345. {
  346. case ID_VIEW_APPLOOK_OFF_2007_BLUE:
  347. CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
  348. break;
  349. case ID_VIEW_APPLOOK_OFF_2007_BLACK:
  350. CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
  351. break;
  352. case ID_VIEW_APPLOOK_OFF_2007_SILVER:
  353. CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver);
  354. break;
  355. case ID_VIEW_APPLOOK_OFF_2007_AQUA:
  356. CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua);
  357. break;
  358. }
  359. CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
  360. CDockingManager::SetDockingMode(DT_SMART);
  361. RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
  362. theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook);
  363. }
  364. //------------------------------------------------------------------------------------
  365. void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI)
  366. {
  367. pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID);
  368. }
  369. //------------------------------------------------------------------------------------
  370. void CMainFrame::OnToolChange(UINT id)
  371. {
  372. // CViewportEditor *ovp = gClientRootGetViewport();
  373. // if(ovp)
  374. // ovp->SetEditorTool(id - ID_TOOLS_SELECT);
  375. //
  376. // switch(id)
  377. // {
  378. // case ID_TOOLS_DEFORM:
  379. // case ID_TOOLS_SPLAT:
  380. // case ID_TOOLS_PAINT:
  381. // case ID_TOOLS_SMOOTH:
  382. // theApp.m_OgitorsRoot->GetTerrainEditor()->SetEditMode(id - ID_TOOLS_DEFORM + 1);
  383. // }
  384. // getChildView()->SetFocus();
  385. }
  386. //------------------------------------------------------------------------------------
  387. void CMainFrame::OnUpdateToolChange(CCmdUI* pCmdUI)
  388. {
  389. // CViewportEditor *ovp = gClientRootGetViewport();
  390. // unsigned int EditorTool = 0;
  391. // if(ovp)
  392. // EditorTool = ovp->GetEditorTool();
  393. //
  394. // if(!theApp.m_OgitorsRoot->IsSceneLoaded())
  395. // {
  396. // pCmdUI->Enable(0);
  397. // return;
  398. // }
  399. // switch(pCmdUI->m_nID)
  400. // {
  401. // case ID_TOOLS_SELECT:
  402. // case ID_TOOLS_MOVE:
  403. // case ID_TOOLS_ROTATE:
  404. // case ID_TOOLS_SCALE: pCmdUI->SetCheck((EditorTool + ID_TOOLS_SELECT) == pCmdUI->m_nID);break;
  405. // case ID_TOOLS_DEFORM:
  406. // case ID_TOOLS_SPLAT:
  407. // case ID_TOOLS_PAINT:
  408. // case ID_TOOLS_SMOOTH:
  409. // pCmdUI->Enable(theApp.m_OgitorsRoot->GetSelected() && theApp.m_OgitorsRoot->GetSelected()->IsTerrainType() && theApp.m_OgitorsRoot->IsSceneLoaded());
  410. // pCmdUI->SetCheck(theApp.m_OgitorsRoot->GetTerrainEditor() && (theApp.m_OgitorsRoot->GetTerrainEditor()->GetEditMode() + ID_TOOLS_DEFORM - 1) == pCmdUI->m_nID);
  411. // }
  412. }
  413. //------------------------------------------------------------------------------------
  414. void CMainFrame::OnETLBrushChange()
  415. {
  416. // int id = m_BrushGallery->GetSelectedItem();
  417. // theApp.m_OgitorsRoot->GetTerrainEditor()->SetBrush(m_BrushNames[id]);
  418. // getChildView()->SetFocus();
  419. }
  420. //------------------------------------------------------------------------------------
  421. void CMainFrame::OnETLTextureChange()
  422. {
  423. // int id = m_TTextureGallery->GetSelectedItem();
  424. // theApp.m_OgitorsRoot->GetTerrainEditor()->SetTexture(m_TTextureNames[id]);
  425. // getChildView()->SetFocus();
  426. }
  427. //------------------------------------------------------------------------------------
  428. void CMainFrame::OnETLColorChange()
  429. {
  430. // ColourValue colval;
  431. // COLORREF cr = GetColorFromColorButton(ID_ETL_COLORS);
  432. // colval.setAsABGR(cr);
  433. // theApp.m_OgitorsRoot->GetTerrainEditor()->SetColour(colval);
  434. // getChildView()->SetFocus();
  435. }
  436. //------------------------------------------------------------------------------------
  437. void CMainFrame::OnETLBrushOptionChange(UINT id)
  438. {
  439. // float state = BrushValueTable[GetSliderState(id)];
  440. // CString newlabel;
  441. // switch(id)
  442. // {
  443. // case ID_ETL_BRUSHSIZE:
  444. // {
  445. // theApp.m_OgitorsRoot->GetTerrainEditor()->SetBrushSize(state);
  446. // if(state > 99)
  447. // newlabel.Format(_T("Size (%d)"),(int)state);
  448. // else
  449. // newlabel.Format(_T("Size ( %d )"),(int)state);
  450. // m_BrushSizeLabel->SetText(newlabel);
  451. // m_BrushSizeLabel->Redraw();
  452. // break;
  453. // }
  454. // case ID_ETL_BRUSHINTENSITY:
  455. // {
  456. // theApp.m_OgitorsRoot->GetTerrainEditor()->SetBrushIntensity(state / 5.0f);
  457. // if(state > 99)
  458. // newlabel.Format(_T("Intensity (%d)"),(int)state);
  459. // else
  460. // newlabel.Format(_T("Intensity ( %d )"),(int)state);
  461. // m_BrushIntensityLabel->SetText(newlabel);
  462. // m_BrushIntensityLabel->Redraw();
  463. // break;
  464. // }
  465. // }
  466. // getChildView()->SetFocus();
  467. }
  468. //------------------------------------------------------------------------------------
  469. void CMainFrame::OnETLReLight()
  470. {
  471. // theApp.m_OgitorsRoot->GetTerrainEditor()->CalculateLightMap();
  472. // getChildView()->SetFocus();
  473. }
  474. //------------------------------------------------------------------------------------
  475. void CMainFrame::OnUpdateETLBrushOptions(CCmdUI *pCmdUI)
  476. {
  477. // pCmdUI->Enable(theApp.m_OgitorsRoot->GetSelected() && theApp.m_OgitorsRoot->GetSelected()->IsTerrainType() && theApp.m_OgitorsRoot->IsSceneLoaded());
  478. }
  479. //------------------------------------------------------------------------------------
  480. void CMainFrame::OnAxisChange(UINT id)
  481. {
  482. // int iAxis = (1 << (id - ID_TOOLS_AXISX));
  483. // CViewportEditor *ovp = gClientRootGetViewport();
  484. // unsigned int EditorAxis = 0;
  485. // if(ovp)
  486. // EditorAxis = ovp->GetEditorAxis();
  487. //
  488. // if(EditorAxis & iAxis)
  489. // EditorAxis -= iAxis;
  490. // else
  491. // EditorAxis += iAxis;
  492. //
  493. // if(ovp)
  494. // ovp->SetEditorAxis(EditorAxis);
  495. //
  496. // getChildView()->SetFocus();
  497. // theApp.m_OgitorsRoot->HiLiteWidget(EditorAxis);
  498. }
  499. //------------------------------------------------------------------------------------
  500. void CMainFrame::OnUpdateAxisChange(CCmdUI* pCmdUI)
  501. {
  502. // if(!theApp.m_OgitorsRoot->IsSceneLoaded())
  503. // {
  504. // pCmdUI->Enable(0);
  505. // return;
  506. // }
  507. // int iAxis = (1 << (pCmdUI->m_nID - ID_TOOLS_AXISX));
  508. // CViewportEditor *ovp = gClientRootGetViewport();
  509. // unsigned int EditorAxis = 0;
  510. // if(ovp)
  511. // EditorAxis = ovp->GetEditorAxis();
  512. // pCmdUI->SetRadio(EditorAxis & iAxis);
  513. }
  514. //------------------------------------------------------------------------------------
  515. void CMainFrame::OnFPSCombo()
  516. {
  517. CMFCRibbonSlider* pSlider = (CMFCRibbonSlider*)m_wndStatusBar.GetExElement(1);
  518. int state = pSlider->GetPos();
  519. theApp.m_FPSID = state;
  520. theApp.WriteInt(_T("OgreFPS"), theApp.m_FPSID);
  521. theApp.m_FPSTimer = FPSLIST[state];
  522. CString newlabel;
  523. newlabel.Format(_T("FPS (%d)"),1000 / FPSLIST[state]);
  524. m_FPSLabel->SetText(newlabel);
  525. m_wndStatusBar.RecalcLayout();
  526. m_FPSLabel->Redraw();
  527. }
  528. //------------------------------------------------------------------------------------
  529. void CMainFrame::OnUpdateFPSCombo(CCmdUI* pCmdUI)
  530. {
  531. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneLoaded());
  532. }
  533. //------------------------------------------------------------------------------------
  534. void CMainFrame::OnFileNew()
  535. {
  536. // if(!(theApp.m_OgitorsRoot->TerminateScene()))
  537. // return;
  538. //
  539. // CreateNewProjectOptions();
  540. // CProjectPropertiesSheet *pPropSheet = new CProjectPropertiesSheet(_T("New Scene Settings"),CMFCPropertySheet::PropSheetLook_List,theApp.m_OgitorsRoot->GetProjectOptions());
  541. // if(pPropSheet->DoModal() == IDOK)
  542. // {
  543. // CreateNewSceneFile();
  544. // String newscenefile = theApp.m_OgitorsRoot->GetProjectOptions()->ProjectDir + theApp.m_OgitorsRoot->GetProjectOptions()->ProjectName + ".ogscene";
  545. // CString filename(newscenefile.c_str());
  546. // theApp.m_OgitorsRoot->LoadScene(ConvertToApoString(filename));
  547. // }
  548. //
  549. // delete pPropSheet;
  550. // getChildView()->SetFocus();
  551. }
  552. //------------------------------------------------------------------------------------
  553. void CMainFrame::OnUpdateFileNew(CCmdUI* pCmdUI)
  554. {
  555. pCmdUI->Enable(TRUE);
  556. }
  557. //------------------------------------------------------------------------------------
  558. void CMainFrame::OnOptionsDlg()
  559. {
  560. CProjectPropertiesSheet *pPropSheet = new CProjectPropertiesSheet(_T("Scene Settings"),CMFCPropertySheet::PropSheetLook_List,theApp.m_OgitorsRoot->GetProjectOptions());
  561. if(pPropSheet->DoModal() == IDOK)
  562. {
  563. ::SendMessage(getChildView()->GetSafeHwnd(),WM_RELOADUSERRESOURCES,0,0);
  564. }
  565. delete pPropSheet;
  566. getChildView()->SetFocus();
  567. }
  568. //------------------------------------------------------------------------------------
  569. void CMainFrame::OnUpdateOptionsDlg(CCmdUI* pCmdUI)
  570. {
  571. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneLoaded());
  572. }
  573. //------------------------------------------------------------------------------------
  574. void CMainFrame::OnFileOpen()
  575. {
  576. // if(!(theApp.m_OgitorsRoot->TerminateScene()))
  577. // return;
  578. // int ret = theApp.m_OgitorsRoot->LoadScene("");
  579. // if(ret == SCF_CANCEL)
  580. // return;
  581. // if( ret != SCF_OK )
  582. // {
  583. // AfxMessageBox(_T("Error Loading file"),MB_OK);
  584. // return;
  585. // }
  586. // getChildView()->SetFocus();
  587. }
  588. //------------------------------------------------------------------------------------
  589. void CMainFrame::OnUpdateFileOpen(CCmdUI* pCmdUI)
  590. {
  591. pCmdUI->Enable(TRUE);
  592. }
  593. //------------------------------------------------------------------------------------
  594. void CMainFrame::OnFileSave()
  595. {
  596. // theApp.m_OgitorsRoot->SaveScene(false);
  597. // getChildView()->SetFocus();
  598. }
  599. //------------------------------------------------------------------------------------
  600. void CMainFrame::OnUpdateFileSave(CCmdUI* pCmdUI)
  601. {
  602. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneModified());
  603. }
  604. //------------------------------------------------------------------------------------
  605. void CMainFrame::OnFileSaveAs()
  606. {
  607. // theApp.m_OgitorsRoot->SaveScene(true);
  608. // getChildView()->SetFocus();
  609. }
  610. //------------------------------------------------------------------------------------
  611. void CMainFrame::OnUpdateFileSaveAs(CCmdUI* pCmdUI)
  612. {
  613. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneLoaded());
  614. }
  615. //------------------------------------------------------------------------------------
  616. void CMainFrame::OnFileClose()
  617. {
  618. // theApp.m_OgitorsRoot->TerminateScene();
  619. }
  620. //------------------------------------------------------------------------------------
  621. void CMainFrame::OnUpdateFileClose(CCmdUI* pCmdUI)
  622. {
  623. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneLoaded());
  624. }
  625. //------------------------------------------------------------------------------------
  626. void CMainFrame::OnAddObject(UINT id)
  627. {
  628. // NameValuePairList params;
  629. // params["init"] = true;
  630. //
  631. // int typeID = id - ID_OBJECTS_START;
  632. //
  633. // StringVector objectList = theApp.m_OgitorsRoot->GetSortedTypeList();
  634. // OGITORREGISTRATIONSTRUCT *data = theApp.m_OgitorsRoot->GetTypeData(objectList[typeID]);
  635. // CViewportEditor *ovp = gClientRootGetViewport();
  636. //
  637. // if(data->TypeName == "Entity Object")
  638. // ShowPane(&getCAddEntityWnd(),true,false,true);
  639. // else if(data->RequirePlacement)
  640. // {
  641. // if(ovp)
  642. // ovp->TryAddObject(data->TypeName,"");
  643. // }
  644. // else
  645. // theApp.m_OgitorsRoot->CreateEditorObject(0,data->TypeName,params,true,true);
  646. //
  647. // getChildView()->SetFocus();
  648. }
  649. //------------------------------------------------------------------------------------
  650. void CMainFrame::OnUpdateAddObject(CCmdUI* pCmdUI)
  651. {
  652. // int typeID = pCmdUI->m_nID - ID_OBJECTS_START;
  653. //
  654. // StringVector objectList = theApp.m_OgitorsRoot->GetSortedTypeList();
  655. // OGITORREGISTRATIONSTRUCT *data = theApp.m_OgitorsRoot->GetTypeData(objectList[typeID]);
  656. //
  657. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneLoaded() && theApp.m_OgitorsRoot->CanInstantiateObject(data->TypeName));
  658. }
  659. //------------------------------------------------------------------------------------
  660. void CMainFrame::OnViewTab(UINT id)
  661. {
  662. // switch(id)
  663. // {
  664. // case ID_VIEW_ADDVIEWPORT:
  665. // {
  666. // NameValuePairList params;
  667. // gClientRootCreateEditorObject(0,"Viewport Object",params,true,true);
  668. // break;
  669. // }
  670. // case ID_VIEW_PROPERTIES:
  671. // {
  672. // ShowPane(&m_wndProperties,!m_wndProperties.IsVisible(),false,false);
  673. // break;
  674. // }
  675. // case ID_VIEW_SCENEVIEW:
  676. // {
  677. // ShowPane(&m_wndSceneView,!m_wndSceneView.IsVisible(),false,false);
  678. // break;
  679. // }
  680. // case ID_VIEW_BUILDERPLANE:
  681. // {
  682. // CViewportEditor *ovp = gClientRootGetViewport();
  683. // if(ovp)
  684. // ovp->ShowGrid();
  685. // break;
  686. // }
  687. // }
  688. // getChildView()->SetFocus();
  689. }
  690. //------------------------------------------------------------------------------------
  691. void CMainFrame::OnUpdateViewTab(CCmdUI *pCmdUI)
  692. {
  693. // switch(pCmdUI->m_nID)
  694. // {
  695. // case ID_VIEW_ADDVIEWPORT:
  696. // {
  697. // pCmdUI->Enable(gClientRootIsSceneLoaded());
  698. // break;
  699. // }
  700. // case ID_VIEW_PROPERTIES:
  701. // {
  702. // pCmdUI->SetCheck(m_wndProperties.IsVisible());
  703. // break;
  704. // }
  705. // case ID_VIEW_SCENEVIEW:
  706. // {
  707. // pCmdUI->SetCheck(m_wndSceneView.IsVisible());
  708. // break;
  709. // }
  710. // case ID_VIEW_BUILDERPLANE:
  711. // {
  712. // CViewportEditor *ovp = gClientRootGetViewport();
  713. // if(ovp)
  714. // {
  715. // pCmdUI->SetCheck(ovp->IsGridVisible());
  716. // pCmdUI->Enable(1);
  717. // }
  718. // else
  719. // {
  720. // pCmdUI->SetCheck(0);
  721. // pCmdUI->Enable(0);
  722. // }
  723. // break;
  724. // }
  725. // }
  726. }
  727. //------------------------------------------------------------------------------------
  728. void CMainFrame::OnUpdateViewMenu(CCmdUI *pCmdUI)
  729. {
  730. pCmdUI->Enable();
  731. }
  732. //------------------------------------------------------------------------------------
  733. void CMainFrame::OnUpdateCameraOptions(CCmdUI *pCmdUI)
  734. {
  735. // PROJECTOPTIONS *pOpt = theApp.m_OgitorsRoot->GetProjectOptions();
  736. // PolygonMode polymode = PM_SOLID;
  737. // if(gClientRootGetViewport())
  738. // polymode = gClientRootGetViewport()->GetCameraEditor()->GetCamera()->getPolygonMode();
  739. // if(!theApp.m_OgitorsRoot->IsSceneLoaded())
  740. // {
  741. // pCmdUI->Enable(0);
  742. // return;
  743. // }
  744. //
  745. // CViewportEditor *ovp = gClientRootGetViewport();
  746. // float CameraSpeed = 0.0f;
  747. // if(ovp)
  748. // CameraSpeed = ovp->GetCameraSpeed();
  749. // switch(pCmdUI->m_nID)
  750. // {
  751. // case ID_CAMERA_SAVE:pCmdUI->Enable(pOpt->CameraSaveCount != 10);break;
  752. // case ID_CAMERA_SPEED_INCREASE:pCmdUI->Enable(1);break;
  753. // case ID_CAMERA_SPEED_DECREASE:pCmdUI->Enable(CameraSpeed > 1.0f);break;
  754. // case ID_CAMERA_MODE_SOLID:pCmdUI->Enable(1);pCmdUI->SetRadio(polymode == PM_SOLID);break;
  755. // case ID_CAMERA_MODE_WIREFRAME:pCmdUI->Enable(1);pCmdUI->SetRadio(polymode == PM_WIREFRAME);break;
  756. // case ID_CAMERA_MODE_POINT:pCmdUI->Enable(1);pCmdUI->SetRadio(polymode == PM_POINTS);break;
  757. // case ID_CAMERA_0:
  758. // case ID_CAMERA_REMOVE_0:pCmdUI->Enable(pOpt->CameraSaveCount > 0);break;
  759. // case ID_CAMERA_1:
  760. // case ID_CAMERA_REMOVE_1:pCmdUI->Enable(pOpt->CameraSaveCount > 1);break;
  761. // case ID_CAMERA_2:
  762. // case ID_CAMERA_REMOVE_2:pCmdUI->Enable(pOpt->CameraSaveCount > 2);break;
  763. // case ID_CAMERA_3:
  764. // case ID_CAMERA_REMOVE_3:pCmdUI->Enable(pOpt->CameraSaveCount > 3);break;
  765. // case ID_CAMERA_4:
  766. // case ID_CAMERA_REMOVE_4:pCmdUI->Enable(pOpt->CameraSaveCount > 4);break;
  767. // case ID_CAMERA_5:
  768. // case ID_CAMERA_REMOVE_5:pCmdUI->Enable(pOpt->CameraSaveCount > 5);break;
  769. // case ID_CAMERA_6:
  770. // case ID_CAMERA_REMOVE_6:pCmdUI->Enable(pOpt->CameraSaveCount > 6);break;
  771. // case ID_CAMERA_7:
  772. // case ID_CAMERA_REMOVE_7:pCmdUI->Enable(pOpt->CameraSaveCount > 7);break;
  773. // case ID_CAMERA_8:
  774. // case ID_CAMERA_REMOVE_8:pCmdUI->Enable(pOpt->CameraSaveCount > 8);break;
  775. // case ID_CAMERA_9:
  776. // case ID_CAMERA_REMOVE_9:pCmdUI->Enable(pOpt->CameraSaveCount > 9);break;
  777. // }
  778. }
  779. //------------------------------------------------------------------------------------
  780. void CMainFrame::OnClose()
  781. {
  782. // if(theApp.m_OgitorsRoot->TerminateScene())
  783. // {
  784. // CFrameWndEx::OnClose();
  785. // }
  786. }
  787. //------------------------------------------------------------------------------------
  788. void CMainFrame::OnCameraOptions(UINT id)
  789. {
  790. // PROJECTOPTIONS *pOpt = theApp.m_OgitorsRoot->GetProjectOptions();
  791. // CViewportEditor *ovp = gClientRootGetViewport();
  792. //
  793. // switch(id)
  794. // {
  795. // case ID_CAMERA_SAVE:SaveCamPos();break;
  796. // case ID_CAMERA_SPEED_INCREASE:if(ovp) ovp->MultiplyCameraSpeed(1.2f);break;
  797. // case ID_CAMERA_SPEED_DECREASE:if(ovp) ovp->MultiplyCameraSpeed(1.0f / 1.2f);break;
  798. // case ID_CAMERA_MODE_SOLID:getChildView()->SetCameraMode(PM_SOLID);break;
  799. // case ID_CAMERA_MODE_WIREFRAME:getChildView()->SetCameraMode(PM_WIREFRAME);break;
  800. // case ID_CAMERA_MODE_POINT:getChildView()->SetCameraMode(PM_POINTS);break;
  801. // default:
  802. // {
  803. // int pos = id - ID_CAMERA_0;
  804. // if(theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera() && pos < pOpt->CameraSaveCount)
  805. // {
  806. // theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera()->setPosition(pOpt->CameraPositions[pos]);
  807. // theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera()->setOrientation(pOpt->CameraOrientations[pos]);
  808. // }
  809. // }
  810. // }
  811. // getChildView()->SetFocus();
  812. }
  813. //------------------------------------------------------------------------------------
  814. void CMainFrame::OnCameraDelete(UINT id)
  815. {
  816. DeleteCamPos(id - ID_CAMERA_REMOVE_0);
  817. getChildView()->SetFocus();
  818. }
  819. //------------------------------------------------------------------------------------
  820. void CMainFrame::SaveCamPos()
  821. {
  822. // PROJECTOPTIONS *pOpt = theApp.m_OgitorsRoot->GetProjectOptions();
  823. // if(pOpt->CameraSaveCount == 10)
  824. // return;
  825. // if(!(theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera()))
  826. // return;
  827. //
  828. // pOpt->CameraPositions[pOpt->CameraSaveCount] = theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera()->getDerivedPosition();
  829. // pOpt->CameraOrientations[pOpt->CameraSaveCount] = theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera()->getDerivedOrientation();
  830. //
  831. // CString menustr;
  832. // menustr.Format(_T("Camera %d: <%.1f,%.1f,%.1f>"),pOpt->CameraSaveCount,pOpt->CameraPositions[pOpt->CameraSaveCount].x,pOpt->CameraPositions[pOpt->CameraSaveCount].y,pOpt->CameraPositions[pOpt->CameraSaveCount].z);
  833. // m_CamBtn->GetSubItems().GetAt(pOpt->CameraSaveCount)->SetText(menustr);
  834. // pOpt->CameraSaveCount++;
  835. }
  836. //------------------------------------------------------------------------------------
  837. void CMainFrame::DeleteCamPos(int Index)
  838. {
  839. // PROJECTOPTIONS *pOpt = theApp.m_OgitorsRoot->GetProjectOptions();
  840. // if(pOpt->CameraSaveCount == 0)
  841. // return;
  842. // if(!(theApp.m_OgitorsRoot->GetViewport()->GetCameraEditor()->GetCamera()))
  843. // return;
  844. //
  845. // for(int i =Index;i < pOpt->CameraSaveCount;i++)
  846. // {
  847. // pOpt->CameraPositions[i] = pOpt->CameraPositions[i + 1];
  848. // pOpt->CameraOrientations[i] = pOpt->CameraOrientations[i + 1];
  849. // CString menustr;
  850. // menustr.Format(_T("Camera %d: <%.1f,%.1f,%.1f>"),i,pOpt->CameraPositions[i].x,pOpt->CameraPositions[i].y,pOpt->CameraPositions[i].z);
  851. // m_CamBtn->GetSubItems().GetAt(i)->SetText(menustr);
  852. // }
  853. // m_CamBtn->GetSubItems().GetAt(pOpt->CameraSaveCount - 1)->SetText(_T("(Empty)"));
  854. // pOpt->CameraSaveCount--;
  855. }
  856. //------------------------------------------------------------------------------------
  857. void CMainFrame::SetCameraPositions()
  858. {
  859. // PROJECTOPTIONS *pOpt = theApp.m_OgitorsRoot->GetProjectOptions();
  860. //
  861. // for(int i =0;i < pOpt->CameraSaveCount;i++)
  862. // {
  863. // CString menustr;
  864. // menustr.Format(_T("Camera %d: <%.1f,%.1f,%.1f>"),i,pOpt->CameraPositions[i].x,pOpt->CameraPositions[i].y,pOpt->CameraPositions[i].z);
  865. // m_CamBtn->GetSubItems().GetAt(i)->SetText(menustr);
  866. // }
  867. // for(int i = pOpt->CameraSaveCount;i < 10;i++)
  868. // {
  869. // m_CamBtn->GetSubItems().GetAt(i)->SetText(_T("(Empty)"));
  870. // }
  871. }
  872. //------------------------------------------------------------------------------------
  873. void CMainFrame::OnEditorHotKey(UINT id)
  874. {
  875. // CViewportEditor *ovp = gClientRootGetViewport();
  876. //
  877. // switch(id)
  878. // {
  879. // case ID_TOOLS_FOCUS:if(ovp) ovp->FocusSelectedObject();break;
  880. // case ID_TOOLS_DELETE:if(ovp) ovp->DeleteSelectedObject();break;
  881. // }
  882. }
  883. //------------------------------------------------------------------------------------
  884. void CMainFrame::OnHelp()
  885. {
  886. ::HtmlHelp(GetSafeHwnd(),_T("Ogitor.chm::Introduction.htm"),HH_DISPLAY_TOPIC,NULL);
  887. }
  888. //------------------------------------------------------------------------------------
  889. void CMainFrame::CreateNewProjectOptions()
  890. {
  891. // TCHAR buffer[500];
  892. //
  893. // GetModuleFileName(NULL,buffer,500);
  894. //
  895. // PROJECTOPTIONS *pOpt = theApp.m_OgitorsRoot->GetProjectOptions();
  896. //
  897. // pOpt->IsNewProject = true;
  898. // pOpt->ProjectName = "<Enter New Name>";
  899. // pOpt->ProjectDir = ConvertToApoString(ExtractFilePath(buffer));
  900. // pOpt->CreatedIn = pOpt->ProjectDir;
  901. // pOpt->SceneManagerName = "OctreeSceneManager";
  902. // pOpt->ETLDirectory = "ETL";
  903. // pOpt->HydraxDirectory = "Hydrax";
  904. // pOpt->CaelumDirectory = "Caelum";
  905. // pOpt->PagedGeometryDirectory = "PagedGeometry";
  906. // pOpt->SceneManagerConfigFile = "";
  907. // pOpt->CameraSaveCount = 0;
  908. // pOpt->ResourceDirectories.clear();
  909. }
  910. //------------------------------------------------------------------------------------
  911. void CMainFrame::CreateNewSceneFile()
  912. {
  913. // char buffer[5000];
  914. // String filename = theApp.m_OgitorsRoot->GetProjectOptions()->ProjectDir + theApp.m_OgitorsRoot->GetProjectOptions()->ProjectName + ".ogscene";
  915. // std::ofstream outfile(filename.c_str());
  916. // outfile << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
  917. // theApp.m_OgitorsRoot->WriteProjectOptions(outfile,true);
  918. // sprintf_s(buffer,5000,NewSceneDefinition,theApp.m_OgitorsRoot->GetProjectOptions()->SceneManagerName.c_str(),theApp.m_OgitorsRoot->GetProjectOptions()->SceneManagerName.c_str(),theApp.m_OgitorsRoot->GetProjectOptions()->SceneManagerConfigFile.c_str());
  919. // outfile << buffer;
  920. // outfile.close();
  921. }
  922. //------------------------------------------------------------------------------------
  923. void CMainFrame::OnUserDefinedProperty(UINT id)
  924. {
  925. // if(id == ID_ADDUSERDEFINED)
  926. // {
  927. // CUserDefinedPropertyDlg dlg(theApp.GetMainWnd(),theApp.m_OgitorsRoot->GetSelected()->GetEditorType());
  928. //
  929. // if(dlg.DoModal() == IDOK)
  930. // {
  931. // CBaseEditor *ed = theApp.m_OgitorsRoot->GetSelected();
  932. // if(m_wndProperties.m_CurrentProperty)
  933. // {
  934. // ed->AddCustomProperty(m_wndProperties.m_CurrentProperty->GetData(),dlg.m_Name,dlg.m_TypeName);
  935. // }
  936. // else
  937. // ed->AddCustomProperty(dlg.m_Name,dlg.m_TypeName);
  938. //
  939. // ed->SetSelected(false);
  940. // ed->SetSelected(true);
  941. // }
  942. // }
  943. // else if(id == ID_DELETEUSERDEFINED)
  944. // {
  945. // CBaseEditor *ed = theApp.m_OgitorsRoot->GetSelected();
  946. // ed->DeleteCustomProperty(m_wndProperties.m_CurrentProperty->GetData());
  947. // ed->SetSelected(false);
  948. // ed->SetSelected(true);
  949. // }
  950. // else
  951. // {
  952. // }
  953. }
  954. //------------------------------------------------------------------------------------
  955. void CMainFrame::OnUpdateUserDefinedProperty(CCmdUI* pCmdUI)
  956. {
  957. switch(pCmdUI->m_nID)
  958. {
  959. case ID_ADDUSERDEFINED:pCmdUI->Enable(TRUE);return;
  960. case ID_DELETEUSERDEFINED:
  961. case ID_EDITUSERDEFINED:pCmdUI->Enable((int)m_wndProperties.m_CurrentProperty);return;
  962. }
  963. pCmdUI->Enable(TRUE);
  964. }
  965. //------------------------------------------------------------------------------------
  966. // void CMainFrame::UpdateTerrainOptions(CTerrainEditor *terrain)
  967. // {
  968. // int id = m_BrushGallery->GetSelectedItem();
  969. // terrain->SetBrush(m_BrushNames[id]);
  970. //
  971. // id = m_TTextureGallery->GetSelectedItem();
  972. // terrain->SetTexture(m_TTextureNames[id]);
  973. //
  974. // ColourValue colval;
  975. // COLORREF cr = GetColorFromColorButton(ID_ETL_COLORS);
  976. // colval.setAsABGR(cr);
  977. // terrain->SetColour(colval);
  978. //
  979. // float state = BrushValueTable[GetSliderState(ID_ETL_BRUSHSIZE)];
  980. // terrain->SetBrushSize(state);
  981. //
  982. // state = BrushValueTable[GetSliderState(ID_ETL_BRUSHINTENSITY)];
  983. // terrain->SetBrushIntensity(state / 5.0f);
  984. // terrain->SetEditMode(0);
  985. /*}*/
  986. //------------------------------------------------------------------------------------
  987. void CMainFrame::OnImportPlugins(UINT id)
  988. {
  989. // CMFCRibbonButton *Btn = (CMFCRibbonButton*)m_wndRibbonBar.FindByID(id,FALSE);
  990. // if(Btn)
  991. // {
  992. // try
  993. // {
  994. // theApp.m_OgitorsRoot->TriggerImportSerializer(ConvertToApoString(Btn->GetText()));
  995. // }
  996. // // catch(...)
  997. // // {
  998. // // AfxMessageBox( _T("An Error Occured trying to Import File"), MB_OK );
  999. // // }
  1000. //
  1001. // catch (Exception& e)
  1002. // {
  1003. // MessageBoxA(NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_ICONERROR | MB_TASKMODAL);
  1004. // }
  1005. // }
  1006. }
  1007. //------------------------------------------------------------------------------------
  1008. void CMainFrame::OnUpdateImportPlugins(CCmdUI *pCmdUI)
  1009. {
  1010. pCmdUI->Enable(TRUE);
  1011. }
  1012. //------------------------------------------------------------------------------------
  1013. void CMainFrame::OnExportPlugins(UINT id)
  1014. {
  1015. // CMFCRibbonButton *Btn = (CMFCRibbonButton*)m_wndRibbonBar.FindByID(id,FALSE);
  1016. // if(Btn)
  1017. // {
  1018. // try
  1019. // {
  1020. // theApp.m_OgitorsRoot->TriggerExportSerializer(ConvertToApoString(Btn->GetText()));
  1021. // }
  1022. // // catch(...)
  1023. // // {
  1024. // // AfxMessageBox( _T("An Error Occured trying to Export File"), MB_OK );
  1025. // // }
  1026. // catch (Exception& e)
  1027. // {
  1028. // MessageBoxA(NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_ICONERROR | MB_TASKMODAL);
  1029. // }
  1030. // }
  1031. }
  1032. //------------------------------------------------------------------------------------
  1033. void CMainFrame::OnUpdateExportPlugins(CCmdUI *pCmdUI)
  1034. {
  1035. // pCmdUI->Enable(theApp.m_OgitorsRoot->IsSceneLoaded());
  1036. }
  1037. //------------------------------------------------------------------------------------
  1038. void CMainFrame::OnUndoRedo(UINT id)
  1039. {
  1040. // if(OgitorsUndoManager::getSingletonPtr())
  1041. // {
  1042. // switch(id)
  1043. // {
  1044. // case ID_OGITOR_UNDO:OgitorsUndoManager::getSingletonPtr()->Undo();break;
  1045. // case ID_OGITOR_REDO:OgitorsUndoManager::getSingletonPtr()->Redo();break;
  1046. // }
  1047. // }
  1048. }
  1049. //------------------------------------------------------------------------------------
  1050. void CMainFrame::OnUpdateUndoRedo(CCmdUI *pCmdUI)
  1051. {
  1052. // CString desc;
  1053. //
  1054. // if(OgitorsUndoManager::getSingletonPtr())
  1055. // {
  1056. // switch(pCmdUI->m_nID)
  1057. // {
  1058. // case ID_OGITOR_UNDO:
  1059. // {
  1060. // pCmdUI->Enable(OgitorsUndoManager::getSingletonPtr()->CanUndo());
  1061. // desc = OgitorsUndoManager::getSingletonPtr()->GetUndoString().c_str();
  1062. // break;
  1063. // }
  1064. // case ID_OGITOR_REDO:
  1065. // {
  1066. // pCmdUI->Enable(OgitorsUndoManager::getSingletonPtr()->CanRedo());
  1067. // desc = OgitorsUndoManager::getSingletonPtr()->GetRedoString().c_str();
  1068. // break;
  1069. // }
  1070. // }
  1071. // }
  1072. // else
  1073. // {
  1074. // pCmdUI->Enable(false);
  1075. // desc = _T("");
  1076. // }
  1077. //
  1078. // CMFCRibbonButton *Btn = (CMFCRibbonButton*)m_wndRibbonBar.FindByID(pCmdUI->m_nID,FALSE);
  1079. // Btn->SetDescription(desc);
  1080. }
  1081. //------------------------------------------------------------------------------------
  1082. void CMainFrame::OnCustomGUI(UINT id)
  1083. {
  1084. //gClientRootOnCustomGUI(id);
  1085. }
  1086. //------------------------------------------------------------------------------------
  1087. void CMainFrame::OnUpdateCustomGUI(CCmdUI *pCmdUI)
  1088. {
  1089. // UpdateEvent evt = gClientRootOnUpdateCustomGUI(pCmdUI->m_nID);
  1090. // if(evt.GetID() != -1)
  1091. // {
  1092. // pCmdUI->SetCheck(evt.GetChecked()?1:0);
  1093. // pCmdUI->Enable(evt.GetEnabled()?1:0);
  1094. // if(evt.GetWidget()->GetType() != WIDGET_EDIT)
  1095. // {
  1096. // CString caption(evt.GetCaption().c_str());
  1097. // pCmdUI->SetText(caption);
  1098. // }
  1099. // }
  1100. }
  1101. void CMainFrame::OnMusicGUI(UINT id)
  1102. {
  1103. // switch(id)
  1104. // {
  1105. // case ID_MUSIC_BRUSHSIZE:
  1106. //
  1107. //
  1108. //
  1109. // theApp.m_OgitorsRoot->GetSoundEditor()->SetPos(m_MusicLabel->GetPos());
  1110. //
  1111. //
  1112. //
  1113. //
  1114. // // if (theApp.m_OgitorsRoot->GetSoundEditor()&&m_MusicLabel )
  1115. // // {
  1116. // // m_MusicLabel->SetPos(theApp.m_OgitorsRoot->GetSoundEditor()->getPos());
  1117. // //
  1118. // // CString newlabel;
  1119. // // newlabel.Format(_T("(%d) second"),(int)theApp.m_OgitorsRoot->GetSoundEditor()->getPlayPos());
  1120. // // //newlabel.Format(_T("(%d) %"),(int)theApp.m_OgitorsRoot->GetSoundEditor()->getPos());
  1121. // // m_MusicSizeLabel->SetText(newlabel);
  1122. // // }
  1123. //
  1124. // break;
  1125. //
  1126. // case ID_TOOLS_PLAY:
  1127. // theApp.m_OgitorsRoot->GetCameraEditor()->play();
  1128. // theApp.m_OgitorsRoot->GetSoundEditor()->play();
  1129. // theApp.m_OgitorsRoot->GetAvatarEditor()->openPause();
  1130. // DlgEditMusic.m_bAvatarAnimation = true;
  1131. // break;
  1132. // case ID_TOOLS_PAUSE:
  1133. // theApp.m_OgitorsRoot->GetCameraEditor()->pause();
  1134. // theApp.m_OgitorsRoot->GetSoundEditor()->pause();
  1135. // theApp.m_OgitorsRoot->GetAvatarEditor()->pause();
  1136. // break;
  1137. // case ID_TOOLS_STOP:
  1138. // theApp.m_OgitorsRoot->GetCameraEditor()->stop();
  1139. // theApp.m_OgitorsRoot->GetSoundEditor()->stop();
  1140. // theApp.m_OgitorsRoot->GetAvatarEditor()->stop();
  1141. // break;
  1142. // case ID_TOOLS_SETMUSIC:
  1143. // //CDlgEditMusic DlgEditMusic;
  1144. //
  1145. // DlgEditMusic.ShowWindow(SW_SHOW);
  1146. //
  1147. //
  1148. //
  1149. //
  1150. // break;
  1151. //
  1152. // }
  1153. }
  1154. //
  1155. // void CMainFrame::OnUpdateMusicGUI(CCmdUI *pCmdUI)
  1156. // {
  1157. // if (theApp.m_OgitorsRoot->GetAvatarEditor() != NULL)
  1158. // {
  1159. // pCmdUI->SetCheck(TRUE);
  1160. // pCmdUI->Enable(TRUE);
  1161. // }
  1162. // else
  1163. // {
  1164. // pCmdUI->Enable(FALSE);
  1165. //
  1166. // }
  1167. //
  1168. // }
  1169. void CMainFrame::OnTimer(UINT nIDEvent)
  1170. {
  1171. // if (theApp.m_OgitorsRoot->GetSoundEditor()&&m_MusicLabel )
  1172. // {
  1173. // m_MusicLabel->SetPos(theApp.m_OgitorsRoot->GetSoundEditor()->getPos());
  1174. // float time = theApp.m_OgitorsRoot->GetSoundEditor()->getPlayPos();
  1175. // CString newlabel;
  1176. // newlabel.Format(_T("(%f) second"),time);
  1177. // //newlabel.Format(_T("(%d) %"),(int)theApp.m_OgitorsRoot->GetSoundEditor()->getPos());
  1178. // m_MusicSizeLabel->SetText(newlabel);
  1179. //
  1180. // if (theApp.m_OgitorsRoot->GetSoundEditor()->isplay())
  1181. // {
  1182. // float m_playAvaterTime = StringConverter::parseReal(ConvertToApoString(DlgEditMusic.m_stateTime));
  1183. // if ((int)time == (int)m_playAvaterTime)
  1184. // {
  1185. // if (DlgEditMusic.m_bAvatarAnimation == true)
  1186. // {
  1187. // theApp.m_OgitorsRoot->GetAvatarEditor()->play();
  1188. // DlgEditMusic.m_bAvatarAnimation = false;
  1189. // }
  1190. // }
  1191. // }
  1192. //
  1193. // UpdateData(FALSE);
  1194. // m_wndRibbonBar.Invalidate();
  1195. //
  1196. // // CPaintDC dc(this);
  1197. // // m_MusicSizeLabel->OnDraw(&dc);
  1198. //
  1199. // }
  1200. }
  1201. //------------------------------------------------------------------------------------