]> git.mxchange.org Git - simgear.git/blob - simgear/scene/model/personality.hxx
Small cleanups to the SGGeo[dc] classes, provide more hooks to use them directly
[simgear.git] / simgear / scene / model / personality.hxx
1 /**
2  * $Id$
3  */
4
5 #ifndef _SG_PERSONALITY_HXX
6 #define _SG_PERSONALITY_HXX 1
7
8 #include <simgear/compiler.h>
9 #include <plib/ssg.h>
10
11 #include <map>
12
13 SG_USING_STD(map);
14
15 class SGAnimation;
16
17 class SGPersonalityBranch : public ssgBranch {
18 public:
19     void setDoubleValue( double value, SGAnimation *anim, int var_id, int var_num = 0 );
20     void setIntValue( int value, SGAnimation *anim, int var_id, int var_num = 0 );
21     double getDoubleValue( SGAnimation *anim, int var_id, int var_num = 0 ) const;
22     int getIntValue( SGAnimation *anim, int var_id, int var_num = 0 ) const;
23
24     SGPersonalityBranch *_old_current;
25
26 private:
27     struct Key {
28         Key( SGAnimation *a, int i, int n = 0 ) : anim(a), var_id(i), var_num(n) {}
29         SGAnimation *anim;
30         int var_id;
31         int var_num;
32         bool operator<( const Key &r ) const {
33                 return anim < r.anim || 
34                     ( anim == r.anim && ( var_id < r.var_id ||
35                                         ( var_id == r.var_id && var_num < r.var_num ) ) );
36         }
37     };
38     map<Key,double> _doubleValues;
39     map<Key,int> _intValues;
40 };
41
42 #endif // _SG_PERSONALITY_HXX