Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/ogre/Tools/LightwaveConverter/include/lwEnvelope.h @ 20

Last change on this file since 20 was 6, checked in by anonymous, 17 years ago

=…

File size: 1.8 KB
Line 
1#ifndef _LWENVELOPE_H_
2#define _LWENVELOPE_H_
3
4#include "lwo.h"
5
6#include <iostream>
7
8class lwKey
9{
10public:
11        lwKey(float ntime, float nvalue) : time(ntime), value(nvalue) {}
12        float          time;
13        float          value;
14        unsigned int   shape;               /* ID_TCB, ID_BEZ2, etc. */
15        float          tension;
16        float          continuity;
17        float          bias;
18        float          param[ 4 ];
19};
20
21typedef vector<lwKey*> vkeys;
22
23inline bool operator < (const lwKey &k1, const lwKey &k2)
24{
25        return k1.time < k2.time;
26}
27
28#define BEH_RESET      0
29#define BEH_CONSTANT   1
30#define BEH_REPEAT     2
31#define BEH_OSCILLATE  3
32#define BEH_OFFSET     4
33#define BEH_LINEAR     5
34
35class lwEnvelope
36{
37        float range( float v, float lo, float hi, int *i );
38        void hermite( float t, float *h1, float *h2, float *h3, float *h4 );
39        float bezier( float x0, float x1, float x2, float x3, float t );
40        float bez2_time( float x0, float x1, float x2, float x3, float time, float *t0, float *t1 );
41        float bez2( lwKey *key0, lwKey *key1, float time );
42        float outgoing( unsigned int key0, unsigned int key1 );
43        float incoming( unsigned int key0, unsigned int key1 );
44       
45public:
46        lwEnvelope()
47        {
48                name = 0;
49        }
50
51        ~lwEnvelope()
52        {
53                if (name) free(name);
54                unsigned int i;
55                for (i=0; i<keys.size(); delete keys[i++]);
56                for (i=0; i<cfilters.size(); delete cfilters[i++]);
57        }
58       
59        float evaluate( float time );
60        lwKey *addKey( float time, float value );
61
62        int       index;
63        int       type;
64        char     *name;
65        vkeys     keys;                /* linked list of keys */
66        int       behavior[ 2 ];       /* pre and post (extrapolation) */
67        vplugins  cfilters;            /* linked list of channel filters */
68        int       ncfilters;
69};
70
71typedef vector<lwEnvelope*> venvelopes;
72
73#endif // _LWENVELOPE_H_
74
Note: See TracBrowser for help on using the repository browser.