initial
This commit is contained in:
132
hammer/ToolCamera.h
Normal file
132
hammer/ToolCamera.h
Normal file
@@ -0,0 +1,132 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef CAMERA3D_H
|
||||
#define CAMERA3D_H
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "Tool3D.h"
|
||||
#include "ToolInterface.h"
|
||||
#include "utlvector.h"
|
||||
#pragma warning(push, 1)
|
||||
#pragma warning(disable:4701 4702 4530)
|
||||
#include <fstream>
|
||||
#pragma warning(pop)
|
||||
|
||||
|
||||
|
||||
class CChunkFile;
|
||||
class CSaveInfo;
|
||||
|
||||
|
||||
enum ChunkFileResult_t;
|
||||
|
||||
|
||||
//
|
||||
// Defines a camera position/look pair.
|
||||
//
|
||||
struct CAMSTRUCT
|
||||
{
|
||||
// index 0 = camera origin, 1 = pos look to
|
||||
Vector position[2];
|
||||
};
|
||||
|
||||
|
||||
class Camera3D : public Tool3D
|
||||
{
|
||||
public:
|
||||
|
||||
Camera3D(void);
|
||||
|
||||
enum SNCTYPE
|
||||
{
|
||||
sncNext = -1,
|
||||
sncFirst = 0,
|
||||
sncPrev = 1
|
||||
};
|
||||
|
||||
int GetActiveCamera(void) { return m_iActiveCamera; }
|
||||
void GetCameraPos(Vector &vViewPos, Vector &vLookAt);
|
||||
void UpdateActiveCamera(Vector &vViewPos, Vector &vLookAt);
|
||||
|
||||
//
|
||||
// Serialization.
|
||||
//
|
||||
const char *GetVMFChunkName() { return "cameras"; }
|
||||
ChunkFileResult_t LoadVMF(CChunkFile *pFile);
|
||||
ChunkFileResult_t SaveVMF(CChunkFile *pFile, CSaveInfo *pSaveInfo);
|
||||
void SerializeRMF(std::fstream &file, BOOL fIsStoring);
|
||||
|
||||
//
|
||||
// Tool3D implementation.
|
||||
//
|
||||
virtual bool IsEmpty(void);
|
||||
virtual void SetEmpty(void);
|
||||
virtual unsigned int GetConstraints(unsigned int nKeyFlags);
|
||||
|
||||
//
|
||||
// CBaseTool implementation.
|
||||
//
|
||||
virtual ToolID_t GetToolID(void) { return TOOL_CAMERA; }
|
||||
|
||||
virtual bool OnKeyDown2D(CMapView2D *pView, UINT nChar, UINT nRepCnt, UINT nFlags);
|
||||
virtual bool OnLMouseDown2D(CMapView2D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
virtual bool OnLMouseUp2D(CMapView2D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
virtual bool OnMouseMove2D(CMapView2D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
|
||||
virtual bool OnLMouseDown3D(CMapView3D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
virtual bool OnLMouseUp3D(CMapView3D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
virtual bool OnRMouseDown3D(CMapView3D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
virtual bool OnRMouseUp3D(CMapView3D *pView, UINT nFlags, const Vector2D &vPoint);
|
||||
virtual bool OnKeyDown3D(CMapView3D *pView, UINT nChar, UINT nRepCnt, UINT nFlags);
|
||||
|
||||
virtual void RenderTool2D(CRender2D *pRender);
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// Tool3D implementation.
|
||||
//
|
||||
virtual int HitTest(CMapView *pView, const Vector2D &vPoint, bool bTestHandles = false);
|
||||
virtual bool UpdateTranslation(const Vector &vUpdate, UINT flags = 0);
|
||||
virtual void FinishTranslation(bool bSave);
|
||||
|
||||
private:
|
||||
|
||||
int GetCameraCount() { return Cameras.Count(); }
|
||||
void AddCamera(CAMSTRUCT &pCamPos);
|
||||
|
||||
void SetNextCamera(SNCTYPE next);
|
||||
void DeleteActiveCamera(void);
|
||||
|
||||
void OnEscape(void);
|
||||
void EnsureMaxCameras();
|
||||
|
||||
static ChunkFileResult_t LoadCameraKeyCallback(const char *szKey, const char *szValue, CAMSTRUCT *pCam);
|
||||
static ChunkFileResult_t LoadCamerasKeyCallback(const char *szKey, const char *szValue, Camera3D *pCameras);
|
||||
static ChunkFileResult_t LoadCameraCallback(CChunkFile *pFile, Camera3D *pCameras);
|
||||
|
||||
|
||||
|
||||
CUtlVector<CAMSTRUCT> Cameras; // The cameras that have been created.
|
||||
CAMSTRUCT m_MoveCamera;
|
||||
|
||||
enum
|
||||
{
|
||||
MovePos = 0,
|
||||
MoveLook = 1,
|
||||
};
|
||||
|
||||
int m_iActiveCamera;
|
||||
int m_nMovePositionIndex;
|
||||
Vector m_vOrgPos;
|
||||
};
|
||||
|
||||
|
||||
#endif // CAMERA3D_H
|
||||
|
||||
Reference in New Issue
Block a user