khanat-opennel-code/code/nel/tools/3d/object_viewer/main_frame.h

232 lines
7.8 KiB
C++

// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#if !defined(AFX_MAIN_FRAME_H__90D61263_7782_11D5_9CD4_0050DAC3A412__INCLUDED_)
#define AFX_MAIN_FRAME_H__90D61263_7782_11D5_9CD4_0050DAC3A412__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// main_frame.h : header file
//
class CSceneDlgMouseListener : public NLMISC::IEventListener
{
public:
class CObjectViewer *ObjViewerDlg ;
class CMainFrame *SceneDlg ;
/**
* Register the listener to the server.
*/
void addToServer (NLMISC::CEventServer& server);
void releaseFromServer (NLMISC::CEventServer& server);
protected:
virtual void operator ()(const class NLMISC::CEvent& event) ;
} ;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame frame
typedef void (*winProc)(NL3D::IDriver *drv, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
class CMainFrame : public CFrameWnd
{
//DECLARE_DYNCREATE(CMainFrame)
public:
CMainFrame( CObjectViewer *objView, winProc );
virtual ~CMainFrame();
// Attributes
public:
enum TMouseMove {MoveCamera=0, MoveSceneRoot, MoveElement, MoveObjectLightTest, MoveFX, MoveFXUserMatrix };
enum TCameraMode {FirstMode=0, ObjectMode, CameraMode };
CStatusBar StatusBar;
CToolBar ToolBar;
winProc DriverWindowProc;
CObjectViewer *ObjView;
bool ShowInfo;
bool AnimationWindow;
bool AnimationSetWindow;
bool MixerSlotsWindow;
bool ParticlesWindow;
bool DayNightWindow;
bool WaterPoolWindow;
bool VegetableWindow;
bool GlobalWindWindow;
bool SoundAnimWindow;
bool LightGroupWindow;
bool ChooseFrameDelayWindow;
bool ChooseBGColorWindow;
bool ChooseSunColorWindow;
bool SkeletonScaleWindow;
bool TuneMRMWindow;
TMouseMove MouseMoveType;
bool X;
bool Y;
bool Z;
uint MoveMode;
float MoveSpeed;
NLMISC::CRGBA BgColor;
bool Euler;
float GlobalWindPower;
bool FogActive;
float FogStart;
float FogEnd;
void update ();
void registerValue (bool update=true);
bool isMoveCamera() const {return MouseMoveType==MoveCamera;}
bool isMoveSceneRoot() const {return MouseMoveType==MoveSceneRoot;}
bool isMoveElement() const {return MouseMoveType==MoveElement;}
bool isMoveFX() const {return MouseMoveType==MoveFX;}
bool isMoveFXUserMatrix() const {return MouseMoveType==MoveFXUserMatrix;}
bool isMoveObjectLightTest() const {return MouseMoveType==MoveObjectLightTest;}
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
// Implementation
protected:
public:
// Generated message map functions
//{{AFX_MSG(CMainFrame)
afx_msg void OnReloadTextures();
afx_msg void OnClear();
afx_msg void OnEditMoveelement();
afx_msg void OnEditMoveFX();
afx_msg void OnEditMoveFXUserMatrix();
afx_msg void OnEditX();
afx_msg void OnEditY();
afx_msg void OnEditZ();
afx_msg void OnEnableElementXrotate();
afx_msg void OnEnableElementYrotate();
afx_msg void OnEnableElementZrotate();
afx_msg void OnFileExit();
afx_msg void OnFileLoadconfig();
afx_msg void OnFileOpen();
afx_msg void OnFileSaveconfig();
afx_msg void OnViewFirstpersonmode();
afx_msg void OnViewCamera();
afx_msg void OnViewObjectmode();
afx_msg void OnResetCamera();
afx_msg void OnViewSetbackground();
afx_msg void OnViewSetmovespeed();
afx_msg void OnActivateFog();
afx_msg void OnSetupFog();
afx_msg void OnWindowAnimation();
afx_msg void OnWindowAnimationset();
afx_msg void OnWindowMixersslots();
afx_msg void OnWindowParticles();
afx_msg void OnWindowDayNight();
afx_msg void OnWindowWaterPool();
afx_msg void OnWindowSoundAnim();
afx_msg void OnWindowChooseFrameDelay();
afx_msg void OnWindowChooseBGColor();
afx_msg void OnWindowChooseSunColor();
afx_msg void OnSetLightGroupFactor();
afx_msg void OnShowSceneMatrix();
afx_msg void OnShowOcclusionTestMeshs();
afx_msg void OnShowFXMatrix();
afx_msg void OnShowFXUserMatrix();
afx_msg void OnUpdateShowSceneMatrix(CCmdUI* pCmdUI);
afx_msg void OnUpdateShowFXMatrix(CCmdUI* pCmdUI);
afx_msg void OnUpdateShowFXUserMatrix(CCmdUI* pCmdUI);
afx_msg void OnUpdateShowOcclusionTestMeshs(CCmdUI* pCmdUI);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnUpdateWindowAnimation(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowAnimationset(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowMixersslots(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowParticles(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowDayNight(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowWaterPool(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowSoundAnim(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowChooseFrameDelay(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowBGColor(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowSunColor(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewObjectmode(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewFirstpersonmode(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewCamera(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditX(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditY(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditZ(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditMoveelement(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditMoveFX(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditMoveFXUserMatrix(CCmdUI* pCmdUI);
afx_msg void OnUpdateWindowLightGroup(CCmdUI* pCmdUI);
afx_msg void OnHelpAboutobjectviewer();
afx_msg void OnRemoveAllInstancesFromScene();
afx_msg void OnActivateTextureSet(UINT nID);
afx_msg void OnShuffleTextureSet();
afx_msg void OnWindowVegetable();
afx_msg void OnUpdateWindowVegetable(CCmdUI* pCmdUI);
afx_msg void OnWindowGlobalwind();
afx_msg void OnUpdateWindowGlobalwind(CCmdUI* pCmdUI);
afx_msg void OnEditMoveObjectLightTest();
afx_msg void OnUpdateEditMoveObjectLightTest(CCmdUI* pCmdUI);
afx_msg void OnEditMovecamera();
afx_msg void OnUpdateEditMovecamera(CCmdUI* pCmdUI);
afx_msg void OnEditMovescene();
afx_msg void OnUpdateEditMovescene(CCmdUI* pCmdUI);
afx_msg void OnViewResetSceneRoot();
afx_msg void OnViewResetFXRoot();
afx_msg void OnViewResetFXUserMatrix();
afx_msg void OnViewSetSceneRotation();
afx_msg void OnShootScene();
afx_msg void OnWindowSkeletonScale();
afx_msg void OnUpdateWindowSkeletonScale(CCmdUI* pCmdUI);
afx_msg void OnWindowTuneMRM();
afx_msg void OnUpdateWindowTuneMRM(CCmdUI* pCmdUI);
afx_msg void OnSnapShotTool();
//}}AFX_MSG
afx_msg void OnSceneCamera(UINT id);
afx_msg void OnUpdateSceneCamera(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
CSceneDlgMouseListener _RightButtonMouseListener ;
// The default behaviour of CFrameWnd::PostNcDestroy() is to call 'delete this'. We dont want that behaviour, we want the object viewer to call this
virtual void PostNcDestroy()
{
// do nothing
}
private:
float _LastSceneRotX;
float _LastSceneRotY;
float _LastSceneRotZ;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MAIN_FRAME_H__90D61263_7782_11D5_9CD4_0050DAC3A412__INCLUDED_)