Initial commit
This commit is contained in:
136
engines/wintermute/ad/ad_actor_3dx.h
Normal file
136
engines/wintermute/ad/ad_actor_3dx.h
Normal file
@@ -0,0 +1,136 @@
|
||||
/* ScummVM - Graphic Adventure Engine
|
||||
*
|
||||
* ScummVM is the legal property of its developers, whose names
|
||||
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||
* file distributed with this source distribution.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is based on WME.
|
||||
* http://dead-code.org/redir.php?target=wme
|
||||
* Copyright (c) 2003-2013 Jan Nedoma and contributors
|
||||
*/
|
||||
|
||||
#ifndef WINTERMUTE_AD_ACTOR_3DX_H
|
||||
#define WINTERMUTE_AD_ACTOR_3DX_H
|
||||
|
||||
#include "engines/wintermute/ad/ad_object_3d.h"
|
||||
#include "engines/wintermute/base/base_animation_transition_time.h"
|
||||
#include "engines/wintermute/base/base_point.h"
|
||||
#include "engines/wintermute/base/gfx/xmath.h"
|
||||
#include "engines/wintermute/coll_templ.h"
|
||||
|
||||
namespace Wintermute {
|
||||
|
||||
class AdAttach3DX;
|
||||
class AdPath;
|
||||
class AdPath3D;
|
||||
|
||||
class AdActor3DX : public AdObject3D {
|
||||
public:
|
||||
PartEmitter *createParticleEmitter(bool followParent = false, int offsetX = 0, int offsetY = 0) override;
|
||||
virtual PartEmitter *createParticleEmitter(const char *boneName, DXVector3 offset);
|
||||
bool updatePartEmitter() override;
|
||||
char *_partBone;
|
||||
DXVector3 _partOffset;
|
||||
|
||||
bool displayShadowVolume();
|
||||
bool displayFlatShadow();
|
||||
bool restoreDeviceObjects() override;
|
||||
bool invalidateDeviceObjects() override;
|
||||
int32 _stateAnimChannel;
|
||||
void talk(const char *text, const char *sound = nullptr, uint32 duration = 0, const char *stances = nullptr, TTextAlign align = TAL_CENTER) override;
|
||||
int32 getHeight() override;
|
||||
bool playAnim3DX(const char *name, bool setState);
|
||||
bool playAnim3DX(int channel, const char *name, bool setState);
|
||||
|
||||
uint32 getAnimTransitionTime(const char *from, const char *to) override;
|
||||
BaseArray<BaseAnimationTransitionTime *> _transitionTimes;
|
||||
|
||||
virtual bool renderModel() override;
|
||||
|
||||
uint32 _defaultTransTime;
|
||||
uint32 _defaultStopTransTime;
|
||||
|
||||
float _afterWalkAngle;
|
||||
char *_talkAnimName;
|
||||
char *_idleAnimName;
|
||||
char *_walkAnimName;
|
||||
char *_turnLeftAnimName;
|
||||
char *_turnRightAnimName;
|
||||
|
||||
int32 _talkAnimChannel;
|
||||
|
||||
TDirectWalkMode _directWalkMode;
|
||||
TDirectTurnMode _directTurnMode;
|
||||
char *_directWalkAnim;
|
||||
char *_directTurnAnim;
|
||||
float _directWalkVelocity;
|
||||
float _directTurnVelocity;
|
||||
|
||||
int32 _goToTolerance;
|
||||
|
||||
DECLARE_PERSISTENT(AdActor3DX, AdObject3D)
|
||||
bool _turningLeft;
|
||||
|
||||
void initLine3D(DXVector3 startPt, DXVector3 endPt, bool firstStep);
|
||||
void getNextStep3D();
|
||||
void followPath3D();
|
||||
|
||||
void getNextStep2D();
|
||||
void followPath2D();
|
||||
|
||||
void goTo3D(DXVector3 targetPos, float targetAngle = -1.0f);
|
||||
void goTo2D(int x, int y, float targetAngle = -1.0f);
|
||||
bool turnTo(float angle);
|
||||
DXVector3 _targetPoint3D;
|
||||
BasePoint *_targetPoint2D;
|
||||
float _targetAngle;
|
||||
bool display() override;
|
||||
bool update() override;
|
||||
AdActor3DX(BaseGame *inGame);
|
||||
virtual ~AdActor3DX();
|
||||
AdPath3D *_path3D;
|
||||
AdPath *_path2D;
|
||||
bool loadFile(const char *filename);
|
||||
bool loadBuffer(char *buffer, bool complete = true);
|
||||
float dirToAngle(TDirection dir);
|
||||
TDirection angleToDir(float angle);
|
||||
|
||||
bool updateAttachments();
|
||||
bool displayAttachments(bool registerObjects);
|
||||
|
||||
// scripting interface
|
||||
ScValue *scGetProperty(const char *name) override;
|
||||
bool scSetProperty(const char *name, ScValue *value) override;
|
||||
bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
|
||||
const char *scToString() override;
|
||||
|
||||
private:
|
||||
bool parseEffect(char *buffer);
|
||||
BaseArray<AdAttach3DX *> _attachments;
|
||||
bool turnToStep(float velocity);
|
||||
bool prepareTurn(float targetAngle);
|
||||
bool mergeAnimations(const char *filename);
|
||||
bool mergeAnimations2(const char *filename);
|
||||
bool unloadAnimation(const char *animName);
|
||||
bool isGoToNeeded(int32 x, int32 y);
|
||||
};
|
||||
|
||||
} // namespace Wintermute
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user