| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program 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.
- **
- ** 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 General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Combat *
- * *
- * $Archive:: /Commando/Code/wwui/viewerctrl.h $*
- * *
- * Author:: Patrick Smith *
- * *
- * $Modtime:: 11/06/01 4:24p $*
- * *
- * $Revision:: 6 $*
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #if defined(_MSC_VER)
- #pragma once
- #endif
- #ifndef __VIEWER_CTRL_H
- #define __VIEWER_CTRL_H
- #include "dialogcontrol.h"
- #include "vector3.h"
- #include "render2d.h"
- #include "aabox.h"
- ////////////////////////////////////////////////////////////////
- // Forward declarations
- ////////////////////////////////////////////////////////////////
- class SimpleSceneClass;
- class CameraClass;
- class RenderObjClass;
- class LightClass;
- ////////////////////////////////////////////////////////////////
- //
- // ViewerCtrlClass
- //
- ////////////////////////////////////////////////////////////////
- class ViewerCtrlClass : public DialogControlClass
- {
- public:
- enum InterfaceModeEnum {
- Z_ROTATION, // Automatic rotation of camera around Z-axis.
- VIRTUAL_TRACKBALL // Camera rotation with virtual trackball under user control.
- };
-
- ////////////////////////////////////////////////////////////////
- // Public constructors/destructors
- ////////////////////////////////////////////////////////////////
- ViewerCtrlClass (void);
- virtual ~ViewerCtrlClass (void);
- ////////////////////////////////////////////////////////////////
- // Public methods
- ////////////////////////////////////////////////////////////////
- // RTTI.
- ViewerCtrlClass *As_ViewerCtrlClass (void) { return this; }
- //
- // From DialogControlClass
- //
- void Render (void);
- //
- // Configuation
- //
- void Set_Background_Visible (bool isvisible) {IsBackgroundVisible = isvisible;}
- void Set_Rotation_Rate (float r) {RotationRate = DEG_TO_RADF (r);}
- void Set_Interface_Mode (InterfaceModeEnum mode, float rotationrate = 0.0f);
- void Set_Camera_Min_Dist (float dist) { MinCameraDist = dist; }
- //
- // Selection management
- //
- SimpleSceneClass *Peek_Scene() { return (Scene); }
- CameraClass *Peek_Camera() { return (Camera); }
- void Set_Model (const char *model_name);
- void Set_Model (RenderObjClass *new_model);
- RenderObjClass *Peek_Model() { return (Model); }
- void Set_Animation (const char *anim_name);
- protected:
- ////////////////////////////////////////////////////////////////
- // Protected methods
- ////////////////////////////////////////////////////////////////
- void On_LButton_Down (const Vector2 &mouse_pos);
- void On_LButton_Up (const Vector2 &mouse_pos);
- void On_Set_Cursor (const Vector2 &mouse_pos);
- void On_Frame_Update (void);
- void Update_Client_Rect (void);
- void Create_Control_Renderer (void);
- void Free_Model (void);
- void Get_Visible_Bounding_Box (AABoxClass *box, RenderObjClass *render_obj, bool &is_first);
- void Calculate_Camera_Position (void);
- ////////////////////////////////////////////////////////////////
- // Protected member data
- ////////////////////////////////////////////////////////////////
- SimpleSceneClass * Scene;
- CameraClass * Camera;
- LightClass * Light; // Light source.
- RenderObjClass * Model;
- Render2DClass ControlRenderer;
- AABoxClass BoundingBox;
- float Distance;
- float ZRotation;
- float RotationRate;
- float MinCameraDist;
- bool IsCameraDirty;
- bool IsBackgroundVisible;
- InterfaceModeEnum InterfaceMode;
- Vector3 LastMousePosition;
- };
- #endif //__VIEWER_CTRL_H
|