OROCHI
 
Loading...
Searching...
No Matches
GxResMotionSequencePackage.h
Go to the documentation of this file.
1//===========================================================================
13//===========================================================================
14#pragma once
15
16GX_MOTION_NAMESPACE_BEGIN()
17
18//===========================================================================
20//===========================================================================
22{
23 //-------------------------------------------------------------
25 //-------------------------------------------------------------
27public:
28 // RTTI宣言
31 static constexpr u32 SEQUENCE_COUNT = GxMath::VALUE_4;
32
34 //-----------------------------------------------------------
36 //-----------------------------------------------------------
38public:
44 virtual void cleanup(void);
45
47 //-----------------------------------------------------------
49 //-----------------------------------------------------------
51public:
53 GxResMotionSequence const* getResMotionSequence(u32 index) const;
55 void setResMotionSequence(GxResMotionSequence* pResMotionSequence, u32 index);
57 constexpr u32 getMotionNumber(void) const { return _motionNumber; }
59 constexpr void setMotionNumber(u32 motionNumber) { _motionNumber = motionNumber; }
61 constexpr u32 getMotionDataNumber(void) const { return _motionDataNumber; }
63 constexpr void setMotionDataNumber(u32 motionDataNumber) { _motionDataNumber = motionDataNumber; }
65 u32 getResMotionSequenceCount(void) const;
67 u32 getNthResMotionSequenceIndex(u32 index);
68
70 //-----------------------------------------------------------
72 //-----------------------------------------------------------
74private:
75 u32 _motionNumber;
76 u32 _motionDataNumber;
77 GxResMotionSequence* _pResMotionSequence0;
78 GxResMotionSequence* _pResMotionSequence1;
79 GxResMotionSequence* _pResMotionSequence2;
80 GxResMotionSequence* _pResMotionSequence3;
81
83};
84
85//===========================================================================
89//===========================================================================
91{
92 //-----------------------------------------------------------
94 //-----------------------------------------------------------
96public:
97 // RTTI定義
98 GX_RTTI_RESOURCE_NAME(GxResMotionSequencePackage, GxResBase, "モーションシーケンスパッケージリソース")
99 // ClassBaseReference継承禁止処理
101
102protected:
103#if GX_DEVELOP
105 struct SaveInfo;
106#endif //GX_DEVELOP
107
109 //-----------------------------------------------------------
111 //-----------------------------------------------------------
113public:
117 void cleanup(void) override;
118
120 //-----------------------------------------------------------
122 //-----------------------------------------------------------
124
126 virtual void clearResource(void);
128 GX_FORCE_INLINE GxResMotionSequenceQuadruple const* getResMotionSequenceQuadArray(u32 index) const { return index >= _resMotionSequenceQuadCount ? nullptr : &_pResMotionSequenceQuadArray[index]; }
129
131 GxResMotionSequence const* getResourceSequence(u32 sequenceNumber, u32 motionNumber) const;
133 u32 getMotionDataNumber(u32 motionNumber) const;
135 GX_FORCE_INLINE virtual u32 getMotionCount(void) const { return _resMotionSequenceQuadCount; }
136
137protected:
139 b32 load(GxStream& in, u32 dataSize);
140#if GX_DEVELOP
142 b32 save(GxStream& out);
143#endif //GX_DEVELOP
144
146 //-----------------------------------------------------------
148 //-----------------------------------------------------------
150
153
155};
156
157#if GX_DEVELOP
158class GxToolMotionIntegrate;
159
160//===========================================================================
162//===========================================================================
163class GxResMotionSequencePackageXml : public GxResMotionSequencePackage
164{
165 //-----------------------------------------------------------
167 //-----------------------------------------------------------
169public:
170 // RTTI定義
171 GX_RTTI_RESOURCE_NAME(GxResMotionSequencePackageXml, GxResMotionSequencePackage, "モーションシーケンスパッケージXML")
172 // GxClassBaseReference継承禁止処理
173 GX_PROHIBIT_CLASS_BASE_REFERENCE(GxResMotionSequencePackageXml)
174
176 class GxData : public GxClassBase
177 {
178 //-----------------------------------------------------------
180 //-----------------------------------------------------------
182 public:
183 // RTTI定義
184 GX_RTTI_CLASS(GxResMotionSequencePackageXml::GxData, GxClassBase)
185
186
187 //-----------------------------------------------------------
189 //-----------------------------------------------------------
191 public:
193 GxData(void);
195 ~GxData(void) override;
196
198 //-----------------------------------------------------------
200 //-----------------------------------------------------------
202 public:
204 constexpr u32 getMotionNumber(void) const { return _motionNumber; }
206 constexpr void setMotionNumber(u32 number) { _motionNumber = number; }
208 constexpr u32 getMotionDataNumber(void) const { return _motionDataNumber; }
210 void setMotionDataNumber(u32 motionDataNumber);
212 GX_FORCE_INLINE void setMotionDataName(GxString name) { _motionDataName = name; }
213
215 GX_FORCE_INLINE GxString getMotionSequenceName(void) const { return _motionName; }
216
218 GxResMotionSequenceXml* getResMotionSequenceXml(u32 sequenceIndex);
220 void setResMotionSequenceXml(GxResMotionSequenceXml* pRes, u32 sequenceIndex);
221
223 constexpr GxResMotionSequencePackageXml* getParent(void) { return _pParent; }
225 constexpr void setParent(GxResMotionSequencePackageXml* pParent) { _pParent = pParent; }
226
228 //-----------------------------------------------------------
230 //-----------------------------------------------------------
232 public:
234 void getPropertyMotionNumber(void* const pValue);
236 void setPropertyMotionNumber(const void* const pValue);
238 void getPropertyMotionDataNumber(void* const pValue);
240 void setPropertyMotionDataNumber(const void* const pValue);
242 void getPropertyResMotionSequenceXml0(void* const pValue);
244 void setPropertyResMotionSequenceXml0(const void* const pValue);
246 void getPropertyResMotionSequenceXml1(void* const pValue);
248 void setPropertyResMotionSequenceXml1(const void* const pValue);
250 void getPropertyResMotionSequenceXml2(void* const pValue);
252 void setPropertyResMotionSequenceXml2(const void* const pValue);
254 void getPropertyResMotionSequenceXml3(void* const pValue);
256 void setPropertyResMotionSequenceXml3(const void* const pValue);
257
258 public:
260 void messageCallbackOk(void);
261
263 //-----------------------------------------------------------
265 //-----------------------------------------------------------
267 private:
268 u32 _motionNumber;
269 GxString _motionName;
270 u32 _motionDataNumber;
271 GxString _motionDataName;
272 b32 _isMotionNumberError;
273
274#ifndef USE_GXGUIPROPERTYTABLE_PROPERTY_CHANGE_EVENT
275 // 概念的そして連結を増やさないため、親を知るはずないですが、GxGuiPropertyTableがメンバを変えることを探知するには
276 // イベントを見つけなくて、仮でrttiプロパティを使うことにしたのでGUIにアクセスするにはこのparentを作る
277 GxResMotionSequencePackageXml* _pParent;
278#endif // !USE_GXGUIPROPERTYTABLE_PROPERTY_CHANGE_EVENT
279
280 GxResMotionSequenceXml* _pResMotionSequenceXmlArray[GxResMotionSequenceQuadruple::SEQUENCE_COUNT];
281
283 };
284
286 //-----------------------------------------------------------
288 //-----------------------------------------------------------
290public:
292 GxResMotionSequencePackageXml(void);
294 void cleanup(void) override;
295
297 //-----------------------------------------------------------
299 //-----------------------------------------------------------
301public:
303 void getPropertyListValue(void* pValue, u32 index);
305 void setPropertyListValue(const void* pValue, u32 index);
307 constexpr u32 getPropertyListCount(void) const { return _listData.getCount(); }
309 constexpr void setPropertyListCount(u32 /*count*/) {}
310
311#if !MOVE_SEQNAME_TO_SEQUENCEXML
313 GX_FORCE_INLINE void setPropertySequenceName0(const void* const pValue, u32 index) { setPropertySequenceName(0, pValue, index); }
315 GX_FORCE_INLINE void getPropertySequenceName0(void* const pValue, u32 index) { getPropertySequenceName(0, pValue, index); }
317 constexpr void setPropertySequenceNameCount0(u32 /*count*/) {}
319 GX_FORCE_INLINE u32 getPropertySequenceNameCount0(void) { return getGxSysResource()->getMotionSequenceLineMax(); }
321 GX_FORCE_INLINE void setPropertySequenceName1(const void* const pValue, u32 index) { setPropertySequenceName(1, pValue, index); }
323 GX_FORCE_INLINE void getPropertySequenceName1(void* const pValue, u32 index) { getPropertySequenceName(1, pValue, index); }
325 constexpr GX_FORCE_INLINE void setPropertySequenceNameCount1(u32 /*count*/) {}
327 GX_FORCE_INLINE u32 getPropertySequenceNameCount1(void) { return getGxSysResource()->getMotionSequenceLineMax(); }
329 GX_FORCE_INLINE void setPropertySequenceName2(const void* const pValue, u32 index) { setPropertySequenceName(2, pValue, index); }
331 GX_FORCE_INLINE void getPropertySequenceName2(void* const pValue, u32 index) { getPropertySequenceName(2, pValue, index); }
333 constexpr void setPropertySequenceNameCount2(u32 /*count*/) {}
335 GX_FORCE_INLINE u32 getPropertySequenceNameCount2(void) { return getGxSysResource()->getMotionSequenceLineMax(); }
337 GX_FORCE_INLINE void setPropertySequenceName3(const void* const pValue, u32 index) { setPropertySequenceName(3, pValue, index); }
339 GX_FORCE_INLINE void getPropertySequenceName3(void* const pValue, u32 index) { getPropertySequenceName(3, pValue, index); }
341 constexpr void setPropertySequenceNameCount3(u32 /*count*/) {}
343 GX_FORCE_INLINE u32 getPropertySequenceNameCount3(void) { return getGxSysResource()->getMotionSequenceLineMax(); }
344private:
346 void setPropertySequenceName(u32 sequenceIndex, const void* const pValue, u32 index);
348 void getPropertySequenceName(u32 sequenceIndex, void* const pValue, u32 index);
349#endif
350
351public:
352#if GX_EDITOR
354 constexpr GxToolMotionIntegrate* getParentTool(void) const { return _pParentTool; }
356 constexpr void setParentTool(GxToolMotionIntegrate* pParentTool) { _pParentTool = pParentTool; }
357#endif //GX_EDITOR
358
360 GxData* getData(const u32 motionNumber);
362 GxData* getDataFromMotionDataNumber(const u32 motionDataNumber);
364 void createAndAddData(const u32 motionNumber);
366 void deleteData(const u32 motionNumber);
367
369 u32 getMotionCount(void) const override;
370
371#if !MOVE_SEQNAME_TO_SEQUENCEXML
373 constexpr GxString* getSequenceName(const u32 sequenceIndex, const u32 lineIndex) { return (sequenceIndex < GxResMotionSequenceQuadruple::SEQUENCE_COUNT && lineIndex < getGxSysResource()->getMotionSequenceLineMax()) ? &_pSequenceNameArray[sequenceIndex][lineIndex] : nullptr; }
374#endif
376 u32 getFreeMotionNumber(void) const;
378 void setAsParentOfListDataItems(void);
379
381 //-----------------------------------------------------------
383 //-----------------------------------------------------------
385public:
387 b32 load(GxStream& in, u32 dataSize);
389 b32 save(GxStream&);
391 b32 finalize(void);
393 void checkAndSaveSequenceResource(void);
395 b32 checkEnableSequenceXml(GxResMotionSequenceXml* pResXml);
396private:
398 void convertToDynamic(void);
399
401 //-----------------------------------------------------------
403 //-----------------------------------------------------------
405protected:
406 GxListClassBase _listData;
407
408#if !MOVE_SEQNAME_TO_SEQUENCEXML
412#endif // !MOVE_SEQNAME_TO_SEQUENCEXML
413private:
414#if defined(_WINDOWS)
415 GxToolMotionIntegrate* _pParentTool;
416#endif //_WINDOWS
417
419};
420#endif //GX_DEVELOP
421
422GX_MOTION_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
配列クラス
Definition GxArray.h:18
オブジェクト基底クラス
Definition GxBase.h:88
csvデータアクセス基礎クラス
Definition GxData.h:18
GxClassBase用連結リストクラス
Definition GxListClassBase.h:18
算術演算クラス
Definition GxMath.h:84
リソース基底クラス
Definition GxResBase.h:23
モーションシーケンスリソース
Definition GxResMotionSequence.h:20
static constexpr u32 SEQUENCE_LINE_MAX
最大ライン数
Definition GxResMotionSequence.h:32
Definition GxResMotionSequencePackage.h:91
void cleanup(void) override
デストラクタ代行
Definition GxResMotionSequencePackage.cpp:172
b32 load(GxStream &in, u32 dataSize)
リソースのロード
Definition GxResMotionSequencePackage.cpp:242
u32 _resMotionSequenceQuadCount
「4つ子のモーションシーケンスオブジェクト」の行列のサイズ
Definition GxResMotionSequencePackage.h:152
GX_FORCE_INLINE GxResMotionSequenceQuadruple const * getResMotionSequenceQuadArray(u32 index) const
モーションシーケンス配列リソースを取得
Definition GxResMotionSequencePackage.h:128
virtual void clearResource(void)
リソースをクリアする
Definition GxResMotionSequencePackage.cpp:183
GxResMotionSequencePackage(void)
コンストラクタ
Definition GxResMotionSequencePackage.cpp:163
u32 getMotionDataNumber(u32 motionNumber) const
モーションデータ番号の取得
Definition GxResMotionSequencePackage.cpp:223
virtual GX_FORCE_INLINE u32 getMotionCount(void) const
モーション数を取得
Definition GxResMotionSequencePackage.h:135
GxResMotionSequence const * getResourceSequence(u32 sequenceNumber, u32 motionNumber) const
モーションシーケンスリソースの取得
Definition GxResMotionSequencePackage.cpp:203
GxResMotionSequenceQuadruple * _pResMotionSequenceQuadArray
「4つ子のモーションシーケンスオブジェクト」の行列
Definition GxResMotionSequencePackage.h:151
4つのモーションシーケンスリソースポインタとモーション番号/モーションデータ番号を持つクラス
Definition GxResMotionSequencePackage.h:22
constexpr u32 getMotionDataNumber(void) const
モーションデータ番号を取得
Definition GxResMotionSequencePackage.h:61
static constexpr u32 SEQUENCE_COUNT
シーケンスファイル個数
Definition GxResMotionSequencePackage.h:31
constexpr void setMotionDataNumber(u32 motionDataNumber)
モーションデータ番号を設定
Definition GxResMotionSequencePackage.h:63
constexpr void setMotionNumber(u32 motionNumber)
モーション番号を設定
Definition GxResMotionSequencePackage.h:59
ストリーム基礎クラス
Definition GxStream.h:20
constexpr u32 getMotionSequenceLineMax(void) const
モーションシーケンスのラインの最大数を取得
Definition GxSysResource.h:1508
文字列型クラス
Definition GxString.h:18
32bitブーリアン
Definition GxDefine.h:173