reman3/Rayman_X/cpa/public/AI/AIBase/WPWayPt.h

319 lines
10 KiB
C

/*
------------------------------------------------------------------------------------------
HEADER FILE FOR :
Definition of functions and sturctures for waypoints
------------------------------------------------------------------------------------------
File Name :
WPWayPt.h
------------------------------------------------------------------------------------------
Creation :
* Date :
March 10, 1997
* Author :
Albert PAIS
------------------------------------------------------------------------------------------
Contents :
This files defines functions and structures for managing waypoints.
------------------------------------------------------------------------------------------
Remarks :
Part of code comes from previous waypoint.c/.h
------------------------------------------------------------------------------------------
See Also :
WPWayPt.c for implementation
------------------------------------------------------------------------------------------
Module tag :
WP
------------------------------------------------------------------------------------------
Modification :
* Date :
* Author :
* Modify :
------------------------------------------------------------------------------------------
*/
/* in order to compile AI in C++ and link with GAM in C*/
#if defined(__cplusplus)
extern "C"
{
#endif
#if !defined(__WPWAYPT_TYPES__)
#define __WPWAYPT_TYPES__
#if !defined(ONLY_TYPES)
#define WPWAYPT_UNDEF
#define ONLY_TYPES
#endif /* !ONLY_TYPES */
/*
------------------------------------------------------------------------------------------
INCLUDE FILES :
------------------------------------------------------------------------------------------
*/
#include "Acp_Base.h"
#include "SPO.h"
/*#include "SCR.h"*/
#include "MTH.h"
/*
----------------------------------------
File Name :
WP_Handl.h
----------------------------------------
Required for :
Defines waypoint handles.
----------------------------------------
*/
#define _WP_D_DEFINE_WAYPOINTS_
#include "WP_Handl.h"
#include "WP_Func.h"
#if defined(WPWAYPT_UNDEF)
#undef ONLY_TYPES
#undef WPWAYPT_UNDEF
#endif /* !WPWAYPT_UNDEF */
/*
------------------------------------------------------------------------------------------
TYPE AND STRUCTURE DEFINITION :
------------------------------------------------------------------------------------------
*/
/*
----------------------------------------
Type definition :
Waypoint structure and handle
----------------------------------------
Structure Name :
WP_tdstWayPoint_
Type def :
WP_tdstWayPoint
Handle :
WP_tdhWayPoint
----------------------------------------
Creation Date :
March 10,1997
Author :
Albert PAIS
----------------------------------------
Members :
* Type : MTH3D_tdstVector
Name : m_stVertex
Meaning : The position of the waypoint
* Type : MTH_tdxReal
Name : m_xRadius
Meaning : The raidus of the waypoint
* Type : HIE_tdxHandleToSuperObject
Name : m_hSuperObject
Meaning : The owner of the waypoint
(invalid value if the waypoint is
static).
* Type : unsigned char
Name : m_ucUsedCount
Meaning : The used count of the waypoint
---------------------------------------
*/
#ifdef _WP_D_WAYPOINT_FRIEND_
typedef struct WP_tdstWayPoint_
{
/* ANNECY AV {*/
/* struct GEO_tdstGeometricObject_ *m_p_stGeoObj; Not used anymore*/
/* END ANNECY AV }*/
MTH3D_tdstVector m_stVertex;
MTH_tdxReal m_xRadius;
HIE_tdxHandleToSuperObject m_hSuperObject;
/* ANNECY AV {*/
/* unsigned char m_ucUsedCount; // Not used anymore*/
/* END ANNECY AV }*/
}WP_tdstWayPoint;
#endif /* _WP_D_WAYPOINT_FRIEND_ */
/* allready defined in WP_Handl.h
typedef struct WP_tdstWayPoint_* WP_tdhWayPoint;
*/
#endif /* !__WPWAYPT_TYPES__ */
#if !defined(ONLY_TYPES)
#if !defined(__WPWAYPT_VARS__)
#define __WPWAYPT_VARS__
#undef WP_WAYPOINT_EXTERN
#undef extern
#if !defined(WP_D_WAYPOINT_GLOBALS_)
#define WP_WAYPOINT_EXTERN extern
#else /* !WP_D_WAYPOINT_GLOBALS_ */
#define WP_WAYPOINT_EXTERN
#endif /* !WP_D_WAYPOINT_GLOBALS_ */
/*
------------------------------------------------------------------------------------------
VARIABLE DECLARATION :
<type> <variable name>
#if defined(WP_D_WAYPOINT_GLOBALS_)
= <initial values>
#endif
;
------------------------------------------------------------------------------------------
*/
/*
------------------------------------------------------------------------------------------
MACROS-CONSTANT DECLARATION:
------------------------------------------------------------------------------------------
*/
/* allready defined in WP_Handl.h
#define WP_C_hWayPointInvalid ((WP_tdhWayPoint)0)
*/
#undef extern
#endif /* !__WPWAYPT_VARS__ */
#if !defined (__WPWAYPT_PROTOS__)
#define __WPWAYPT_PROTOS__
/****************************************/
#if !defined(CPA_EXPORT)
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif /*CPA_WANTS_IMPORT || CPA_WANTS_EXPORT*/
#endif /*CPA_EXPORT*/
/****************************************/
/*
------------------------------------------------------------------------------------------
MACROS-FUNCTIONS DECLARATION:
------------------------------------------------------------------------------------------
*/
#if defined(_WP_D_WAYPOINT_FRIEND_)
/* Friend modules can access directly to the field :*/
#define WP_M_vWayPointGetStructureField(_hWayPt,_pxPointer,_SlotName)\
(*(_pxPointer) = (_hWayPt)->m_st##_SlotName)
#define WP_M_xWayPointGetScalarField(_hWayPt,_Prefix,_SlotName)\
((_hWayPt)->m_##_Prefix ##_SlotName)
#define WP_M_vWayPointSetStructureField(_hWayPt,_pxPointer,_SlotName)\
((_hWayPt)->m_st##_SlotName = *(_pxPointer))
#define WP_M_vWayPointSetScalarField(_hWayPt,_xScalar,_Prefix,_SlotName)\
((_hWayPt)->m_##_Prefix ##_SlotName = (_xScalar))
#define WP_M_uwWayPointSizeOf()\
((unsigned short)(sizeof(struct WP_tdstWayPoint_)))
#else /* _WP_D_WAYPOINT_FRIEND_ */
/* Non friend modules accesss fields through functions */
#define WP_M_vWayPointGetStructureField(_hWayPt,_pxPointer,_SlotName)\
(WP_fnv_WayPoint_Get##_SlotName(_hWayPt,_pxPointer))
#define WP_M_xWayPointGetScalarField(_hWayPt,_Prefix,_SlotName)\
(WP_fn##_Prefix_WayPoint_Get##_SlotName(_hWayPt))
#define WP_M_vWayPointSetStructureField(_hWayPt,_pxPointer,_SlotName)\
(WP_fnv_WayPoint_Set##_SlotName(_hWayPt,_pxPointer))
#define WP_M_vWayPointSetScalarField(_hWayPt,_xScalar,_Prefix,_SlotName)\
(WP_fnv_WayPoint_Set##_SlotName(_hWayPt,_xScalar))
#define WP_M_uwWayPointSizeOf()\
WP_fnuw_WayPoint_SizeOf()
#endif /* _WP_D_WAYPOINT_FRIEND_ */
/* accessing to fields :*/
#define WP_M_vWayPointGetVertex(_hWayPt,_pstVertex)\
WP_M_vWayPointGetStructureField(_hWayPt,_pstVertex,Vertex)
#define WP_M_vWayPointSetVertex(_hWayPt,_pstNuevoVertex)\
WP_M_vWayPointSetStructureField(_hWayPt,_pstNuevoVertex,Vertex)
#define WP_M_xWayPointGetRadius(_hWayPt)\
WP_M_xWayPointGetScalarField(_hWayPt,x,Radius)
#define WP_M_vWayPointSetRadius(_hWayPt,_xNuevoRadius)\
WP_M_vWayPointSetScalarField(_hWayPt,_xNuevoRadius,x,Radius)
#define WP_M_hWayPointGetSuperObject(_hWayPt)\
WP_M_xWayPointGetScalarField(_hWayPt,h,SuperObject)
#define WP_M_vWayPointSetSuperObject(_hWayPt,_hNuevoSuperObj)\
WP_M_vWayPointSetScalarField(_hWayPt,_hNuevoSuperObj,h,SuperObject)
#define WP_M_ucWayPointGetUsedCount(_hWayPt)\
WP_M_xWayPointGetScalarField(_hWayPt,uc,UsedCount)
#define WP_M_vWayPointSetUsedCount(_hWayPt,_ucNuevoUsedCount)\
WP_M_vWayPointSetScalarField(_hWayPt,_ucNuevoUsedCount,uc,UsedCount)
/*
------------------------------------------------------------------------------------------
FUNCTIONS DECLARATION:
------------------------------------------------------------------------------------------
*/
CPA_EXPORT void fn_vDrawWayPoint(struct WP_tdstWayPoint_ *p_stWayPt);
/* creation function :*/
CPA_EXPORT WP_tdhWayPoint WP_fnh_WayPoint_Create(void);
/* destruction */
CPA_EXPORT void WP_fnv_WayPoint_Destroy(WP_tdhWayPoint);
/* add reference and release */
CPA_EXPORT void WP_fnv_WayPoint_AddRef(WP_tdhWayPoint);
CPA_EXPORT void WP_fnv_WayPoint_Release(WP_tdhWayPoint);
/* "constructor" : */
CPA_EXPORT WP_tdhWayPoint WP_fnh_WayPoint_Build(MTH3D_tdstVector*,MTH_tdxReal,HIE_tdxHandleToSuperObject);
/* duplicate : */
CPA_EXPORT WP_tdhWayPoint WP_fnh_WayPoint_Duplicate(WP_tdhWayPoint);
/* copy */
CPA_EXPORT void WP_fnv_WayPoint_Copy(WP_tdhWayPoint,WP_tdhWayPoint);
/* sizeof */
CPA_EXPORT unsigned short WP_fnuw_WayPoint_SizeOf(void);
/* accessing to members :*/
CPA_EXPORT void WP_fnv_WayPoint_GetVertex(WP_tdhWayPoint,MTH3D_tdstVector*);
CPA_EXPORT void WP_fnv_WayPoint_SetVertex(WP_tdhWayPoint,MTH3D_tdstVector*);
CPA_EXPORT MTH_tdxReal WP_fnx_WayPoint_GetRadius(WP_tdhWayPoint);
CPA_EXPORT void WP_fnv_WayPoint_SetRadius(WP_tdhWayPoint,MTH_tdxReal);
CPA_EXPORT HIE_tdxHandleToSuperObject WP_fnh_WayPoint_GetSuperObject(WP_tdhWayPoint);
CPA_EXPORT void WP_fnv_WayPoint_SetSuperObject(WP_tdhWayPoint,HIE_tdxHandleToSuperObject);
CPA_EXPORT unsigned char WP_fnuc_WayPoint_GetUsedCount(WP_tdhWayPoint);
CPA_EXPORT void WP_fnv_WayPoint_SetUsedCount(WP_tdhWayPoint,unsigned char);
/* validity of handles : */
CPA_EXPORT void WP_fnv_WayPoint_Invalidate(WP_tdhWayPoint*);
CPA_EXPORT ACP_tdxBool WP_fnb_WayPoint_IsValid(WP_tdhWayPoint);
CPA_EXPORT ACP_tdxBool WP_fnb_WayPoint_IsInvalid(WP_tdhWayPoint);
CPA_EXPORT ACP_tdxBool WP_fnb_WayPoint_IsDynamic(WP_tdhWayPoint);
CPA_EXPORT ACP_tdxBool WP_fnb_WayPoint_IsStatic(WP_tdhWayPoint);
/* loading waypoints */
#if !defined(U64)
CPA_EXPORT SCR_tde_Anl_ReturnValue WP_fne_WayPoint_ScriptCallBackLoad(SCR_tdst_File_Description *,char *,char **, SCR_tde_Anl_Action);
CPA_EXPORT SCR_tde_Anl_ReturnValue WP_fne_WayPoint_ScriptSubSectionCallBackLoad(SCR_tdst_File_Description *,char *,char **, SCR_tde_Anl_Action);
/*ANNECY Bart 19/01/98 {*/
CPA_EXPORT SCR_tde_Anl_ReturnValue WP_fne_WPGraph_ScriptCallBackLoad(SCR_tdst_File_Description *,char *,char **, SCR_tde_Anl_Action);
CPA_EXPORT SCR_tde_Anl_ReturnValue WP_fne_WPSommet_ScriptCallBackLoad(SCR_tdst_File_Description *,char *,char **, SCR_tde_Anl_Action);
CPA_EXPORT void WP_fn_vReloadWPGraph(char* szNameOfGraph);
/*ENDANNECY Bart }*/
#endif /* U64 */
/* export link table */
CPA_EXPORT struct SCR_tdst_Link_Table_ *WP_fnp_WayPoint_GetLinkTable (void);
/* add by jt*/
/* compute second pass */
/*CPA_EXPORT void WP_fnv_WayPoint_LinkTableSecondPass (void);*/
/* tools */
CPA_EXPORT void WP_fnv_WayPoint_ComputeLocation(WP_tdhWayPoint,MTH3D_tdstVector*);
#endif /* !__WPWAYPT_PROTOS__ */
#endif /* !ONLY_TYPES */
/* in order to compile AI in C++ and link with GAM in C*/
#if defined(__cplusplus)
}
#endif