00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef LWOTOEGGCONVERTER_H
00016 #define LWOTOEGGCONVERTER_H
00017
00018 #include "pandatoolbase.h"
00019
00020 #include "somethingToEggConverter.h"
00021 #include "lwoHeader.h"
00022 #include "pointerTo.h"
00023
00024 #include "pvector.h"
00025 #include "pmap.h"
00026
00027 class CLwoLayer;
00028 class CLwoClip;
00029 class CLwoPoints;
00030 class CLwoPolygons;
00031 class CLwoSurface;
00032 class LwoClip;
00033
00034
00035
00036
00037
00038
00039
00040
00041 class LwoToEggConverter : public SomethingToEggConverter {
00042 public:
00043 LwoToEggConverter();
00044 LwoToEggConverter(const LwoToEggConverter ©);
00045 virtual ~LwoToEggConverter();
00046
00047 virtual SomethingToEggConverter *make_copy();
00048
00049 virtual string get_name() const;
00050 virtual string get_extension() const;
00051
00052 virtual bool convert_file(const Filename &filename);
00053 bool convert_lwo(const LwoHeader *lwo_header);
00054 virtual bool supports_compressed() const;
00055
00056 CLwoLayer *get_layer(int number) const;
00057 CLwoClip *get_clip(int number) const;
00058
00059 CLwoSurface *get_surface(const string &name) const;
00060
00061 bool _make_materials;
00062
00063 private:
00064 void cleanup();
00065
00066 void collect_lwo();
00067 void make_egg();
00068 void connect_egg();
00069
00070 void slot_layer(int number);
00071 void slot_clip(int number);
00072 CLwoLayer *make_generic_layer();
00073
00074 CPT(LwoHeader) _lwo_header;
00075
00076 CLwoLayer *_generic_layer;
00077 typedef pvector<CLwoLayer *> Layers;
00078 Layers _layers;
00079
00080 typedef pvector<CLwoClip *> Clips;
00081 Clips _clips;
00082
00083 typedef pvector<CLwoPoints *> Points;
00084 Points _points;
00085
00086 typedef pvector<CLwoPolygons *> Polygons;
00087 Polygons _polygons;
00088
00089 typedef pmap<string, CLwoSurface *> Surfaces;
00090 Surfaces _surfaces;
00091 };
00092
00093 #include "lwoToEggConverter.I"
00094
00095 #endif
00096
00097