160 lines
3.4 KiB
C++
160 lines
3.4 KiB
C++
#pragma once
|
|
#include <d3dx9.h>
|
|
|
|
const int g_iCamTickFactor= 2 << 14;
|
|
|
|
#ifdef CAMERATESTER
|
|
#include "TextFileReader.h"
|
|
#include "StringHelper.h"
|
|
#include "EditorHelp.h"
|
|
#include <fstream>
|
|
#include <sstream>
|
|
#include <cstdio>
|
|
#define CAMERAEDIT
|
|
#endif
|
|
|
|
struct SCameraDefinition
|
|
{
|
|
D3DXVECTOR3 m_vec3Pos;
|
|
D3DXVECTOR3 m_vec3Rot;
|
|
float m_fDOF;
|
|
float m_fFOV;
|
|
int m_iDemoTime;
|
|
};
|
|
|
|
struct SCameraKey
|
|
{
|
|
int m_dwTime;
|
|
int m_dwDemoTimeStart;
|
|
int m_dwDemoTimeSpeed;
|
|
|
|
float m_fPos[ 3 ];
|
|
float m_fRot[ 3 ];
|
|
float m_fDOF;
|
|
float m_fFOV;
|
|
float m_fTangentOffset[ 2 ];
|
|
|
|
#ifdef CAMERATESTER
|
|
void ToString( std::string& strData );
|
|
void FromString( std::string& strData );
|
|
void Reset();
|
|
void FromCameraDefinition( SCameraDefinition& camDef );
|
|
void ToCameraDefinition( SCameraDefinition& camDef );
|
|
#endif CAMERATESTER
|
|
};
|
|
|
|
struct SActCamData
|
|
{
|
|
SCameraKey* m_pCamData;
|
|
int m_iMaxStepCount;
|
|
};
|
|
|
|
|
|
void InterpolateCamLocal( SActCamData* pData, int iIndex, int dwLocalTime, SCameraDefinition& Out );
|
|
int CalcCamGlobal( SActCamData* pData, int dwTime, SCameraDefinition& Out );
|
|
|
|
#ifndef CAMERATESTER
|
|
void PreparePlayCam();
|
|
void PlayCam( int iRealTimePassed, SCameraDefinition& CamData );
|
|
#endif
|
|
|
|
|
|
/*
|
|
void drawLine( D3DXVECTOR3& pvec3Pos1,
|
|
D3DXVECTOR3& pvec3Pos2,
|
|
DWORD dwColor )
|
|
{
|
|
//g_pMatrixStack->LoadIdentity();
|
|
//g_d3d_device->SetTransform( D3DTS_WORLD, g_pMatrixStack->GetTop() );
|
|
|
|
g_d3d_device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TFACTOR );
|
|
g_d3d_device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
|
|
g_d3d_device->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
|
|
g_d3d_device->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE );
|
|
g_d3d_device->SetRenderState( D3DRS_FOGENABLE, FALSE );
|
|
g_d3d_device->SetRenderState( D3DRS_ZENABLE, FALSE );
|
|
g_d3d_device->SetRenderState( D3DRS_LIGHTING, FALSE );
|
|
|
|
SVertex v[ 3 ];
|
|
|
|
g_d3d_device->SetRenderState( D3DRS_TEXTUREFACTOR, dwColor );
|
|
v[ 0 ].x= pvec3Pos1.x;
|
|
v[ 0 ].y= pvec3Pos1.y;
|
|
v[ 0 ].z= pvec3Pos1.z;
|
|
v[ 1 ].x= pvec3Pos2.x;
|
|
v[ 1 ].y= pvec3Pos2.y;
|
|
v[ 1 ].z= pvec3Pos2.z;
|
|
|
|
g_d3d_device->DrawPrimitiveUP( D3DPT_LINESTRIP,
|
|
1,
|
|
v,
|
|
sizeof( SVertex ));
|
|
|
|
g_d3d_device->SetRenderState( D3DRS_FOGENABLE, TRUE );
|
|
g_d3d_device->SetRenderState( D3DRS_ZENABLE, TRUE );
|
|
}*/
|
|
|
|
#ifdef CAMERATESTER
|
|
|
|
const int c_iCamCount= 64;
|
|
|
|
int GetCamTrackCount();
|
|
std::vector<SCameraKey>& GetCamTrack( int iIndex );
|
|
|
|
std::vector<SCameraKey>& GetEditTrack();
|
|
|
|
void ReadCameraTrack( char* pcFileName, int iTrack );
|
|
|
|
void WriteCameraTrack( char* pcFileName, int iTrack );
|
|
void ReadCamera();
|
|
void WriteCameraHeader();
|
|
void ReadCameraAll();
|
|
void WriteCameraAll();
|
|
|
|
void DrawEditOutput();
|
|
|
|
void Save();
|
|
void Reload();
|
|
void MakeTimeContinous();
|
|
void DeleteTrack();
|
|
void MoveTrack();
|
|
void ClearTrack();
|
|
void AddTrack();
|
|
void LockTrack();
|
|
void ChangeTrack();
|
|
void ChangeStep();
|
|
void EditToStep();
|
|
void VerifyStep();
|
|
void ChangeTangent( int iCount );
|
|
void ChangeStart();
|
|
void ChangeSpeed();
|
|
void ChangeLength();
|
|
|
|
void SetStep();
|
|
void RemoveStep();
|
|
void SetStepCamera();
|
|
|
|
void HomeCam();
|
|
|
|
void TickFreeCam( int iTime );
|
|
|
|
void ChangeStepKeys( int iPrior, int iNext );
|
|
|
|
void InterpolateCamGlobal( int iRealTimePassed, SCameraDefinition& CamData );
|
|
|
|
void DrawCameraDebugOutput();
|
|
|
|
int FillDataFromEdit(SActCamData& data);
|
|
|
|
int GetCurrentTrackStartTime();
|
|
void ResetRealTime();
|
|
void CalcCamTrackStarts();
|
|
|
|
void SetStepFromTime();
|
|
int CalculateRealTime();
|
|
int CalculateDemoTime();
|
|
|
|
bool IsFreeCam();
|
|
int GetRealTime();
|
|
|
|
#endif |