True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

CollisionObjectAABBMesh.h

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------------
00002 // File Name: CollisionObjectAABBMesh.h
00003 // Description:
00006 //
00007 // Copyright (C) 2004 - 2006 True Axis Pty Ltd, Australia. 
00008 // All Rights Reserved.
00009 //
00010 // History:
00011 //      Created File.
00012 //---------------------------------------------------------------------------------
00013 
00014 #ifndef TA_COLLISIONOBJECTAABBMESH_H
00015 #define TA_COLLISIONOBJECTAABBMESH_H
00016 
00017 #ifndef TA_COLLISIONCONSTANTS_H
00018 #include "CollisionConstants.h"
00019 #endif // TA_COLLISIONCONSTANTS_H
00020 
00021 #ifndef TA_COLLISIONOBJECTCOMPLEX_H
00022 #include "CollisionObjectComplex.h"
00023 #endif // TA_COLLISIONOBJECTCOMPLEX_H
00024 
00025 TA_OBFUSCATION_SKIP_PASS_2
00026 
00027 namespace TA
00028 {
00029 
00030 class CollisionObjectBox;
00031 class CollisionObjectConvex;
00032 class Collision;
00033 struct MFrame;
00034 struct AABB;
00035 
00036 class TAPHYSICS_CLASS CollisionObjectAABBMesh : public CollisionObjectComplex
00037 {
00038 public:
00039     struct Polygon // Pseudo polygon structure
00040     {
00041         //Vec3 v3Normal;
00042         float fNormalX;
00043         float fNormalY;
00044         float fNormalZ;
00045         u32 nCollisionID;
00046         int nAttribute;
00047         int nNumVertices;   
00048         int pVertexList[k_nMaxNumVerticesInPolygon];
00049     };
00050 
00051     struct Data;
00052     friend struct Data;
00053 
00054     //pl.BeginExportClass(CollisionObjectAABBMesh : public CollisionObjectComplex)
00055     //pl.InheritFrom(CollisionObjectComplex)
00056 
00057     TA_OBFUSCATION_RESERVED_ON
00058     void Initialise(int nNumVertices, int nNumPolygons, int nNumPolygonIndices);
00059     void Finalise();
00060     TA_OBFUSCATION_RESERVED_OFF
00062 
00063 #ifndef TA_WRAPPER
00064     void Serialise(Serialiser& serialiser, const Version& version);
00065 #endif // TA_WRAPPER
00066 
00067 
00068     TA_OBFUSCATION_RESERVED_ON
00069     virtual bool Serialisable() const { return true; }
00070 
00071     void Render();
00072 
00073     void AddVertex(const Vec3& v3Pos);
00074     void AddPolygon(int nNumVertices, const int* pnIndexList, u32 nAttribute = 0x0);
00075     void FinishedAddingGeometry();
00076 
00077 #ifndef TA_WRAPPER
00078     const Data* GetData() const;
00079 #endif // TA_WRAPPER
00080 
00081     bool TestLineForCollision(
00082         const Vec3& v3Start,
00083         const Vec3& v3Normal,
00084         float fLength,
00085         Collision& collision) const;
00086 #ifndef TA_WRAPPER
00087     void CachedLocalPolygons(
00088         CollisionObjectCachedPolyData& cachedPolyData,
00089         const AABB& aabb,
00090         void* pDynamicObjectUserData) const;
00091 #endif // TA_WRAPPER
00092 
00093     virtual const AABB& GetAABB() const;
00094 
00095     static CollisionObjectAABBMesh* TAC_CALL CreateNew();
00096     //pl.Release()
00097 
00098     //pl.EndExportClass(DynamicObject)
00099 
00100 protected:
00101     CollisionObjectAABBMesh();
00102     ~CollisionObjectAABBMesh();
00103     TA_OBFUSCATION_RESERVED_OFF
00104 
00105 private:
00106     virtual const Char* GetFileHeaderString() const { return "TAColObjAABBMesh"; }
00107 
00108     Data* m_pData;
00109 
00110     void AddPolygonToAABBTree(Polygon* pPolygon);
00111 };
00112 
00113 inline const CollisionObjectAABBMesh::Data* CollisionObjectAABBMesh::GetData() const { return m_pData; }
00114 
00115 }
00116 
00117 #endif // TA_COLLISIONOBJECTAABBMESH_H


© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.