reman3/Rayman_X/cpa/tempgrp/AI/AIGame/CAM_Base.h

112 lines
4.7 KiB
C

#ifndef __CAM_BASE_H__
#define __CAM_BASE_H__
extern char cLastCutAngleSens;
extern char cJustBetterPos;
/*
*************************************************************************************************
*************************************************************************************************
*************************************************************************************************
*************************************************************************************************
*/
/*
* Structure to update position of camera.
* The fileds of that structure are passed to meca parsing.
*/
typedef struct CAM_tdstComputedPosition_
{
MTH3D_tdstVector stTarget;
MTH3D_tdstVector stMovePos;
MTH3D_tdstVector stRefAxisZ;
MTH_tdxReal xLinearSpeed;
MTH_tdxReal xAngularSpeed;
MTH_tdxReal xTargetSpeed;
} CAM_tdstComputedPosition;
/*
* Structure to use for update actions of camera.
*/
typedef struct CAM_tdstUpdateCamera_
{
DNM_tdstReport *p_stReport;
DNM_tdstDynamics *p_stDynamics;
MS_tdxHandleToCineinfo hCineinfo;
MS_tdxHandleToInternalCineinfo hCineinfoWork;
MS_tdxHandleToInternalCineinfo hCineinfoCurrent;
MS_tdxHandleToInternalCineinfo hCineinfoInit;
MS_tdxHandleToInternalCineinfo hCineinfoVisibility;
HIE_tdxHandleToSuperObject hSuperObjCamera;
MTH3D_tdstVector stCurrentCameraPos;
MTH3D_tdstVector stWantedCameraPos;
MTH3D_tdstVector stRealWantedCameraPos;
MTH3D_tdstVector stTargetedPersoRealPos;
MTH3D_tdstVector stTargetedPersoPos;
MTH3D_tdstVector stSecondTargetedPersoRealPos;
MTH3D_tdstVector stSecondTargetedPersoPos;
char cHasCutAlpha;
MTH_tdxReal xAngleAlphaCut;
MTH_tdxReal xAngleDeltaAlphaCut;
char cTgtPersoIsMovingAbsolute;
MTH3D_tdstVector stTgtPersoMoveAbsolute;
char cTgtPersoIsMovingRelative;
MTH3D_tdstVector stTgtPersoMoveRelative;
CAM_tdstComputedPosition stCptPos;
} CAM_tdstUpdateCamera;
/*
*************************************************************************************************
*************************************************************************************************
*************************************************************************************************
*************************************************************************************************
*/
#define CONSTANT_CUT_COL (CAM_g_stCameraConstants.wFlags & 0x0001)
#define CONSTANT_RESETTEMP (CAM_g_stCameraConstants.wFlags & 0x0002)
#define CONSTANT_FORCEBESTPOS (CAM_g_stCameraConstants.wFlags & 0x0004)
#define CONSTANT_NOVISPROJ (CAM_g_stCameraConstants.wFlags & 0x0008)
#define CONSTANT_NORMALIFJOIN (CAM_g_stCameraConstants.wFlags & 0x0010)
#define CONSTANT_NOBETTERPOS (CAM_g_stCameraConstants.wFlags & 0x0020)
#define CONSTANT_NODISTVIS (CAM_g_stCameraConstants.wFlags & 0x0040)
/*
*************************************************************************************************
*************************************************************************************************
*************************************************************************************************
*************************************************************************************************
*/
extern void CAM_fn_vComputeRefAxis(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern void CAM_fn_vComputeTargetedPersoPos(CAM_tdstUpdateCamera *, HIE_tdxHandleToSuperObject, MTH3D_tdstVector *, MTH3D_tdstVector *);
extern void CAM_fn_vComputeReferencePoint(CAM_tdstUpdateCamera *);
extern void CAM_fn_vDynChangeTarget(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern void CAM_fn_vComputeTarget(CAM_tdstUpdateCamera *);
extern void CAM_fn_vBoundAngleWithTolerance(CAM_tdstUpdateCamera *, MTH_tdxReal *, MTH_tdxReal *, MTH_tdxReal *, MTH_tdxReal, MTH_tdxReal);
extern void CAM_fn_vComputeCameraAxisAngles(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal *, MTH_tdxReal *);
extern void CAM_fn_vRotateCameraAxis( MTH3D_tdstVector *, MTH_tdxReal, MTH_tdxReal, MTH3D_tdstVector *);
extern void CAM_fn_vComputeRealWantedPos(CAM_tdstUpdateCamera *);
extern char CAM_fn_cDynChangeTheta(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern void CAM_fn_vTakeCareOfCameraAltitude(MS_tdxHandleToCineinfo, MTH3D_tdstVector *);
extern void CAM_fn_vComputeMovePos(CAM_tdstUpdateCamera *);
extern void CAM_fn_vComputeMovePosWithDynTheta(CAM_tdstUpdateCamera *);
extern void CAM_fn_vComputeSpeed(CAM_tdstUpdateCamera *);
extern void CAM_fn_vConstraintMoveAfterVisFailure(CAM_tdstUpdateCamera *);
extern void CAM_fn_vConstraintMove(CAM_tdstUpdateCamera *);
extern void CAM_fn_vUpdateGeneralCamera(CAM_tdstUpdateCamera *);
#endif /* __CAM_BASE_H__ */