root/OpenSceneGraph/trunk/src/osgPlugins/lwo/Block.h @ 13041

Revision 13041, 2.7 kB (checked in by robert, 3 years 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      Lightwave Object Loader for OSG
3
4  Copyright (C) 2004 Marco Jez <marco.jez@poste.it>
5  OpenSceneGraph is (C) 2004 Robert Osfield
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
19namespace 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                // missing: OREF, FALL
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;               // is filled by Surface::compile()
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                // missing: AAST, PIXB, STCK
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
Note: See TracBrowser for help on using the browser.