ef2-sdk/dlls/game/mover.h

71 lines
2.1 KiB
C++

//-----------------------------------------------------------------------------
//
// $Logfile:: /Code/DLLs/game/mover.h $
// $Revision:: 7 $
// $Author:: Steven $
// $Date:: 10/13/03 8:54a $
//
// Copyright (C) 1997 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
//
// DESCRIPTION:
// Base class for any object that needs to move to specific locations over a
// period of time. This class is kept separate from most entities to keep
// class size down for objects that don't need such behavior.
//
#ifndef __MOVER_H__
#define __MOVER_H__
#include "g_local.h"
#include "entity.h"
#include "trigger.h"
#define MOVE_ANGLES 1
#define MOVE_ORIGIN 2
class Mover : public Listener
{
private:
Vector finaldest;
Vector angledest;
Event *endevent;
int moveflags;
Entity *self;
public:
CLASS_PROTOTYPE( Mover );
Mover();
Mover( Entity *ent );
virtual ~Mover();
void MoveDone( Event *ev );
void MoveTo( const Vector &tdest, const Vector &angdest, float tspeed, Event &event );
void LinearInterpolate( const Vector &tdest, const Vector &angdest, float time, Event &event );
const int GetMoveFlags( void ) const { return moveflags; }
void SetMoveFlags( const int moveFlags ) { moveflags = moveFlags; }
void SetEndEvent( const int endEvent );
void SetFinalDestination( const Vector &finalDestination) { finaldest = finalDestination; }
virtual void Archive( Archiver &arc );
};
inline void Mover::Archive
(
Archiver &arc
)
{
Listener::Archive( arc );
arc.ArchiveVector( &finaldest );
arc.ArchiveVector( &angledest );
arc.ArchiveEventPointer( &endevent );
arc.ArchiveInteger( &moveflags );
}
#endif