00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00044 #ifndef _orxOBJECT_H_
00045 #define _orxOBJECT_H_
00046
00047
00048 #include "orxInclude.h"
00049
00050 #include "object/orxStructure.h"
00051 #include "core/orxClock.h"
00052 #include "memory/orxBank.h"
00053 #include "anim/orxAnimSet.h"
00054 #include "display/orxDisplay.h"
00055 #include "math/orxOBox.h"
00056 #include "sound/orxSound.h"
00057
00058
00060 #define orxOBJECT_GET_STRUCTURE(OBJECT, TYPE) orx##TYPE(_orxObject_GetStructure(OBJECT, orxSTRUCTURE_ID_##TYPE))
00061
00062
00065 typedef enum __orxOBJECT_EVENT_t
00066 {
00067 orxOBJECT_EVENT_CREATE = 0,
00068 orxOBJECT_EVENT_DELETE,
00069
00070 orxOBJECT_EVENT_NUMBER,
00071
00072 orxOBJECT_EVENT_NONE = orxENUM_NONE
00073
00074 } orxOBJECT_EVENT;
00075
00076
00078 typedef struct __orxOBJECT_t orxOBJECT;
00079
00080
00083 extern orxDLLAPI void orxFASTCALL orxObject_Setup();
00084
00088 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_Init();
00089
00092 extern orxDLLAPI void orxFASTCALL orxObject_Exit();
00093
00097 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_Create();
00098
00103 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_CreateFromConfig(const orxSTRING _zConfigID);
00104
00109 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_Delete(orxOBJECT *_pstObject);
00110
00115 extern orxDLLAPI void orxFASTCALL orxObject_Enable(orxOBJECT *_pstObject, orxBOOL _bEnable);
00116
00121 extern orxDLLAPI orxBOOL orxFASTCALL orxObject_IsEnabled(const orxOBJECT *_pstObject);
00122
00127 extern orxDLLAPI void orxFASTCALL orxObject_Pause(orxOBJECT *_pstObject, orxBOOL _bPause);
00128
00133 extern orxDLLAPI orxBOOL orxFASTCALL orxObject_IsPaused(const orxOBJECT *_pstObject);
00134
00135
00140 extern orxDLLAPI void orxFASTCALL orxObject_SetUserData(orxOBJECT *_pstObject, void *_pUserData);
00141
00146 extern orxDLLAPI void *orxFASTCALL orxObject_GetUserData(const orxOBJECT *_pstObject);
00147
00152 extern orxDLLAPI void orxFASTCALL orxObject_SetOwner(orxOBJECT *_pstObject, void *_pOwner);
00153
00158 extern orxDLLAPI orxSTRUCTURE *orxFASTCALL orxObject_GetOwner(const orxOBJECT *_pstObject);
00159
00160
00165 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_GetChild(const orxOBJECT *_pstObject);
00166
00171 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_GetSibling(const orxOBJECT *_pstObject);
00172
00173
00179 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetClock(orxOBJECT *_pstObject, orxCLOCK *_pstClock);
00180
00185 extern orxDLLAPI orxCLOCK *orxFASTCALL orxObject_GetClock(const orxOBJECT *_pstObject);
00186
00187
00193 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_LinkStructure(orxOBJECT *_pstObject, orxSTRUCTURE *_pstStructure);
00194
00199 extern orxDLLAPI void orxFASTCALL orxObject_UnlinkStructure(orxOBJECT *_pstObject, orxSTRUCTURE_ID _eStructureID);
00200
00201
00202
00203
00204
00210 extern orxDLLAPI orxSTRUCTURE *orxFASTCALL _orxObject_GetStructure(const orxOBJECT *_pstObject, orxSTRUCTURE_ID _eStructureID);
00211
00212
00219 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetFlip(orxOBJECT *_pstObject, orxBOOL _bFlipX, orxBOOL _bFlipY);
00220
00227 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_GetFlip(const orxOBJECT *_pstObject, orxBOOL *_pbFlipX, orxBOOL *_pbFlipY);
00228
00229
00235 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetPivot(orxOBJECT *_pstObject, const orxVECTOR *_pvPivot);
00236
00242 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetPosition(orxOBJECT *_pstObject, const orxVECTOR *_pvPosition);
00243
00249 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetRotation(orxOBJECT *_pstObject, orxFLOAT _fRotation);
00250
00256 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetScale(orxOBJECT *_pstObject, const orxVECTOR *_pvScale);
00257
00263 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetPivot(const orxOBJECT *_pstObject, orxVECTOR *_pvPivot);
00264
00270 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetOrigin(const orxOBJECT *_pstObject, orxVECTOR *_pvOrigin);
00271
00277 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetPosition(const orxOBJECT *_pstObject, orxVECTOR *_pvPosition);
00278
00284 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetWorldPosition(const orxOBJECT *_pstObject, orxVECTOR *_pvPosition);
00285
00290 extern orxDLLAPI orxFLOAT orxFASTCALL orxObject_GetRotation(const orxOBJECT *_pstObject);
00291
00296 extern orxDLLAPI orxFLOAT orxFASTCALL orxObject_GetWorldRotation(const orxOBJECT *_pstObject);
00297
00303 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetScale(const orxOBJECT *_pstObject, orxVECTOR *_pvScale);
00304
00310 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetWorldScale(const orxOBJECT *_pstObject, orxVECTOR *_pvScale);
00311
00312
00318 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetParent(orxOBJECT *_pstObject, void *_pParent);
00319
00320
00326 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetSize(const orxOBJECT *_pstObject, orxVECTOR *_pvSize);
00327
00328
00334 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetAnimSet(orxOBJECT *_pstObject, orxANIMSET *_pstAnimSet);
00335
00336
00342 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetAnimFrequency(orxOBJECT *_pstObject, orxFLOAT _fFrequency);
00343
00349 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetCurrentAnim(orxOBJECT *_pstObject, const orxSTRING _zAnimName);
00350
00356 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetTargetAnim(orxOBJECT *_pstObject, const orxSTRING _zAnimName);
00357
00363 extern orxDLLAPI orxBOOL orxFASTCALL orxObject_IsCurrentAnim(const orxOBJECT *_pstObject, const orxSTRING _zAnimName);
00364
00370 extern orxDLLAPI orxBOOL orxFASTCALL orxObject_IsTargetAnim(const orxOBJECT *_pstObject, const orxSTRING _zAnimName);
00371
00372
00378 extern orxDLLAPI orxOBOX *orxFASTCALL orxObject_GetBoundingBox(const orxOBJECT *_pstObject, orxOBOX *_pstBoundingBox);
00379
00380
00386 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetSpeed(orxOBJECT *_pstObject, const orxVECTOR *_pvSpeed);
00387
00393 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetRelativeSpeed(orxOBJECT *_pstObject, const orxVECTOR *_pvRelativeSpeed);
00394
00400 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetAngularVelocity(orxOBJECT *_pstObject, orxFLOAT _fVelocity);
00401
00407 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetCustomGravity(orxOBJECT *_pstObject, const orxVECTOR *_pvCustomGravity);
00408
00414 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetSpeed(const orxOBJECT *_pstObject, orxVECTOR *_pvSpeed);
00415
00421 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetRelativeSpeed(const orxOBJECT *_pstObject, orxVECTOR *_pvRelativeSpeed);
00422
00427 extern orxDLLAPI orxFLOAT orxFASTCALL orxObject_GetAngularVelocity(const orxOBJECT *_pstObject);
00428
00434 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetCustomGravity(const orxOBJECT *_pstObject, orxVECTOR *_pvCustomGravity);
00435
00440 extern orxDLLAPI orxFLOAT orxFASTCALL orxObject_GetMass(const orxOBJECT *_pstObject);
00441
00447 extern orxDLLAPI orxVECTOR *orxFASTCALL orxObject_GetMassCenter(const orxOBJECT *_pstObject, orxVECTOR *_pvMassCenter);
00448
00449
00455 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetTextString(orxOBJECT *_pstObject, const orxSTRING _zString);
00456
00457
00463 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_ApplyTorque(orxOBJECT *_pstObject, orxFLOAT _fTorque);
00464
00471 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_ApplyForce(orxOBJECT *_pstObject, const orxVECTOR *_pvForce, const orxVECTOR *_pvPoint);
00472
00479 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_ApplyImpulse(orxOBJECT *_pstObject, const orxVECTOR *_pvImpulse, const orxVECTOR *_pvPoint);
00480
00481
00492 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_Raycast(const orxVECTOR *_pvStart, const orxVECTOR *_pvEnd, orxU16 _u16SelfFlags, orxU16 _u16CheckMask, orxBOOL _bEarlyExit, orxVECTOR *_pvContact, orxVECTOR *_pvNormal);
00493
00494
00500 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetColor(orxOBJECT *_pstObject, const orxCOLOR *_pstColor);
00501
00506 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_ClearColor(orxOBJECT *_pstObject);
00507
00512 extern orxDLLAPI orxBOOL orxFASTCALL orxObject_HasColor(const orxOBJECT *_pstObject);
00513
00519 extern orxDLLAPI orxCOLOR *orxFASTCALL orxObject_GetColor(const orxOBJECT *_pstObject, orxCOLOR *_pstColor);
00520
00521
00527 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_AddFX(orxOBJECT *_pstObject, const orxSTRING _zFXConfigID);
00528
00534 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_AddUniqueFX(orxOBJECT *_pstObject, const orxSTRING _zFXConfigID);
00535
00542 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_AddDelayedFX(orxOBJECT *_pstObject, const orxSTRING _zFXConfigID, orxFLOAT _fDelay);
00543
00550 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_AddUniqueDelayedFX(orxOBJECT *_pstObject, const orxSTRING _zFXConfigID, orxFLOAT _fDelay);
00551
00557 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_RemoveFX(orxOBJECT *_pstObject, const orxSTRING _zFXConfigID);
00558
00559
00565 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_AddSound(orxOBJECT *_pstObject, const orxSTRING _zSoundConfigID);
00566
00572 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_RemoveSound(orxOBJECT *_pstObject, const orxSTRING _zSoundConfigID);
00573
00578 extern orxDLLAPI orxSOUND *orxFASTCALL orxObject_GetLastAddedSound(const orxOBJECT *_pstObject);
00579
00580
00586 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_AddShader(orxOBJECT *_pstObject, const orxSTRING _zShaderConfigID);
00587
00593 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_RemoveShader(orxOBJECT *_pstObject, const orxSTRING _zShaderConfigID);
00594
00599 extern orxDLLAPI void orxFASTCALL orxObject_EnableShader(orxOBJECT *_pstObject, orxBOOL _bEnable);
00600
00605 extern orxDLLAPI orxBOOL orxFASTCALL orxObject_IsShaderEnabled(const orxOBJECT *_pstObject);
00606
00607
00612 extern orxDLLAPI const orxSTRING orxFASTCALL orxObject_GetName(const orxOBJECT *_pstObject);
00613
00614
00619 extern orxDLLAPI orxBANK *orxFASTCALL orxObject_CreateNeighborList(const orxOBOX *_pstCheckBox);
00620
00624 extern orxDLLAPI void orxFASTCALL orxObject_DeleteNeighborList(orxBANK *_pstObjectList);
00625
00626
00632 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetSmoothing(orxOBJECT *_pstObject, orxDISPLAY_SMOOTHING _eSmoothing);
00633
00638 extern orxDLLAPI orxDISPLAY_SMOOTHING orxFASTCALL orxObject_GetSmoothing(const orxOBJECT *_pstObject);
00639
00640
00647 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetRepeat(orxOBJECT *_pstObject, orxFLOAT _fRepeatX, orxFLOAT _fRepeatY);
00648
00655 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_GetRepeat(const orxOBJECT *_pstObject, orxFLOAT *_pfRepeatX, orxFLOAT *_pfRepeatY);
00656
00657
00663 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetBlendMode(orxOBJECT *_pstObject, orxDISPLAY_BLEND_MODE _eBlendMode);
00664
00669 extern orxDLLAPI orxDISPLAY_BLEND_MODE orxFASTCALL orxObject_GetBlendMode(const orxOBJECT *_pstObject);
00670
00671
00677 extern orxDLLAPI orxSTATUS orxFASTCALL orxObject_SetLifeTime(orxOBJECT *_pstObject, orxFLOAT _fLifeTime);
00678
00683 extern orxDLLAPI orxFLOAT orxFASTCALL orxObject_GetLifeTime(const orxOBJECT *_pstObject);
00684
00685
00690 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_Pick(const orxVECTOR *_pvPosition);
00691
00696 extern orxDLLAPI orxOBJECT *orxFASTCALL orxObject_BoxPick(const orxOBOX *_pstBox);
00697
00698 #endif
00699