Files
OpenSceneGraph/src/osgPlugins/flt/flt2osg.h
2001-01-10 16:32:10 +00:00

117 lines
3.2 KiB
C++

// flt2osg.h
#ifndef __FLT_2_OSG_H
#define __FLT_2_OSG_H
#include <map>
#include <vector>
#include <string>
#include <osg/Vec4>
#include "Record.h"
namespace osg {
class Object;
class Group;
class LOD;
class Geode;
class GeoSet;
class Material;
class Texture;
class Vec4;
};
namespace flt {
class Record;
class HeaderRecord;
class ColorPaletteRecord;
class MaterialPaletteRecord;
class TexturePaletteRecord;
class VertexPaletteRecord;
class VertexRecord;
class NormalVertexRecord;
class TextureVertexRecord;
class NormalTextureVertexRecord;
class GroupRecord;
class LodRecord;
class OldLodRecord;
class DofRecord;
class SwitchRecord;
class ObjectRecord;
class FaceRecord;
class MatrixRecord;
class ExternalRecord;
class LightPointRecord;
class VertexListRecord;
class LongIDRecord;
class GeoSetBuilder;
class FltFile;
struct SMaterial;
class ConvertFromFLT
{
public:
ConvertFromFLT(FltFile* pFltFile);
virtual ~ConvertFromFLT();
osg::Node* convert(Record* rec);
osg::Node* visitNode(osg::Group* osgParent,Record* rec);
osg::Node* visitAncillary(osg::Group* osgParent, PrimNodeRecord* rec);
osg::Node* visitPrimaryNode(osg::Group* osgParent, PrimNodeRecord* rec);
osg::Node* visitLongID(osg::Group* osgParent, LongIDRecord* rec);
osg::Node* visitHeader(osg::Group* osgParent, HeaderRecord* rec);
osg::Node* visitColorPalette(osg::Group* osgParent, ColorPaletteRecord* rec);
osg::Node* visitMaterialPalette(osg::Group* osgParent, MaterialPaletteRecord* rec);
osg::Node* visitTexturePalette(osg::Group* osgParent, TexturePaletteRecord* rec);
osg::Node* visitVertexPalette(osg::Group* osgParent, VertexPaletteRecord* rec);
osg::Node* visitVertex(osg::Group* osgParent, VertexRecord* rec);
osg::Node* visitNormalVertex(osg::Group* osgParent, NormalVertexRecord* rec);
osg::Node* visitTextureVertex(osg::Group* osgParent, TextureVertexRecord* rec);
osg::Node* visitNormalTextureVertex(osg::Group* osgParent, NormalTextureVertexRecord* rec);
osg::Node* visitGroup(osg::Group* osgParent, GroupRecord* rec);
osg::Node* visitLOD(osg::Group* osgParent, LodRecord* rec);
osg::Node* visitOldLOD(osg::Group* osgParent, OldLodRecord* rec);
osg::Node* visitDOF(osg::Group* osgParent, DofRecord* rec);
osg::Node* visitSwitch(osg::Group* osgParent, SwitchRecord* rec);
osg::Node* visitObject(osg::Group* osgParent, ObjectRecord* rec);
osg::Node* visitMatrix(osg::Group* osgParent, MatrixRecord* rec);
osg::Node* visitExternal(osg::Group* osgParent, ExternalRecord* rec);
void visitFace(GeoSetBuilder* pParent, FaceRecord* rec);
void visitLightPoint(GeoSetBuilder* pBuilder, LightPointRecord* rec);
void visitVertexList(GeoSetBuilder* pParent, VertexListRecord* rec);
private:
Record* getVertexFromPool(int nOffset);
void regisiterVertex(int nOffset, Record* pRec);
typedef std::map<int,Record*> VertexPaletteOffsetMap;
VertexPaletteOffsetMap _VertexPaletteOffsetMap;
FltFile* _pFltFile;
int _diOpenFlightVersion;
int _diCurrentOffset;
unsigned short _wObjTransparency;
int _nSubfaceLevel;
};
}; // end namespace flt
#endif // __FLT_2_OSG_H