28 #ifndef WINTERMUTE_XMODEL_H 29 #define WINTERMUTE_XMODEL_H 31 #include "engines/wintermute/base/base_object.h" 32 #include "engines/wintermute/base/base_sprite.h" 33 #include "engines/wintermute/base/gfx/xmath.h" 34 #include "engines/wintermute/base/gfx/3deffect.h" 35 #include "engines/wintermute/base/gfx/3deffect_params.h" 36 #include "engines/wintermute/coll_templ.h" 37 #include "engines/wintermute/video/video_theora_player.h" 38 #include "engines/wintermute/utils/utils.h" 39 #include "engines/wintermute/dcgf.h" 43 class AnimationChannel;
52 #define X_NUM_ANIMATION_CHANNELS 10 56 class XModelMatSprite {
70 _effectFile =
nullptr;
71 _effectParams =
nullptr;
74 XModelMatSprite(
const char *matName,
BaseSprite *sprite) {
78 BaseUtils::setString(&_matName, matName);
80 _effectFile =
nullptr;
81 _effectParams =
nullptr;
88 BaseUtils::setString(&_matName, matName);
90 _effectFile =
nullptr;
91 _effectParams =
nullptr;
94 XModelMatSprite(
const char *matName,
Effect3D *effect) {
98 BaseUtils::setString(&_matName, matName);
100 _effectFile =
nullptr;
105 SAFE_DELETE_ARRAY(_matName);
106 SAFE_DELETE_ARRAY(_effectFile);
107 SAFE_DELETE(_sprite);
108 SAFE_DELETE(_theora);
109 SAFE_DELETE(_effect);
110 SAFE_DELETE(_effectParams);
114 SAFE_DELETE(_theora);
115 SAFE_DELETE(_sprite);
122 SAFE_DELETE(_theora);
123 SAFE_DELETE(_sprite);
130 SAFE_DELETE(_effect);
136 _effectParams->clear();
142 persistMgr->transferCharPtr(TMEMBER(_matName));
143 persistMgr->transferPtr(TMEMBER(_sprite));
145 persistMgr->transferPtr(TMEMBER(_theora));
147 if (persistMgr->getIsSaving()) {
148 char *effectFileName =
nullptr;
150 BaseUtils::setString(&effectFileName, _effect->getFileName());
152 effectFileName =
nullptr;
154 persistMgr->transferCharPtr(TMEMBER(effectFileName));
155 SAFE_DELETE_ARRAY(effectFileName);
157 persistMgr->transferCharPtr(TMEMBER(_effectFile));
160 if (persistMgr->getIsSaving()) {
161 bool hasParams = _effectParams !=
nullptr;
162 persistMgr->transferBool(TMEMBER(hasParams));
165 _effectParams->persist(persistMgr);
168 persistMgr->transferBool(TMEMBER(hasParams));
172 _effectParams->persist(persistMgr);
174 _effectParams =
nullptr;
183 const static int kDefaultTicksPerSecond = 4800;
192 bool loadFromFile(
const char *filename,
XModel *parentModel =
nullptr);
193 bool mergeFromFile(
const char *filename);
195 bool loadAnimationSet(
const char *filename,
XFileData *xobj);
198 bool update()
override;
200 bool renderFlatShadowModel(uint32 shadowColor);
205 bool playAnim(
int channel,
const char *anim, uint32 transitionTime = 0,
bool forceReset =
false, uint32 stopTransitionTime = 0);
206 bool isAnimPending(
char *animName =
nullptr);
207 bool isAnimPending(
int channel,
const char *animName =
nullptr);
209 bool isTransparentAt(
int x,
int y);
217 bool parseAnim(
char *buffer);
221 bool stopAnim(
int channel, uint32 transitionTime);
222 bool stopAnim(uint32 transitionTime);
224 DXMatrix *getBoneMatrix(
const char *boneName);
227 bool setMaterialSprite(
const char *materialName,
const char *spriteFilename);
228 bool setMaterialTheora(
const char *materialName,
const char *theoraFilename);
229 bool setMaterialEffect(
const char *materialName,
const char *effectFilename);
230 bool removeMaterialEffect(
const char *materialName);
231 bool setMaterialEffectParam(
const char *materialName,
const char *paramName,
ScValue *val);
232 bool setMaterialEffectParam(
const char *materialName,
const char *paramName,
DXVector4 val);
233 bool initializeSimple();
235 bool invalidateDeviceObjects()
override;
236 bool restoreDeviceObjects()
override;
238 bool unloadAnimation(
const char *animName);
240 uint32 _ticksPerSecond{};
245 void cleanup(
bool complete =
true);
246 bool findBones(
bool animOnly =
false,
XModel *parentModel =
nullptr);
248 void updateBoundingRect();
254 int32 _lastOffsetX{};
255 int32 _lastOffsetY{};
Definition: base_game.h:79
Definition: script_value.h:42
Definition: base_persistence_manager.h:43
Definition: coll_templ.h:399
Definition: xanimation_set.h:42
Definition: video_theora_player.h:41
Definition: 3dshadow_volume.h:49
Definition: xanimation_channel.h:37
Definition: coll_templ.h:347
Definition: 3deffect_params.h:36
Definition: base_named_object.h:36
Definition: xframe_node.h:44
Definition: base_sprite.h:40
Definition: 3deffect.h:36
Definition: xfile_loader.h:459
Definition: base_object.h:49
Definition: achievements_tables.h:27