|
Revision 13041, 2.7 kB
(checked in by robert, 14 months ago)
|
|
Ran script to remove trailing spaces and tabs
|
-
Property svn:eol-style set to
native
-
Property svn:keywords set to
Author Date Id Revision
|
| Line | |
|---|
| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | #ifndef LWOSG_BLOCK_ |
|---|
| 9 | #define LWOSG_BLOCK_ |
|---|
| 10 | |
|---|
| 11 | #include "lwo2chunks.h" |
|---|
| 12 | |
|---|
| 13 | #include <osg/Vec3> |
|---|
| 14 | |
|---|
| 15 | #ifdef DIFFERENCE |
|---|
| 16 | #undef DIFFERENCE |
|---|
| 17 | #endif |
|---|
| 18 | |
|---|
| 19 | namespace lwosg |
|---|
| 20 | { |
|---|
| 21 | |
|---|
| 22 | class Clip; |
|---|
| 23 | |
|---|
| 24 | struct Texture_mapping { |
|---|
| 25 | |
|---|
| 26 | enum Coordinate_system_type { |
|---|
| 27 | OBJECT = 0, |
|---|
| 28 | WORLD = 1 |
|---|
| 29 | }; |
|---|
| 30 | |
|---|
| 31 | osg::Vec3 center_; |
|---|
| 32 | osg::Vec3 size_; |
|---|
| 33 | osg::Vec3 rotation_; |
|---|
| 34 | |
|---|
| 35 | Coordinate_system_type csys_; |
|---|
| 36 | |
|---|
| 37 | Texture_mapping() |
|---|
| 38 | : size_(1, 1, 1), |
|---|
| 39 | csys_(OBJECT) |
|---|
| 40 | {} |
|---|
| 41 | }; |
|---|
| 42 | |
|---|
| 43 | struct Image_map { |
|---|
| 44 | |
|---|
| 45 | enum Axis_type { |
|---|
| 46 | X = 0, |
|---|
| 47 | Y = 1, |
|---|
| 48 | Z = 2 |
|---|
| 49 | }; |
|---|
| 50 | |
|---|
| 51 | enum Projection_mode { |
|---|
| 52 | PLANAR = 0, |
|---|
| 53 | CYLINDRICAL = 1, |
|---|
| 54 | SPHERICAL = 2, |
|---|
| 55 | CUBIC = 3, |
|---|
| 56 | FRONT_PROJECTION = 4, |
|---|
| 57 | UV = 5 |
|---|
| 58 | }; |
|---|
| 59 | |
|---|
| 60 | enum Wrap_type { |
|---|
| 61 | RESET = 0, |
|---|
| 62 | REPEAT = 1, |
|---|
| 63 | MIRROR = 2, |
|---|
| 64 | EDGE = 3 |
|---|
| 65 | }; |
|---|
| 66 | |
|---|
| 67 | Texture_mapping mapping; |
|---|
| 68 | Projection_mode projection; |
|---|
| 69 | Axis_type axis; |
|---|
| 70 | int image_map; |
|---|
| 71 | const Clip *clip; |
|---|
| 72 | Wrap_type width_wrap; |
|---|
| 73 | Wrap_type height_wrap; |
|---|
| 74 | float wrap_amount_w; |
|---|
| 75 | float wrap_amount_h; |
|---|
| 76 | std::string uv_map; |
|---|
| 77 | |
|---|
| 78 | float texture_amplitude; |
|---|
| 79 | |
|---|
| 80 | Image_map() |
|---|
| 81 | : image_map(-1), |
|---|
| 82 | clip(0), |
|---|
| 83 | width_wrap(REPEAT), |
|---|
| 84 | height_wrap(REPEAT), |
|---|
| 85 | wrap_amount_w(1), |
|---|
| 86 | wrap_amount_h(1), |
|---|
| 87 | texture_amplitude(1) |
|---|
| 88 | {} |
|---|
| 89 | }; |
|---|
| 90 | |
|---|
| 91 | class Block { |
|---|
| 92 | public: |
|---|
| 93 | |
|---|
| 94 | enum Axis_type { |
|---|
| 95 | X = 0, |
|---|
| 96 | Y = 1, |
|---|
| 97 | Z = 2 |
|---|
| 98 | }; |
|---|
| 99 | |
|---|
| 100 | enum Opacity_type { |
|---|
| 101 | NORMAL = 0, |
|---|
| 102 | SUBTRACTIVE = 1, |
|---|
| 103 | DIFFERENCE = 2, |
|---|
| 104 | MULTIPLY = 3, |
|---|
| 105 | DIVIDE = 4, |
|---|
| 106 | ALPHA = 5, |
|---|
| 107 | TEXTURE_DISPLACEMENT = 6, |
|---|
| 108 | ADDITIVE = 7 |
|---|
| 109 | }; |
|---|
| 110 | |
|---|
| 111 | Block(const lwo2::FORM::SURF::BLOK *blok = 0); |
|---|
| 112 | |
|---|
| 113 | void compile(const lwo2::FORM::SURF::BLOK *blok = 0); |
|---|
| 114 | |
|---|
| 115 | inline const std::string &get_type() const { return type_; } |
|---|
| 116 | inline const std::string &get_ordinal() const { return ordinal_; } |
|---|
| 117 | inline const std::string &get_channel() const { return channel_; } |
|---|
| 118 | inline bool enabled() const { return enabled_; } |
|---|
| 119 | inline Opacity_type get_opacity_type() const { return opacity_type_; } |
|---|
| 120 | inline float get_opacity_amount() const { return opacity_amount_; } |
|---|
| 121 | inline Axis_type get_displacement_axis() const { return displacement_axis_; } |
|---|
| 122 | inline const Image_map &get_image_map() const { return imap_; } |
|---|
| 123 | inline Image_map &get_image_map() { return imap_; } |
|---|
| 124 | |
|---|
| 125 | osg::Vec3 setup_texture_point(const osg::Vec3 &P) const; |
|---|
| 126 | |
|---|
| 127 | protected: |
|---|
| 128 | void read_common_attributes(const iff::Chunk_list &subchunks); |
|---|
| 129 | |
|---|
| 130 | private: |
|---|
| 131 | std::string type_; |
|---|
| 132 | std::string ordinal_; |
|---|
| 133 | std::string channel_; |
|---|
| 134 | bool enabled_; |
|---|
| 135 | Opacity_type opacity_type_; |
|---|
| 136 | float opacity_amount_; |
|---|
| 137 | Axis_type displacement_axis_; |
|---|
| 138 | |
|---|
| 139 | Image_map imap_; |
|---|
| 140 | }; |
|---|
| 141 | |
|---|
| 142 | } |
|---|
| 143 | |
|---|
| 144 | #endif |
|---|