VR-Forces 4.0.4 Class Documentation
include/gdb/opcodeTerrainIntersector.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2008 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: opcodeTerrainIntersector.h,v $ $Revision: 1.2 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef opcodeTerrainIntersector_h
00013 #define opcodeTerrainIntersector_h
00014 
00015 #include "gdb/terrainIntersector.h"
00016 #include "gdb/terrainIntersectorDescriptor.h"
00017 
00018 class DtOpcodeTerrainIntersectorDescriptor;
00019 class DtOpcodeTerrainIntersectorImpl;
00020 
00021 // Terrain intersector that uses the external OPCODE library do do terrain
00022 // intersection.  This takes a little while to init(), and uses a decent
00023 // amount of memory, but results in very fast runtime intersection checks.
00024 class DT_DLL_gdb DtOpcodeTerrainIntersector : public DtTerrainIntersector
00025 {
00026 private:
00027    // Not implemented.
00028    DtOpcodeTerrainIntersector();
00029    // Not implemented.
00030    DtOpcodeTerrainIntersector(const DtOpcodeTerrainIntersector& orig);
00031    // Not implemented.
00032    DtOpcodeTerrainIntersector& operator=(const DtOpcodeTerrainIntersector& orig);
00033 
00034 public:
00035    DtOpcodeTerrainIntersector(DtTerrainDatabase* terrainDb,
00036       const DtTerrainIntersectorDescriptor* descriptor);
00037    virtual ~DtOpcodeTerrainIntersector();
00038 
00039    virtual bool init();
00040    virtual bool reinitialize();
00041 
00042    // \return The total number of bytes of memory used by this intersector
00043    // and any of its internal indexing into the terrain.
00044    virtual unsigned int memoryUsage() const;
00045 
00046    virtual bool chordIntersect(const DtChord& chord,
00047       DtChordIntersectionRecord& record,
00048       DtGdbNode::DtIntersectRecordType irtFlag = DtGdbNode::IRT_ALL_DATA_TERRAIN) const;
00049 
00050    virtual bool allIntersectsAlongChord(const DtChord& chord,
00051       DtChordIntersectRecordList& intList,
00052       DtGdbNode::DtIntersectRecordType irtFlag = DtGdbNode::IRT_ALL_DATA_TERRAIN) const;
00053 
00054    virtual bool sphereIntersect(const DtSphere& sphere, DtSphereIntersectionRecord& record,
00055       DtGdbNode::DtIntersectRecordType irtFlag = DtGdbNode::IRT_ALL_DATA_TERRAIN) const;
00056 
00057    virtual int terrainIntersectorType() const;
00058 
00059    // \return A descriptor for setting this intersector to the DtTerrainDatabase.
00060    static DtOpcodeTerrainIntersectorDescriptor* createDescriptor();
00061 
00062    // \return True if the OPCODE Intersector is valid to use on this terrain
00063    // database.  Tests to see if each vertex in the database can be converted
00064    // to floating point without loosing too much precision.
00065    static bool intersectorValid(const DtTerrainDatabase* terrainDb);
00066 
00067 protected:
00068    DtOpcodeTerrainIntersectorImpl* myImpl;
00069 };
00070 
00071 // Descriptor for the DtOpcodeTerrainIntersector class.
00072 class DT_DLL_gdb DtOpcodeTerrainIntersectorDescriptor : public DtTerrainIntersectorDescriptor
00073 {
00074 public:
00075    DtOpcodeTerrainIntersectorDescriptor();
00076    DtOpcodeTerrainIntersectorDescriptor(const DtOpcodeTerrainIntersectorDescriptor& orig);
00077    virtual ~DtOpcodeTerrainIntersectorDescriptor();
00078 
00079    DtOpcodeTerrainIntersectorDescriptor& operator=(const DtOpcodeTerrainIntersectorDescriptor& orig);
00080 
00081    virtual int terrainIntersectorType() const;
00082 
00083    virtual void descriptorInformation(DtString& name, DtString& properties) const;
00084 
00085    virtual DtTerrainIntersectorDescriptor* clone() const;
00086 };
00087 
00088 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)