OPTPiX SpriteStudio SDK
Loading...
Searching...
No Matches
ssloader_ssae.h
Go to the documentation of this file.
1#ifndef __SSLOADER_SSAE__
2#define __SSLOADER_SSAE__
3
4#include "sstypes.h"
5#include "ssarchiver.h"
6#include "ssattribute.h"
7
8#define SPRITESTUDIO6_SSAEVERSION "2.00.01"
9
10namespace spritestudio6
11{
12
13class SsAnimation;
14
15
16
17
18
54
55
56
57//パーツ一つあたりの情報を保持するデータです。
58class SsPart
59{
60public:
68 int show;
69 int locked;
72
74
75 //参照アニメーション名
76 //ツールはともかくランタイムでは勿体ない使い方なので何らか考えること
77 //--------------------------------------------------------------------------------------
78 //インスタンスパーツパラメータ
79 //--------------------------------------------------------------------------------------
82
83 //--------------------------------------------------------------------------------------
84 //エフェクトパーツパラメータ
85 //--------------------------------------------------------------------------------------
87
88 //--------------------------------------------------------------------------------------
89 //ボーンパーツパラメータ
90 //--------------------------------------------------------------------------------------
94
97
98 //--------------------------------------------------------------------------------------
99 //メッシュパーツパラメータ
100 //--------------------------------------------------------------------------------------
103
104 //--------------------------------------------------------------------------------------
105 //コンストレイントパーツパラメータ
106 //--------------------------------------------------------------------------------------
109
110public:
112 name("") , arrayIndex(0), parentIndex(0) , show(0) , locked(0) , maskInfluence(true)
113 {
114 refEffectName = "";
115 boneLength = 0;
116 bonePosition = SsVector2(0,0);
117 boneRotation = 0;
119 weightImpact = 0;
120 meshWeightType = 0;
122 IKDepth = 0;
124
125
126 //memset( inheritRates , 0 , sizeof( float) * SsAttributeKind::num );
127 for (int i = 0; i < (int)SsAttributeKind::num ; ++i)
128 inheritRates[i] = 1.f;
129
130 //継承率の初期値
131 //継承のタグがない場合に、この値が適用される
132 // 反転・非表示フラグは継承しない from 旧SS
133 //SS5 では初期値は1
134/*
135 inheritRates[(int)SsAttributeKind::fliph] = 0.f;
136 inheritRates[(int)SsAttributeKind::flipv] = 0.f;
137 inheritRates[(int)SsAttributeKind::hide] = 0.f;
138*/
139 // イメージ反転も継承しない 2013.04.03 水 15:08
142 }
143 virtual ~SsPart(){}
144
145
148 {
152
161
164
166
176
177 //継承率後に改良を実施
178 if ( ar->getType() == EnumSsArchiver::in )
179 {
180 libXML::XMLElement* e = ar->getxml()->FirstChildElement( "ineheritRates" );
181 if ( e )
182 {
183 libXML::XMLElement* ec = e->FirstChildElement();
184 while(ec)
185 {
186 //継承設定の取得
187 const char* tag = ec->Value();
188 SsAttributeKind::_enum enumattr;
189
190 __StringToEnum_( tag , enumattr );
191 inheritRates[(int)enumattr] = (float)atof( ec->GetText() );
192 ec = ec->NextSiblingElement();
193 }
194 }
195 }
196 }
197};
198
199enum
200{
201 // MEMO: ssplayer_mesh.hにSSMESHPART_BONEMAXがあるので統合を考えること。
203};
205{
206public:
212
214 {
215 for (int i = 0; i < SSMESHBIND_BONEMAX; i++)
216 {
217 weight[i] = 0;
218 boneName[i] = "";
219 boneIndex[i] = 0;
220 offset[i] = SsVector3(0, 0, 0);
221 }
222 bindBoneNum = 0;
223
224 }
225 virtual ~SsMeshBindInfo() {}
226
227 void fromString(SsString str);
228
229};
230
231
232
233//メッシュ1枚毎の情報
235{
236public:
238
239 std::vector<SsMeshBindInfo> meshVerticesBindArray;
240
241public:
243 virtual ~SsMeshBind() {}
244
245 void loader(ISsXmlArchiver* ar);
246
248 {
249 loader(ar);
250 }
251
252
253};
254
255
256//アニメーションを構成するパーツをリスト化したものです。
258{
259public:
260 //MEMO: SsPartとSsMeshBindのポインタはXMLからの生成などの都合、スマートポインタ化していません
261 std::vector<SsPart*> partList;
263
264 std::vector<SsMeshBind*> meshList;
265 std::map<SsString,int> boneList;
266
267
268public:
270 virtual~ SsModel()
271 {
272 for ( std::vector<SsPart*>::iterator itr = partList.begin() ;
273 itr != partList.end() ; itr ++ ) delete (*itr);
274
275 for ( std::vector<SsMeshBind*>::iterator itr = meshList.begin() ;
276 itr != meshList.end() ; itr ++ ) delete (*itr);
277 }
278
281 {
282 std::vector<SsString> tempMeshList;
283
288 }
289};
290
291
292typedef std::vector<SsAttribute*> SsAttributeList;
293
295{
296public:
299
300public:
302 virtual ~SsPartAnime(){
303 for ( SsAttributeList::iterator itr = attributes.begin() ;
304 itr != attributes.end() ; itr ++ ) delete (*itr);
305 }
306
309 {
312 }
313};
314
315
332
333
335{
336public:
340 std::vector<SsPartAnime*> partAnimes;
341 std::vector<SsLabel*> labels;
342 bool isSetup;
343
344public:
346 virtual ~SsAnimation()
347 {
348 for ( std::vector<SsPartAnime*>::iterator itr = partAnimes.begin() ;
349 itr != partAnimes.end() ; itr ++ ) delete (*itr);
350 for ( std::vector<SsLabel*>::iterator itr = labels.begin() ;
351 itr != labels.end() ; itr ++ ) delete (*itr);
352 }
353
356 {
362 }
363};
364
371{
372public:
377 std::vector<SsString> cellmapNames;
378 std::vector<SsAnimation*> animeList;
379
381 virtual ~SsAnimePack()
382 {
383 for ( std::vector<SsAnimation*>::iterator itr = animeList.begin() ;
384 itr != animeList.end() ; itr ++ ) delete (*itr);
385 }
386
389 {
396
397 //モデルにセットアップアニメーションを設定する
398 int i;
399 int size = (int)animeList.size();
400 for (i = 0; i < size; i++)
401 {
402 SsAnimation* anime = animeList[i];
403 if (anime->isSetup != 0)
404 {
405 Model.setupAnimation = anime;
406 break;
407 }
408 }
409
410
411 }
412
413 //アニメーション名からアニメーションを取得する
414 SsAnimation* findAnimation(SsString& name);
415
416};
417
418/*
419* @class ssloader_ssae
420* @brief ssaeファイルをロードするためのクラスです。
421*/
423{
424public:
426 virtual ~ssloader_ssae(){}
427
429 static SsAnimePack* Load(const std::string& filename );
430 static SsAnimePack* Parse(const char* xmlstr , size_t len);
431
432};
433
434
435
436
437} // namespace spritestudio6
438
439
440#endif
アーカイバクラスのインターフェース
Definition ssarchiver.h:47
Definition ssloader_ssae.h:335
bool isSetup
アニメーションが持つラベルのリストです。
Definition ssloader_ssae.h:342
SPRITESTUDIO6SDK_SSAR_DECLARE_LISTEX(labels, "value")
std::vector< SsPartAnime * > partAnimes
設定情報
Definition ssloader_ssae.h:340
SsAnimation()
Definition ssloader_ssae.h:345
SPRITESTUDIO6SDK_SSAR_DECLARE_LISTEX(partAnimes, "partAnime")
SPRITESTUDIO6SDK_SSAR_DECLARE(isSetup)
SsString name
Definition ssloader_ssae.h:337
SPRITESTUDIO6SDK_SSAR_STRUCT_DECLARE(settings)
bool overrideSettings
アニメーションの名称
Definition ssloader_ssae.h:338
virtual ~SsAnimation()
Definition ssloader_ssae.h:346
std::vector< SsLabel * > labels
パーツ毎のアニメーションキーフレームが格納されるリスト
Definition ssloader_ssae.h:341
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
シリアライズのための宣言です。
Definition ssloader_ssae.h:356
SsAnimationSettings settings
このインスタンスが持つ設定を使いanimePack の設定を参照しない。FPS, frameCount は常に自身の設定を使う。
Definition ssloader_ssae.h:339
アニメーション再生設定情報です。
Definition ssloader_ssae.h:21
int fps
再生FPS
Definition ssloader_ssae.h:23
int endFrame
アニメーションの終了フレーム
Definition ssloader_ssae.h:29
virtual ~SsAnimationSettings()
Definition ssloader_ssae.h:32
SsPoint2 canvasSize
キャンバスサイズ(元基準枠)。ビューポートのサイズとイコールではない。
Definition ssloader_ssae.h:26
SsAnimationSettings()
Definition ssloader_ssae.h:31
SsPartsSortMode::_enum sortMode
パーツのソートモード
Definition ssloader_ssae.h:25
int startFrame
アニメーションの開始フレーム
Definition ssloader_ssae.h:28
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
シリアライズのための宣言です。
Definition ssloader_ssae.h:37
int frameCount
フレーム数
Definition ssloader_ssae.h:24
SsVector2 pivot
キャンバスの原点。0,0 が中央。-0.5, +0.5 が左上
Definition ssloader_ssae.h:27
パーツを組み合わせた構造とその構造を使用するアニメーションを格納するデータです。 パーツの組み合わせ構造をSsModel、Modelを使用するアニメデータをSsAnimationで定義しています。
Definition ssloader_ssae.h:371
SsString name
アニメーションパック名称
Definition ssloader_ssae.h:375
SPRITESTUDIO6SDK_SSAR_STRUCT_DECLARE(Model)
SPRITESTUDIO6SDK_SSAR_DECLARE_LISTEX(animeList, "anime")
SPRITESTUDIO6SDK_SSAR_STRUCT_DECLARE(settings)
std::vector< SsAnimation * > animeList
格納されている子アニメーションのリスト
Definition ssloader_ssae.h:378
SsModel Model
パーツ情報の格納先
Definition ssloader_ssae.h:376
SsAnimePack()
Definition ssloader_ssae.h:380
std::vector< SsString > cellmapNames
使用されているセルマップの名称
Definition ssloader_ssae.h:377
SsAnimation * findAnimation(SsString &name)
Definition ssloader_ssae.cpp:51
int size
Definition ssloader_ssae.h:399
virtual ~SsAnimePack()
Definition ssloader_ssae.h:381
SPRITESTUDIO6SDK_SSAR_DECLARE(cellmapNames)
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
シリアライズのための宣言です。
Definition ssloader_ssae.h:389
SsAnimationSettings settings
設定情報
Definition ssloader_ssae.h:374
SsString version
Definition ssloader_ssae.h:373
int i
Definition ssloader_ssae.h:398
ラベル。ループ先などに指定する
Definition ssloader_ssae.h:318
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
Definition ssloader_ssae.h:324
SsString name
名前 [変数名変更禁止]
Definition ssloader_ssae.h:320
int time
設置された時間(フレーム) [変数名変更禁止]
Definition ssloader_ssae.h:321
SsString meshName
Definition ssloader_ssae.h:237
void loader(ISsXmlArchiver *ar)
Definition ssloader_ssae.cpp:68
SsMeshBind()
Definition ssloader_ssae.h:242
virtual ~SsMeshBind()
Definition ssloader_ssae.h:243
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
Definition ssloader_ssae.h:248
std::vector< SsMeshBindInfo > meshVerticesBindArray
Definition ssloader_ssae.h:239
SsString boneName[SSMESHBIND_BONEMAX]
Definition ssloader_ssae.h:208
SsMeshBindInfo()
Definition ssloader_ssae.h:213
void fromString(SsString str)
Definition ssloader_ssae.cpp:97
int boneIndex[SSMESHBIND_BONEMAX]
Definition ssloader_ssae.h:209
virtual ~SsMeshBindInfo()
Definition ssloader_ssae.h:225
SsVector3 offset[SSMESHBIND_BONEMAX]
Definition ssloader_ssae.h:210
int bindBoneNum
Definition ssloader_ssae.h:211
int weight[SSMESHBIND_BONEMAX]
Definition ssloader_ssae.h:207
Definition ssloader_ssae.h:258
std::map< SsString, int > boneList
何に使っているか調査 要らなければ削除
Definition ssloader_ssae.h:265
SsAnimation * setupAnimation
参照するセットアップアニメ
Definition ssloader_ssae.h:262
std::vector< SsPart * > partList
格納されているパーツのリスト
Definition ssloader_ssae.h:261
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
シリアライズのための宣言です。
Definition ssloader_ssae.h:281
SPRITESTUDIO6SDK_SSAR_DECLARE(boneList)
std::vector< SsMeshBind * > meshList
Definition ssloader_ssae.h:264
SPRITESTUDIO6SDK_SSAR_DECLARE_LIST(meshList)
SPRITESTUDIO6SDK_SSAR_DECLARE_LIST(partList)
SsModel()
Definition ssloader_ssae.h:269
SsPartAnime()
Definition ssloader_ssae.h:301
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
シリアライズのための宣言です。
Definition ssloader_ssae.h:309
virtual ~SsPartAnime()
Definition ssloader_ssae.h:302
SsString partName
Definition ssloader_ssae.h:297
SPRITESTUDIO6SDK_SSAR_DECLARE_LISTEX(attributes, "attribute")
SsAttributeList attributes
Definition ssloader_ssae.h:298
SPRITESTUDIO6SDK_SSAR_DECLARE_ENUM(inheritType)
SPRITESTUDIO6SDK_SSAR_DECLARE(weightImpact)
SPRITESTUDIO6SDK_SERIALIZE_BLOCK
シリアライズのための宣言です。
Definition ssloader_ssae.h:148
int boneLength
ボーンの長さ
Definition ssloader_ssae.h:91
SsVector2 bonePosition
ボーンの座標
Definition ssloader_ssae.h:92
SsString refAnime
参照アニメ名
Definition ssloader_ssae.h:81
SPRITESTUDIO6SDK_SSAR_DECLARE(refEffectName)
SPRITESTUDIO6SDK_SSAR_DECLARE(IKDepth)
SPRITESTUDIO6SDK_SSAR_DECLARE_ENUM(type)
SsVector2 weightPosition
ウェイトの位置
Definition ssloader_ssae.h:95
SPRITESTUDIO6SDK_SSAR_DECLARE_ENUM(alphaBlendType)
SPRITESTUDIO6SDK_SSAR_DECLARE(colorLabel)
float weightImpact
ウェイトの強さ
Definition ssloader_ssae.h:96
SPRITESTUDIO6SDK_SSAR_DECLARE(arrayIndex)
SsString refEffectName
割り当てたパーティクル名
Definition ssloader_ssae.h:86
SPRITESTUDIO6SDK_SSAR_DECLARE(bonePosition)
float inheritRates[(int) SsAttributeKind::num]
親の値の継承率。SS4との互換性のため残されているが0 or 1
Definition ssloader_ssae.h:73
SPRITESTUDIO6SDK_SSAR_DECLARE(boneLength)
SsBlendType::_enum alphaBlendType
αブレンドの演算式
Definition ssloader_ssae.h:67
int locked
[編集用データ] パーツのロック状態
Definition ssloader_ssae.h:69
SsString name
Definition ssloader_ssae.h:61
SPRITESTUDIO6SDK_SSAR_DECLARE(refAnimePack)
SPRITESTUDIO6SDK_SSAR_DECLARE(parentIndex)
int IKDepth
IK深度
Definition ssloader_ssae.h:107
virtual ~SsPart()
Definition ssloader_ssae.h:143
SsIkRotationArrow::_enum IKRotationArrow
回転方向
Definition ssloader_ssae.h:108
SsString colorLabel
カラーラベル
Definition ssloader_ssae.h:70
bool maskInfluence
マスクの影響を受けるかどうか
Definition ssloader_ssae.h:71
int show
[編集用データ] パーツの表示・非常時
Definition ssloader_ssae.h:68
SsPart()
Definition ssloader_ssae.h:111
int meshWeightStrong
ウェイトの強さ[エディタ用]
Definition ssloader_ssae.h:102
int meshWeightType
ウェイトの種類[エディタ用]
Definition ssloader_ssae.h:101
SPRITESTUDIO6SDK_SSAR_DECLARE(refAnime)
SPRITESTUDIO6SDK_SSAR_DECLARE(show)
int arrayIndex
ツリーを配列に展開した時のインデックス
Definition ssloader_ssae.h:62
SPRITESTUDIO6SDK_SSAR_DECLARE(meshWeightType)
SPRITESTUDIO6SDK_SSAR_DECLARE_ENUM(IKRotationArrow)
float boneRotation
ボーンの角度
Definition ssloader_ssae.h:93
SPRITESTUDIO6SDK_SSAR_DECLARE(weightPosition)
SPRITESTUDIO6SDK_SSAR_DECLARE(maskInfluence)
SPRITESTUDIO6SDK_SSAR_DECLARE(meshWeightStrong)
SsPartType::_enum type
種別
Definition ssloader_ssae.h:64
SPRITESTUDIO6SDK_SSAR_DECLARE(boneRotation)
int parentIndex
親パーツのインデックス
Definition ssloader_ssae.h:63
SPRITESTUDIO6SDK_SSAR_DECLARE(locked)
SsInheritType::_enum inheritType
アトリビュート値の継承方法
Definition ssloader_ssae.h:66
SsBoundsType::_enum boundsType
当たり判定として使うか?使う場合はその形状。
Definition ssloader_ssae.h:65
SPRITESTUDIO6SDK_SSAR_DECLARE_ENUM(boundsType)
SsString refAnimePack
参照アニメ名
Definition ssloader_ssae.h:80
ssloader_ssae()
Definition ssloader_ssae.h:425
static SsAnimePack * Load(const std::string &filename)
ssaeファイル名を指定しロードが成功したらそのSsAnimePackのポインタを返します。
Definition ssloader_ssae.cpp:27
static SsAnimePack * Parse(const char *xmlstr, size_t len)
Definition ssloader_ssae.cpp:7
virtual ~ssloader_ssae()
Definition ssloader_ssae.h:426
GLuint const GLchar * name
Definition glad.h:3345
@ in
Definition ssarchiver.h:27
_enum
Definition sstypes.h:534
@ num
Definition sstypes.h:577
@ imgflipv
[IFLV]イメージ上下反転(常にイメージの中央を原点とする)
Definition sstypes.h:564
@ imgfliph
[IFLH]イメージ左右反転(常にイメージの中央を原点とする)
Definition sstypes.h:563
_enum
Definition sstypes.h:451
_enum
Definition sstypes.h:419
_enum
Definition sstypes.h:716
@ arrowfree
Definition sstypes.h:718
_enum
Definition sstypes.h:438
_enum
Definition sstypes.h:393
_enum
Definition sstypes.h:379
Definition ISsEffectRender.h:5
void __StringToEnum_(SsString n, SsPartType::_enum &out)
Definition sstypes.cpp:30
std::vector< SsAttribute * > SsAttributeList
Definition ssloader_ssae.h:292
@ SSMESHBIND_BONEMAX
Definition ssloader_ssae.h:202
SsPoint2 SsVector2
Definition sstypes.h:198
SsPoint3 SsVector3
Definition sstypes.h:199
std::string SsString
Definition sstypes.h:30
#define SPRITESTUDIO6SDK_SSAR_DECLARE_ATTRIBUTE(t)
Definition ssarchiver.h:216
#define SPRITESTUDIO6SDK_SSAR_DECLARE(t)
Definition ssarchiver.h:215
2次元座標を表現するためのクラスです。
Definition sstypes.h:36