VR-Forces 4.0.4 Class Documentation
include/terrainDbFactory/terrainIntersectorRec.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2008 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: terrainIntersectorRec.h,v $ $Revision: 1.2 $ $State: Exp $
00007 *******************************************************************************/
00008 #ifndef terrainIntersectorRec_H_
00009 #define terrainIntersectorRec_H_
00010 
00011 #include "terrainDbFactory/terrainDbFactoryDefines.h"
00012 #include "terrainDbFactory/mfRec.h"
00013 
00014 #include <map>
00015 
00016 class DtTerrainIntersectorDescriptor;
00017 class DtTerrainIntersectorRecord;
00018 
00019 // This factory will map descriptor types to record creators.  Each creator
00020 // will be able to fully populate a descriptor from the descriptor record
00021 
00022 typedef DtTerrainIntersectorRecord* (*DtTerrainIntDescCreatorFcn)(const DtTerrainIntersectorDescriptor*);
00023 typedef std::map<int, DtTerrainIntDescCreatorFcn> DtTerrainIntDescCreatorMap;
00024 
00025 class DT_DLL_terrainDbFactory DtTerrainIntersectorDescriptorFactory
00026 {
00027 public:
00028    // Constructor will add default descriptors
00029    DtTerrainIntersectorDescriptorFactory();
00030 
00031    DtTerrainIntersectorRecord* createRecordFromDescriptor(const DtTerrainIntersectorDescriptor*);
00032    void addCreator(int, DtTerrainIntDescCreatorFcn);
00033 
00034 protected:
00035 
00036    DtTerrainIntDescCreatorMap myFactory;
00037 };
00038 
00039 // This class in and of itself does nothing.  It is used as a base class
00040 // for intersectors that are implemented by the system
00041 class DT_DLL_terrainDbFactory DtTerrainIntersectorRecord : public DtMetafileRecord
00042 {
00043 public:
00044 
00045    // default constructor.
00046    DtTerrainIntersectorRecord();
00047 
00048    // destructor
00049    virtual ~DtTerrainIntersectorRecord();
00050 
00051    // copy constructor
00052    DtTerrainIntersectorRecord(const DtTerrainIntersectorRecord& orig);
00053 
00054    // assignment operator
00055    DtTerrainIntersectorRecord& operator=(const DtTerrainIntersectorRecord& rhs);
00056 
00057    // Returns "DtNoTerrainIntersectorRecordString".
00058    virtual DtString recordTypeName() const;
00059    virtual DtConfigCategoryType recordCategory() const;
00060 
00061    virtual int terrainIntersectorType() const = 0;
00062    virtual DtTerrainIntersectorRecord* clone() const = 0;
00063    virtual DtTerrainIntersectorDescriptor* createIntersectorDescriptor() const = 0;
00064 
00065    static DtTerrainIntersectorDescriptorFactory* factory();
00066 
00067 protected:
00068    static DtTerrainIntersectorDescriptorFactory gTerrainRecordDescriptorFactory;;
00069 };
00070 
00071 class DT_DLL_terrainDbFactory DtNativeIntersectorRecord : public DtTerrainIntersectorRecord
00072 {
00073 public:
00074 
00075    // default constructor.
00076    DtNativeIntersectorRecord();
00077 
00078    // destructor
00079    virtual ~DtNativeIntersectorRecord();
00080 
00081    // copy constructor
00082    DtNativeIntersectorRecord(const DtNativeIntersectorRecord& orig);
00083 
00084    // assignment operator
00085    DtNativeIntersectorRecord& operator=(const DtNativeIntersectorRecord& rhs);
00086 
00087    // Returns "DtNativeTerrainIntersectorRecordString".
00088    virtual DtString recordTypeName() const;
00089    virtual DtConfigCategoryType recordCategory() const;
00090 
00091    virtual int terrainIntersectorType() const;
00092 
00093    static DtMetafileRecord* create();
00094    static DtTerrainIntersectorRecord* createFromDescriptor(const DtTerrainIntersectorDescriptor*);
00095 
00096    virtual DtTerrainIntersectorRecord* clone() const;
00097    virtual DtTerrainIntersectorDescriptor* createIntersectorDescriptor() const;
00098 };
00099 
00100 class DT_DLL_terrainDbFactory DtSpatialSubdivisionIntersectorRecord : public DtTerrainIntersectorRecord
00101 {
00102 public:
00103 
00104    // default constructor.
00105    DtSpatialSubdivisionIntersectorRecord();
00106 
00107    // destructor
00108    virtual ~DtSpatialSubdivisionIntersectorRecord();
00109 
00110    // copy constructor
00111    DtSpatialSubdivisionIntersectorRecord(const DtSpatialSubdivisionIntersectorRecord& orig);
00112 
00113    // assignment operator
00114    DtSpatialSubdivisionIntersectorRecord& operator=(const DtSpatialSubdivisionIntersectorRecord& rhs);
00115 
00116    // Returns "DtNoTerrainIntersectorRecordString".
00117    virtual DtString recordTypeName() const;
00118    virtual DtConfigCategoryType recordCategory() const;
00119 
00120    virtual int terrainIntersectorType() const;
00121 
00122    virtual void setSpatialSubdivisionCells(int x = 100, int y = 100, int z = 100);
00123    virtual void spatialSubdivisionCells(int& x, int& y, int &z);
00124 
00125    static DtMetafileRecord* create();
00126    static DtTerrainIntersectorRecord* createFromDescriptor(const DtTerrainIntersectorDescriptor*);
00127 
00128    virtual DtTerrainIntersectorRecord* clone() const;
00129 
00130    // identifies a token or passes it to the parent class.
00131    virtual bool processToken(std::istream& stream, DtString& token);
00132    virtual DtTerrainIntersectorDescriptor* createIntersectorDescriptor() const;
00133 
00134 protected:
00135 
00136    // Write self to stream.
00137    virtual bool writeAttributes(std::ostream& stream) const;
00138    virtual bool getAttribute(const DtString attrName, DtString& value, unsigned index=0);
00139    virtual bool setToken(const DtString& token, const DtString value);
00140 
00141 protected:
00142    int myX;
00143    int myY;
00144    int myZ;
00145 };
00146 
00147 class DT_DLL_terrainDbFactory DtOpcodeIntersectorRecord : public DtTerrainIntersectorRecord
00148 {
00149 public:
00150 
00151    // default constructor.
00152    DtOpcodeIntersectorRecord();
00153 
00154    // destructor
00155    virtual ~DtOpcodeIntersectorRecord();
00156 
00157    // copy constructor
00158    DtOpcodeIntersectorRecord(const DtOpcodeIntersectorRecord& orig);
00159 
00160    // assignment operator
00161    DtOpcodeIntersectorRecord& operator=(const DtOpcodeIntersectorRecord& rhs);
00162 
00163    // Returns "DtNoTerrainIntersectorRecordString".
00164    virtual DtString recordTypeName() const;
00165    virtual DtConfigCategoryType recordCategory() const;
00166 
00167    virtual int terrainIntersectorType() const;
00168 
00169    static DtMetafileRecord* create();
00170    static DtTerrainIntersectorRecord* createFromDescriptor(const DtTerrainIntersectorDescriptor*);
00171 
00172    virtual DtTerrainIntersectorRecord* clone() const;
00173    virtual DtTerrainIntersectorDescriptor* createIntersectorDescriptor() const;
00174 };
00175 
00176 inline DtTerrainIntersectorDescriptorFactory* DtTerrainIntersectorRecord::factory()
00177 {
00178    return &gTerrainRecordDescriptorFactory;
00179 }
00180 
00181 #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)