mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2026-02-04 07:53:58 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
220
Code/Tools/LevelEdit/CameraMgr.h
Normal file
220
Code/Tools/LevelEdit/CameraMgr.h
Normal file
@@ -0,0 +1,220 @@
|
||||
/*
|
||||
** 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 : LevelEdit *
|
||||
* *
|
||||
* $Archive:: /Commando/Code/Tools/LevelEdit/CameraMgr.h $*
|
||||
* *
|
||||
* Author:: Patrick Smith *
|
||||
* *
|
||||
* $Modtime:: 11/02/00 5:57p $*
|
||||
* *
|
||||
* $Revision:: 11 $*
|
||||
* *
|
||||
*---------------------------------------------------------------------------------------------*
|
||||
* Functions: *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __CAMERAMGR_H
|
||||
#define __CAMERAMGR_H
|
||||
|
||||
|
||||
#include "refcount.h"
|
||||
#include "utils.h"
|
||||
#include "rendobj.h"
|
||||
#include "assetmgr.h"
|
||||
#include "camera.h"
|
||||
#include "physcontrol.h"
|
||||
#include "hermitespline.h"
|
||||
|
||||
|
||||
// Forward declarations
|
||||
class NodeClass;
|
||||
class SoldierGameObj;
|
||||
class SoldierGameObjDef;
|
||||
|
||||
|
||||
/*class CamaraCharPhys : public CharPhysClass
|
||||
{
|
||||
public:
|
||||
CamaraCharPhys (void);
|
||||
virtual ~CamaraCharPhys (void);
|
||||
|
||||
protected:
|
||||
RenderObjClass * m_pRenderObj;
|
||||
};*/
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
//
|
||||
// CameraMgr
|
||||
//
|
||||
///////////////////////////////////////////////////////////////
|
||||
class CameraMgr
|
||||
{
|
||||
public:
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Public constructors/destructors
|
||||
///////////////////////////////////////////////////
|
||||
CameraMgr (void);
|
||||
virtual ~CameraMgr (void);
|
||||
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Public data types
|
||||
///////////////////////////////////////////////////
|
||||
typedef enum
|
||||
{
|
||||
MODE_MOVE_PLANE = 0,
|
||||
MODE_MOVE_UPDOWN = 1,
|
||||
MODE_FLY_THROUGH = 2,
|
||||
MODE_WALK_THROUGH = 3,
|
||||
MODE_ROTATE_FREE = 4,
|
||||
MODE_ROTATE_X = 5,
|
||||
MODE_ROTATE_Y = 6,
|
||||
MODE_ROTATE_Z = 7,
|
||||
MODE_ORBIT = 8,
|
||||
MODE_FLYTO = 9,
|
||||
MODE_COUNT
|
||||
|
||||
} CAMERA_MODE;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAMERA_FRONT = 1,
|
||||
CAMERA_BACK,
|
||||
CAMERA_TOP,
|
||||
CAMERA_BOTTOM,
|
||||
CAMERA_LEFT,
|
||||
CAMERA_RIGHT,
|
||||
CAMERA_COUNT
|
||||
|
||||
} CAMERA_POS;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Public methods
|
||||
///////////////////////////////////////////////////
|
||||
CameraMgr::CAMERA_MODE Get_Camera_Mode (void) const { return m_CameraMode; }
|
||||
void Set_Camera_Mode (CAMERA_MODE new_mode);
|
||||
void Update_Camera (float deltax, float deltay);
|
||||
void Update_Camera_Animation (void);
|
||||
void On_Frame (void);
|
||||
Matrix3D Get_Character_TM (void);
|
||||
|
||||
//
|
||||
// Position methods
|
||||
//
|
||||
void Set_Camera_Pos (CAMERA_POS position);
|
||||
void Set_Transform (const Matrix3D &transform);
|
||||
void Set_Position (const Vector3 &position);
|
||||
void Move_Fwd (void) {}
|
||||
void Move_Bkwd (void) {}
|
||||
void Turn_Left (void) {}
|
||||
void Turn_Right (void) {}
|
||||
void Look_Up (void) {}
|
||||
void Look_Dn (void) {}
|
||||
void Look_Center (void) {}
|
||||
void Increase_Speed (void);
|
||||
void Decrease_Speed (void);
|
||||
void Level_Camera (void);
|
||||
void Goto_Node (NodeClass *node);
|
||||
void Goto_Group (GroupMgrClass *pgroup);
|
||||
void Fly_To_Transform (const Matrix3D &transform);
|
||||
|
||||
//
|
||||
// Inline accessors
|
||||
//
|
||||
CameraClass * Get_Camera (void) const { return m_pCamera; }
|
||||
//CamaraCharPhys * Get_Walkthru_Character (void) const { return m_pWalkThroughPhys; }
|
||||
float Get_Speed_Modifier (void) const { return m_SpeedModifier; }
|
||||
|
||||
protected:
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Friends
|
||||
///////////////////////////////////////////////////
|
||||
friend LRESULT CALLBACK fnCameraKeyboardHook (int code, WPARAM wParam, LPARAM lParam);
|
||||
friend class CLevelEditView;
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Protected methods
|
||||
///////////////////////////////////////////////////
|
||||
void Init_Camera (void);
|
||||
void Auto_Level (void);
|
||||
void Update_Fly_To (void);
|
||||
|
||||
static void Update_Camera_MOVE_ZOOM (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_MOVE_PLANE (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_FLY_THROUGH (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_WALK_THROUGH (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_ROTATE_FREE (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_ROTATE_X (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_ROTATE_Y (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_ROTATE_Z (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_ORBIT (CameraClass &camera, float deltax, float deltay);
|
||||
static void Update_Camera_FLY_TO (CameraClass &camera, float deltax, float deltay);
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Protected data types
|
||||
///////////////////////////////////////////////////
|
||||
typedef void (*UPDATE_CAMERA_FN) (CameraClass &camera, float deltax, float deltay);
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Static member data
|
||||
///////////////////////////////////////////////////
|
||||
static bool _pKeyboardState[256];
|
||||
static UPDATE_CAMERA_FN _pfnUpdateMethods[CAMERA_MODE::MODE_COUNT];
|
||||
static HHOOK _hHook;
|
||||
|
||||
private:
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// Private member data
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
bool m_bAutoLevel;
|
||||
CameraClass * m_pCamera;
|
||||
CAMERA_MODE m_CameraMode;
|
||||
Matrix3D m_AutoLevelInitalMatrix;
|
||||
Matrix3D m_AutoLevelEndMatrix;
|
||||
double m_AutoLevelPercent;
|
||||
//CamaraCharPhys * m_pWalkThroughPhys;
|
||||
PhysControllerClass m_VJoystick;
|
||||
float m_SpeedModifier;
|
||||
HermiteSpline3DClass m_FlyToSpline;
|
||||
Matrix3D m_FlyToStartTransform;
|
||||
Matrix3D m_FlyToEndTransform;
|
||||
DWORD m_FlyToStartTime;
|
||||
|
||||
SoldierGameObj * m_WalkThruObj;
|
||||
SoldierGameObjDef * m_WalkThruDef;
|
||||
};
|
||||
|
||||
|
||||
#endif //__CAMERAMGR_H
|
||||
Reference in New Issue
Block a user