458 lines
15 KiB
C
458 lines
15 KiB
C
#define D_CineInfo_StructureDefine
|
||
|
||
#include "ToolsCPA.h"
|
||
#include "Structur/State.h"
|
||
#include "Actions/AllActs.h"
|
||
#include "Actions/collset.h"
|
||
#include "structur/StdObjSt.h"
|
||
#include "structur/engmode.h"
|
||
#include "structur/objects.h"
|
||
#include "structur/MemGame.h"
|
||
#include "GameEng.h"
|
||
#include "ObjType.h"
|
||
#include "ia_dnm.h"
|
||
#include "ToolCam.h"
|
||
|
||
#ifdef SOUND_FOR_3DOS
|
||
#include "Micros.h"
|
||
#endif
|
||
|
||
#include "TypeCam.h"
|
||
#include "ToolMatr.h"
|
||
#include "collisio.h"
|
||
#include "ZdxStuff.h"
|
||
#include "ZeMem.h"
|
||
|
||
/****************************/
|
||
/* ANNECY MT - 14/09/98 { to display info on Wnd screen*/
|
||
#if defined(USE_PROFILER) && !defined(PRESS_DEMO)
|
||
extern void DisplayPolices (char * _szText , long _lX , long _lY);
|
||
#define GLI_vDisplayPolices(Text,X,Y) DisplayPolices((char*)(Text),X,Y)
|
||
#endif
|
||
/* END ANNECY MT }*/
|
||
/****************************/
|
||
|
||
|
||
/* ANNECY AV DEMO {*/
|
||
#ifndef U64
|
||
#include "Specif/Demos.h"
|
||
#endif
|
||
/* END ANNECY AV }*/
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Get pointer on the ViewportManagement Structure
|
||
*=================================================================================================
|
||
*/
|
||
tdxHandleToViewportManagement CAM_fn_p_stGetViewPortManagement(long _lViewportNumber)
|
||
{
|
||
if
|
||
(
|
||
(_lViewportNumber > CAM_Nb_Viewport)
|
||
|| (_lViewportNumber == (long) CAM_e_NoViewport)
|
||
)
|
||
return NULL;
|
||
else
|
||
return(&g_stEngineStructure.a_hViewportArray[_lViewportNumber - 1]);
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Return handle of game's camera and pointer on camera's structur
|
||
*=================================================================================================
|
||
*/
|
||
HIE_tdxHandleToSuperObject CAM_fn_hGetActiveCamera(long _lViewportNumber)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
tdxHandleToViewportManagement hViewport;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
hViewport = CAM_fn_p_stGetViewPortManagement(_lViewportNumber);
|
||
return (hViewport->hCamera);
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Assign a camera to a viewport
|
||
*=================================================================================================
|
||
*/
|
||
void CAM_fn_vAssignCameraToAViewport(long _lViewportNumber, HIE_tdxHandleToSuperObject _hCamera)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
tdxHandleToViewportManagement hViewport;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
hViewport = CAM_fn_p_stGetViewPortManagement(_lViewportNumber);
|
||
hViewport->hCamera = _hCamera;
|
||
hViewport->bValid = TRUE;
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Reinitialization of camera's lists
|
||
*=================================================================================================
|
||
*/
|
||
void CAM_fn_vReInitCameras(void)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
long i;
|
||
tdstNodeCamera *p_stTempNodeCamera;
|
||
tdstNodeCamera *p_stNextNodeCamera;
|
||
HIE_tdxHandleToSuperObject hSuperObject ;
|
||
tdxHandleToViewportManagement hViewport;
|
||
MS_tdxHandleToInternalCineinfo hIntCineinfo;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
/* Some inits */
|
||
for (i = 1; i <= CAM_Nb_Viewport; i++)
|
||
{
|
||
hViewport = CAM_fn_p_stGetViewPortManagement(i);
|
||
hViewport->hTempCamera = NULL;
|
||
hViewport->bValid = FALSE;
|
||
}
|
||
|
||
LST2_M_DynamicForEachMovingElementOf(&g_stEngineStructure.hCameraList,p_stTempNodeCamera, p_stNextNodeCamera, i)
|
||
{
|
||
if (p_stTempNodeCamera != NULL)
|
||
{
|
||
/* Search the SuperObject with HIE_C_ulActor type */
|
||
hSuperObject=p_stTempNodeCamera->p_stSuperObjectCamera;
|
||
hIntCineinfo = M_GetCineinfo(hSuperObject,Init);
|
||
if
|
||
(
|
||
(hIntCineinfo -> bIsActive)
|
||
&& (hIntCineinfo -> eTypeOfViewport != CAM_e_NoViewport)
|
||
)
|
||
{
|
||
CAM_fn_vAssignCameraToAViewport
|
||
(
|
||
hIntCineinfo -> eTypeOfViewport,
|
||
hSuperObject
|
||
);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Initialization of camera's lists
|
||
*=================================================================================================
|
||
*/
|
||
extern void CAM_fn_vLoadCameraConstants(void);
|
||
void CAM_fn_vInitCameras(void)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
long lSize;
|
||
long i;
|
||
tdxHandleToViewportManagement hViewport;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
/* Allocation */
|
||
lSize = sizeof(struct tdstViewportManagement_) * CAM_Nb_Viewport;
|
||
MMG_fn_vAddMemoryInfo( MMG_C_lTypeGAM , MMG_C_lSubTypeViewPortArray , 0 );
|
||
g_stEngineStructure.a_hViewportArray = (tdxHandleToViewportManagement)M_p_GameMallocInHLM(lSize);
|
||
|
||
CAM_fn_vReInitCameras();
|
||
|
||
for (i = 1; i <= CAM_Nb_Viewport; i++)
|
||
{
|
||
hViewport = CAM_fn_p_stGetViewPortManagement(i);
|
||
GLI_xCreateCamera(&hViewport->p_stCamera,GLI_C_lPersCamWithoutDistorsion);
|
||
/*GLI_xSetCameraAspectAndRatio(hViewport->p_stCamera, MTH_M_xFloatToReal(1.5f), MTH_C_ONE);*/
|
||
GLI_xSetCameraAspectAndRatio(hViewport->p_stCamera, MTH_M_xFloatToReal(1.5f), MTH_M_xFloatToReal(0.75f));
|
||
}
|
||
|
||
CAM_fn_vLoadCameraConstants();
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Test if the super object is a camera
|
||
*=================================================================================================
|
||
*/
|
||
ACP_tdxBool CAM_fn_bSuperObjectIsACamera(HIE_tdxHandleToSuperObject _h_SprObj)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
MS_tdxHandleToCineinfo h_Cineinfo;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
if(HIE_fn_ulGetSuperObjectType(_h_SprObj) != HIE_C_ulActor)
|
||
return FALSE;
|
||
else
|
||
{
|
||
|
||
h_Cineinfo = M_GetMSHandle(_h_SprObj,Cineinfo);
|
||
if ((struct tdstCineinfo_ *) h_Cineinfo == NULL)
|
||
return FALSE;
|
||
else
|
||
return TRUE;
|
||
}
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Actualize a viewport
|
||
*=================================================================================================
|
||
*/
|
||
void CAM_fn_vActualizeAViewport(long _lViewport)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
tdxHandleToViewportManagement hViewport;
|
||
struct GLI_tdstCamera_ *p_Camera;
|
||
POS_tdstCompletePosition stMatrix;
|
||
MTH_tdxReal xAngle,xRatio, xFocal;
|
||
MTH3D_tdstVector I,J,K;
|
||
POS_tdstCompletePosition *p_stCamera;
|
||
HIE_tdxHandleToSuperObject hCamera;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
hViewport = CAM_fn_p_stGetViewPortManagement(_lViewport);
|
||
hCamera = hViewport->hCamera;
|
||
|
||
p_stCamera = HIE_fn_hGetSuperObjectGlobalMatrix(hCamera);
|
||
|
||
POS_fn_vGetRotationMatrix( p_stCamera, &I, &J, &K );
|
||
/* POS_fn_vSetType(&stMatrix, POS_C_xCompletePosition);*/
|
||
|
||
POS_fn_vCopyMatrix( &stMatrix, p_stCamera );
|
||
|
||
MTH3D_M_vNegVector( &J, &J );
|
||
POS_fn_vSetRotationMatrix( &stMatrix, &I, &K, &J );
|
||
POS_fn_vInvertIsoMatrix( &stMatrix, &stMatrix );
|
||
|
||
#if defined(WIN32)
|
||
WaitForSingleObject(g_stEngineStructure.hDrawSem, INFINITE);
|
||
#endif /*WIN32*/
|
||
|
||
p_Camera = hViewport->p_stCamera;
|
||
GLI_xSetCameraMatrix(p_Camera, &stMatrix);
|
||
GLI_xGetCameraAspectAndRatio(p_Camera, &xAngle, &xRatio);
|
||
xFocal = M_GetMSHandle(hCamera, Cineinfo)->hWork->xFocal;
|
||
|
||
if (MTH_M_bIsNull(xFocal))
|
||
xFocal = M_GetMSHandle(hCamera, Cineinfo)->hCurrent->xFocal;
|
||
|
||
if (!MTH_M_bEqual(xFocal, xAngle))
|
||
{
|
||
GLI_xSetCameraAspectAndRatio(p_Camera, xFocal, xRatio);
|
||
/* XB 23/06/99 */
|
||
#ifndef U64
|
||
GLI_xSetViewportCamera(g_stEngineStructure.hGLDDevice, g_stEngineStructure.hGLDViewport, p_Camera);
|
||
GLI_xAdjustCameraToViewport(g_stEngineStructure.hGLDDevice, g_stEngineStructure.hGLDViewport, p_Camera);
|
||
#else /* U64 */
|
||
GLI_xSetViewportCamera(NULL, NULL, p_Camera);
|
||
GLI_xAdjustCameraToViewport(NULL, NULL, p_Camera);
|
||
#endif /* U64 */
|
||
/* End XB 23/06/99 */
|
||
}
|
||
else
|
||
/* XB 23/06/99 */
|
||
#ifndef U64
|
||
GLI_xSetViewportCamera(g_stEngineStructure.hGLDDevice, g_stEngineStructure.hGLDViewport, p_Camera);
|
||
#else /* U64 */
|
||
GLI_xSetViewportCamera(NULL, NULL, p_Camera);
|
||
#endif /* U64 */
|
||
/* End XB 23/06/99 */
|
||
|
||
|
||
#if defined(WIN32)
|
||
ReleaseSemaphore(g_stEngineStructure.hDrawSem,1,NULL);
|
||
#endif /*WIN32*/
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Management of all cameras in the game
|
||
*=================================================================================================
|
||
*/
|
||
void CAM_fn_vCameraManagement(void)
|
||
{
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
tdxHandleToNodeCamera p_stNodeCamera;
|
||
long i;
|
||
tdxHandleToViewportManagement hViewport;
|
||
HIE_tdxHandleToSuperObject hCamera;
|
||
MS_tdxHandleToInternalCineinfo hIntCineinfo;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
/*
|
||
* Treat each camera.
|
||
*/
|
||
/* ANNECY AV DEMO {*/
|
||
#ifndef U64
|
||
if(g_DEMO_KeybTest != DEMO_PLAY)
|
||
#endif
|
||
/* END ANNECY AV }*/
|
||
{
|
||
LST2_M_DynamicForEachElementOf(&g_stEngineStructure.hCameraList, p_stNodeCamera, i)
|
||
{
|
||
if (p_stNodeCamera != NULL)
|
||
{
|
||
hCamera = p_stNodeCamera->p_stSuperObjectCamera;
|
||
if(M_GetMSHandle(hCamera, Cineinfo)->ucVolIAFlags & C_VolIAFlags_CurrentAlreadyCopiedInWork)
|
||
{
|
||
hIntCineinfo = M_GetCineinfo(hCamera, Work);
|
||
}
|
||
else
|
||
{
|
||
hIntCineinfo = M_GetCineinfo(hCamera, Current);
|
||
}
|
||
if((hIntCineinfo->bIsActive) || (hIntCineinfo->eTypeOfViewport != CAM_e_NoViewport))
|
||
{
|
||
if(hIntCineinfo->eTypeOfViewport != CAM_e_NoViewport)
|
||
fn_vTreatCameraHierarchy(p_stNodeCamera->p_stSuperObjectCamera, TRUE);
|
||
else
|
||
fn_vTreatCameraHierarchy(p_stNodeCamera->p_stSuperObjectCamera, FALSE);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
* Actualise all viewports.
|
||
*/
|
||
for(i = CAM_Nb_Viewport; i > 0; i--)
|
||
{
|
||
hViewport = CAM_fn_p_stGetViewPortManagement(i);
|
||
if(hViewport->bValid)
|
||
CAM_fn_vActualizeAViewport(i);
|
||
}
|
||
}
|
||
|
||
/*
|
||
*=================================================================================================
|
||
* Display camera parameters
|
||
*=================================================================================================
|
||
*/
|
||
|
||
#if !defined(PRESS_DEMO)
|
||
|
||
void CAM_vDisplayInfo(void)
|
||
{
|
||
#ifndef RETAIL
|
||
#ifndef U64
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
MS_tdxHandleToDynam h_Dynam = NULL;
|
||
DNM_tdstDynamics *p_stDynamics = NULL;
|
||
DNM_tdstReport *p_stReport = NULL;
|
||
MTH_tdxReal xNorm;
|
||
MTH3D_tdstVector stShifting;
|
||
unsigned char szLine[100];
|
||
long lX;
|
||
long lY;
|
||
MTH3D_tdstVector *p_stTarget;
|
||
HIE_tdxHandleToSuperObject pSuperObjectCamera;
|
||
MS_tdxHandleToCineinfo hCineInfo;
|
||
MS_tdxHandleToInternalCineinfo hWorkCI;
|
||
MTH3D_tdstVector stSightAxis;
|
||
MTH3D_tdstVector stFirstComplementaryAxis;
|
||
MTH3D_tdstVector stSecondComplementaryAxis;
|
||
MTH3D_tdstVector stTempVector, stTempVector1, stTempVector2;
|
||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||
|
||
pSuperObjectCamera = CAM_fn_hGetActiveCamera(CAM_e_MainViewport);
|
||
hCineInfo = M_GetMSHandle(pSuperObjectCamera, Cineinfo);
|
||
h_Dynam = M_GetMSHandle(pSuperObjectCamera, Dynam);
|
||
if(h_Dynam)
|
||
p_stDynamics = fn_p_stDynamGetDynamics(h_Dynam);
|
||
if(p_stDynamics)
|
||
p_stReport = DNM_M_p_stDynamicsGetReport(p_stDynamics);
|
||
|
||
if (!(hCineInfo->ucPerIAFlags & C_PerIAFlags_ShowInfo))
|
||
return;
|
||
|
||
hWorkCI = hCineInfo->hWork;
|
||
|
||
lX = 320;
|
||
lY = 0;
|
||
|
||
p_stTarget = &hWorkCI->stShiftTarget;
|
||
sprintf ((char *) szLine, "ShiftTgt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f<EFBFBD>%.2f", p_stTarget->xX, p_stTarget->xY, p_stTarget->xZ);
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
p_stTarget = &hWorkCI->stShiftPos;
|
||
sprintf ((char *) szLine, "ShiftPos<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f<EFBFBD>%.2f", p_stTarget->xX, p_stTarget->xY, p_stTarget->xZ);
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
sprintf((char *) szLine, "Distance<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f<EFBFBD>%.2f<EFBFBD>%.2f", hWorkCI->xDistMin, hWorkCI->xDistMax, hWorkCI->xBoundDistMin, hWorkCI->xBoundDistMax);
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
sprintf ((char *) szLine, "Alpha<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f", hWorkCI->xAngleAlpha, hWorkCI->xAngleShiftAlpha);
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
sprintf ((char *) szLine, "Theta<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f", hWorkCI->xAngleTheta, hWorkCI->xAngleShiftTheta);
|
||
GLI_vDisplayPolices( szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
sprintf ((char *) szLine, "ZMinMax<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f", hWorkCI->xZMin, hWorkCI->xZMax);
|
||
GLI_vDisplayPolices( szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
/* Sight axis of targeted perso */
|
||
if(hWorkCI->hSuperObjectTargeted)
|
||
{
|
||
fn_vGetPersoSightAxisSystem
|
||
(
|
||
hCineInfo,
|
||
&stSightAxis,
|
||
&stFirstComplementaryAxis,
|
||
&stSecondComplementaryAxis
|
||
);
|
||
sprintf((char *) szLine, "Sight<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.2f<EFBFBD>%.2f<EFBFBD>%.2f", stSightAxis.xX, stSightAxis.xY, stSightAxis.xZ);
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
}
|
||
|
||
/* Delta T */
|
||
sprintf((char *) szLine, "DeltaT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.4f", M_xGetUsefulDeltaTimeInSeconds(g_stEngineStructure.stEngineTimer));
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
|
||
/* Real move camera */
|
||
if(p_stReport != NULL)
|
||
{
|
||
MTH3D_M_vCopyVector(&stShifting, DNM_M_p_stReportGetLastMove(p_stReport));
|
||
xNorm = MTH3D_M_xNormVector(&stShifting);
|
||
|
||
sprintf((char *) szLine, "RealMove<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%.4f", xNorm);
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
}
|
||
|
||
/* Distance to target */
|
||
if(hWorkCI->hSuperObjectTargeted)
|
||
{
|
||
if (hWorkCI->hSuperObjectTargeted)
|
||
{
|
||
POS_fn_vGetTranslationVector
|
||
(
|
||
HIE_fn_hGetSuperObjectGlobalMatrix(pSuperObjectCamera),
|
||
&stTempVector1
|
||
);
|
||
CAM_fn_vAveragePosition(hCineInfo, CAM_g_stCameraConstants.xAverageForComputePos, &stTempVector);
|
||
POS_fn_vGetTranslationVector
|
||
(
|
||
HIE_fn_hGetSuperObjectGlobalMatrix(hWorkCI->hSuperObjectTargeted),
|
||
&stTempVector2
|
||
);
|
||
MTH3D_M_vSubVector(&stTempVector, &stTempVector, &stTempVector1);
|
||
MTH3D_M_vSubVector(&stTempVector2, &stTempVector2, &stTempVector1);
|
||
|
||
sprintf((char *) szLine, "DAver<EFBFBD>DReal<EFBFBD><EFBFBD>%.2f %.2f", MTH3D_M_xNormVector(&stTempVector), MTH3D_M_xNormVector(&stTempVector2));
|
||
}
|
||
GLI_vDisplayPolices(szLine, lX , lY);
|
||
lY += 16;
|
||
}
|
||
#endif /*!U64*/
|
||
#endif /*!RETAIL*/
|
||
}
|
||
|
||
#endif /* PRESS_DEMO */
|
||
|
||
|