OPTPiX SpriteStudio SDK
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
ssattribute.h
1 #ifndef __SSATRIBUTE__
2 #define __SSATRIBUTE__
3 
4 #include "sstypes.h"
5 #include "ssvalue.h"
6 #include "ssInterpolation.h"
7 #include <list>
8 #include <map>
9 
10 
11 
12 
13 
14 //アニメーション中のキーフレームの内容を表現するクラス
16 {
17 public:
18  int time;
22 public:
23  SsKeyframe() :
24  ipType(SsInterpolationType::invalid) ,
25  time(0)
26  {}
27  virtual ~SsKeyframe(){}
28 
29  SSSERIALIZE_BLOCK
30  {
31  SSAR_DECLARE_ATTRIBUTE( time );
32  SSAR_DECLARE_ATTRIBUTE_ENUM( ipType );
33 
34  if ( SsNeedsCurveParams(ipType) )
35  {
36  SSAR_DECLARE( curve );
37  }
38 
39  SsValueSeriarizer( ar , value );
40 
41  }
42 };
43 
44 typedef std::vector<SsKeyframe*> AttributeKeyList;
45 typedef std::map<int,SsKeyframe*> AttributeKeyDic;
46 
47 
48 //タグ毎に存在するキーフレームを格納するクラス
49 class SsAttribute //Tag毎に存在する
50 {
51 
52 public:
53  //キーフレームデータ : Value(タグによって異なるの組み)
55  AttributeKeyList key;
56 
57  AttributeKeyDic key_dic;
58 
59 public:
60  SsAttribute(){}
61  virtual ~SsAttribute(){
62  for ( AttributeKeyList::iterator itr = key.begin() ;
63  itr != key.end() ; itr ++ ) delete (*itr);
64  }
65 
66 
67  SSSERIALIZE_BLOCK
68  {
69  SSAR_DECLARE_ATTRIBUTE_ENUM( tag );
70  SSAR_DECLARE_LISTEX( key , "" );
71 
72  key_dic.clear();
73  for ( AttributeKeyList::iterator itr = key.begin() ; itr != key.end() ; itr++)
74  {
75  int time = (*itr)->time;
76  SsKeyframe* key = (*itr);
77  key_dic[time] = key;
78  }
79  }
80 
81  bool isEmpty()
82  {
83  return key.empty();
84  }
85 
86  const SsKeyframe* firstKey();
87 
89  const SsKeyframe* findLeftKey( int time );
90 
91  //時間から右側のキーを取得する
92  const SsKeyframe* findRightKey( int time );
93 
94 
95 };
96 
97 
98 void GetSsColorValue( const SsKeyframe* key , SsColorAnime& v );
99 void GetSsVertexAnime( const SsKeyframe* key , SsVertexAnime& v );
100 void GetSsRefCell( const SsKeyframe* key , SsRefCell& v );
101 void GetSsUserDataAnime( const SsKeyframe* key , SsUserDataAnime& v );
102 void GetSsInstparamAnime( const SsKeyframe* key , SsInstanceAttr& v );
103 
104 #endif