OPC_OptimizedTree.h File Reference


Compounds

class  AABBCollisionTree
class  AABBNoLeafTree
class  AABBQuantizedNoLeafTree
class  AABBQuantizedTree

Defines

#define IMPLEMENT_IMPLICIT_NODE(baseclass, volume)
 Common interface for a node of an implicit tree. More...

#define IMPLEMENT_NOLEAF_NODE(baseclass, volume)
 Common interface for a node of a no-leaf tree. More...

#define IMPLEMENT_COLLISION_TREE(baseclass, volume)
 Common interface for a collision tree. More...

#define IMPLEMENT_IMPLICIT_NODE(baseclass, volume)
 Common interface for a node of an implicit tree. More...

#define IMPLEMENT_NOLEAF_NODE(baseclass, volume)
 Common interface for a node of a no-leaf tree. More...

#define IMPLEMENT_COLLISION_TREE(baseclass, volume)
 Common interface for a collision tree. More...


Detailed Description

Contains code for optimized trees.

Author:
Pierre Terdiman
Date:
March, 20, 2001

Define Documentation

#define IMPLEMENT_COLLISION_TREE baseclass,
volume   
 

Value:

public:                                                                                             \
                                                                                \
                                            baseclass();                                                    \
        virtual                             ~baseclass();                                                   \
                                                                            \
        virtual         bool                Build(AABBTree* tree);                                          \
                                                                                            \
        __forceinline   const volume*       GetNodes()      const   { return mNodes;                    }   \
                                                                                                    \
        virtual         udword              GetUsedBytes()  const   { return mNbNodes*sizeof(volume);   }   \
        private:                                                                                            \
                        volume*             mNodes;

#define IMPLEMENT_COLLISION_TREE baseclass,
volume   
 

Value:

public:                                                                                             \
                                                                                \
                                            baseclass();                                                    \
        virtual                             ~baseclass();                                                   \
                                                                            \
        virtual         bool                Build(AABBTree* tree);                                          \
                                                                                            \
        __forceinline   const volume*       GetNodes()      const   { return mNodes;                    }   \
                                                                                                    \
        virtual         udword              GetUsedBytes()  const   { return mNbNodes*sizeof(volume);   }   \
        private:                                                                                            \
                        volume*             mNodes;

#define IMPLEMENT_IMPLICIT_NODE baseclass,
volume   
 

Value:

public:                                                                                         \
                                                                            \
        __forceinline                       baseclass() : mData(0)  {}                                  \
        __forceinline                       ~baseclass()            {}                                  \
                                                                                            \
        __forceinline   BOOL                IsLeaf()        const   { return mData&1;               }   \
                                                                                        \
        __forceinline   const baseclass*    GetPos()        const   { return (baseclass*)mData;     }   \
        __forceinline   const baseclass*    GetNeg()        const   { return ((baseclass*)mData)+1; }   \
        __forceinline   udword              GetPrimitive()  const   { return (mData>>1);            }   \
                                                                                                \
        __forceinline   udword              GetNodeSize()   const   { return SIZEOFOBJECT;          }   \
                                                                                                        \
                        volume              mAABB;                                                      \
                        udword              mData;

#define IMPLEMENT_IMPLICIT_NODE baseclass,
volume   
 

Value:

public:                                                                                         \
                                                                            \
        __forceinline                       baseclass() : mData(0)  {}                                  \
        __forceinline                       ~baseclass()            {}                                  \
                                                                                            \
        __forceinline   BOOL                IsLeaf()        const   { return mData&1;               }   \
                                                                                        \
        __forceinline   const baseclass*    GetPos()        const   { return (baseclass*)mData;     }   \
        __forceinline   const baseclass*    GetNeg()        const   { return ((baseclass*)mData)+1; }   \
        __forceinline   udword              GetPrimitive()  const   { return (mData>>1);            }   \
                                                                                                \
        __forceinline   udword              GetNodeSize()   const   { return SIZEOFOBJECT;          }   \
                                                                                                        \
                        volume              mAABB;                                                      \
                        udword              mData;

#define IMPLEMENT_NOLEAF_NODE baseclass,
volume   
 

Value:

public:                                                                                         \
                                                                            \
        __forceinline                       baseclass() : mData(0), mData2(0)   {}                      \
        __forceinline                       ~baseclass()                        {}                      \
                                                                                        \
        __forceinline   BOOL                HasLeaf()       const   { return mData&1;               }   \
        __forceinline   BOOL                HasLeaf2()      const   { return mData2&1;              }   \
                                                                                        \
        __forceinline   const baseclass*    GetPos()        const   { return (baseclass*)mData;     }   \
        __forceinline   const baseclass*    GetNeg()        const   { return (baseclass*)mData2;    }   \
        __forceinline   udword              GetPrimitive()  const   { return (mData>>1);            }   \
        __forceinline   udword              GetPrimitive2() const   { return (mData2>>1);           }   \
                                                                                                \
        __forceinline   udword              GetNodeSize()   const   { return SIZEOFOBJECT;          }   \
                                                                                                        \
                        volume              mAABB;                                                      \
                        udword              mData;                                                      \
                        udword              mData2;

#define IMPLEMENT_NOLEAF_NODE baseclass,
volume   
 

Value:

public:                                                                                         \
                                                                            \
        __forceinline                       baseclass() : mData(0), mData2(0)   {}                      \
        __forceinline                       ~baseclass()                        {}                      \
                                                                                        \
        __forceinline   BOOL                HasLeaf()       const   { return mData&1;               }   \
        __forceinline   BOOL                HasLeaf2()      const   { return mData2&1;              }   \
                                                                                        \
        __forceinline   const baseclass*    GetPos()        const   { return (baseclass*)mData;     }   \
        __forceinline   const baseclass*    GetNeg()        const   { return (baseclass*)mData2;    }   \
        __forceinline   udword              GetPrimitive()  const   { return (mData>>1);            }   \
        __forceinline   udword              GetPrimitive2() const   { return (mData2>>1);           }   \
                                                                                                \
        __forceinline   udword              GetNodeSize()   const   { return SIZEOFOBJECT;          }   \
                                                                                                        \
                        volume              mAABB;                                                      \
                        udword              mData;                                                      \
                        udword              mData2;


Flat Four Engine
Copyright (C) 2001 by 379, Inc.
This page generated by Doxygen