123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- /*
- ===========================================================================
- Doom 3 GPL Source Code
- Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
- This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
- Doom 3 Source Code is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- Doom 3 Source Code 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 General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
- In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
- If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
- ===========================================================================
- */
- #if !defined(AFX_CAMWND_H__44B4BA03_781B_11D1_B53C_00AA00A410FC__INCLUDED_)
- #define AFX_CAMWND_H__44B4BA03_781B_11D1_B53C_00AA00A410FC__INCLUDED_
- #if _MSC_VER >= 1000
- #pragma once
- #endif // _MSC_VER >= 1000
- typedef enum
- {
- cd_wire,
- cd_solid,
- cd_texture,
- cd_light,
- cd_blend
- } camera_draw_mode;
- typedef struct
- {
- int width, height;
- idVec3 origin;
- idAngles angles;
- camera_draw_mode draw_mode;
- idVec3 color; // background
- idVec3 forward, right, up; // move matrix
- idVec3 vup, vpn, vright; // view matrix
- } camera_t;
- /////////////////////////////////////////////////////////////////////////////
- // CCamWnd window
- class CXYWnd;
- class CCamWnd : public CWnd
- {
- DECLARE_DYNCREATE(CCamWnd);
- // Construction
- public:
- CCamWnd();
- // Attributes
- public:
- // Operations
- public:
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CCamWnd)
- protected:
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- //}}AFX_VIRTUAL
- // Implementation
- public:
- void ShiftTexture_BrushPrimit(face_t *f, int x, int y);
- CXYWnd* m_pXYFriend;
- void SetXYFriend(CXYWnd* pWnd);
- virtual ~CCamWnd();
- camera_t& Camera(){return m_Camera;};
- void Cam_MouseControl(float dtime);
- void Cam_ChangeFloor(bool up);
- void BuildRendererState();
- void ToggleRenderMode();
- void ToggleRebuildMode();
- void ToggleEntityMode();
- void ToggleSelectMode();
- void ToggleAnimationMode();
- void ToggleSoundMode();
- void SetProjectionMatrix();
- void UpdateCameraView();
- void BuildEntityRenderState( entity_t *ent, bool update );
- bool GetRenderMode() {
- return renderMode;
- }
- bool GetRebuildMode() {
- return rebuildMode;
- }
- bool GetEntityMode() {
- return entityMode;
- }
- bool GetAnimationMode() {
- return animationMode;
- }
- bool GetSelectMode() {
- return selectMode;
- }
- bool GetSoundMode() {
- return soundMode;
- }
- bool UpdateRenderEntities();
- void MarkWorldDirty();
- void SetView( const idVec3 &origin, const idAngles &angles ) {
- m_Camera.origin = origin;
- m_Camera.angles = angles;
- }
- protected:
- void Cam_Init();
- void Cam_BuildMatrix();
- void Cam_PositionDrag();
- void Cam_MouseLook();
- void Cam_MouseDown(int x, int y, int buttons);
- void Cam_MouseUp (int x, int y, int buttons);
- void Cam_MouseMoved (int x, int y, int buttons);
- void InitCull();
- bool CullBrush (brush_t *b, bool cubicOnly);
- void Cam_Draw();
- void Cam_Render();
- // game renderer interaction
- qhandle_t worldModelDef;
- idRenderModel *worldModel; // createRawModel of the brush and patch geometry
- bool worldDirty;
- bool renderMode;
- bool rebuildMode;
- bool entityMode;
- bool selectMode;
- bool animationMode;
- bool soundMode;
- void FreeRendererState();
- void UpdateCaption();
- bool BuildBrushRenderData(brush_t *brush);
- void DrawEntityData();
- camera_t m_Camera;
- int m_nCambuttonstate;
- CPoint m_ptButton;
- CPoint m_ptCursor;
- CPoint m_ptLastCursor;
- face_t* m_pSide_select;
- idVec3 m_vCull1;
- idVec3 m_vCull2;
- int m_nCullv1[3];
- int m_nCullv2[3];
- bool m_bClipMode;
- idVec3 saveOrg;
- idAngles saveAng;
- bool saveValid;
- // Generated message map functions
- protected:
- void OriginalMouseDown(UINT nFlags, CPoint point);
- void OriginalMouseUp(UINT nFlags, CPoint point);
- //{{AFX_MSG(CCamWnd)
- afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnPaint();
- afx_msg void OnDestroy();
- afx_msg void OnClose();
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
- afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
- afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnSize(UINT nType, int cx, int cy);
- afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
- afx_msg void OnTimer(UINT nIDEvent);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
- #endif // !defined(AFX_CAMWND_H__44B4BA03_781B_11D1_B53C_00AA00A410FC__INCLUDED_)
|