sin-2015/ceilingsteering.h
1999-04-22 00:00:00 +00:00

160 lines
4.2 KiB
C++

#ifndef __CEILINGSTEERING_H__
#define __CEILINGSTEERING_H__
#include "g_local.h"
#include "entity.h"
#include "steering.h"
//#include "path.h"
class Actor;
class EXPORT_FROM_DLL CeilingObstacleAvoidance : public Steering
{
protected:
qboolean avoidwalls;
public:
CLASS_PROTOTYPE( CeilingObstacleAvoidance );
CeilingObstacleAvoidance();
void AvoidWalls( qboolean );
void ShowInfo( Actor &self );
qboolean Evaluate( Actor &self );
virtual void Archive( Archiver &arc );
virtual void Unarchive( Archiver &arc );
};
inline EXPORT_FROM_DLL void CeilingObstacleAvoidance::Archive (Archiver &arc)
{
Steering::Archive( arc );
arc.WriteBoolean( avoidwalls );
}
inline EXPORT_FROM_DLL void CeilingObstacleAvoidance::Unarchive (Archiver &arc)
{
Steering::Unarchive( arc );
arc.ReadBoolean( &avoidwalls );
}
class EXPORT_FROM_DLL CeilingObstacleAvoidance2 : public Steering
{
protected:
qboolean avoidwalls;
public:
CLASS_PROTOTYPE( CeilingObstacleAvoidance2 );
CeilingObstacleAvoidance2();
void AvoidWalls( qboolean );
void ShowInfo( Actor &self );
qboolean Evaluate( Actor &self );
virtual void Archive( Archiver &arc );
virtual void Unarchive( Archiver &arc );
};
inline EXPORT_FROM_DLL void CeilingObstacleAvoidance2::Archive (Archiver &arc)
{
Steering::Archive( arc );
arc.WriteBoolean( avoidwalls );
}
inline EXPORT_FROM_DLL void CeilingObstacleAvoidance2::Unarchive (Archiver &arc)
{
Steering::Unarchive( arc );
arc.ReadBoolean( &avoidwalls );
}
class EXPORT_FROM_DLL CeilingChase : public Steering
{
private:
Seek seek;
// FollowPath follow;
// float nextpathtime;
// PathPtr path;
Vector goal;
EntityPtr goalent;
// PathNodePtr goalnode;
CeilingObstacleAvoidance avoid;
float avoidtime;
qboolean usegoal;
// float newpathrate;
Vector wanderstart;
int wander;
float wandertime;
Turn turnto;
str anim;
int stuck;
Vector avoidvec;
public:
CLASS_PROTOTYPE( CeilingChase );
CeilingChase();
// void SetPath( Path *newpath );
void SetGoalPos( Vector pos );
// void SetGoal( PathNode *node );
void SetTarget( Entity *ent );
// void SetPathRate( float rate );
void ShowInfo( Actor &self );
Vector ChooseRandomDirection( Actor &self );
void Begin( Actor &self );
qboolean Evaluate( Actor &self );
void End( Actor &self );
virtual void Archive( Archiver &arc );
virtual void Unarchive( Archiver &arc );
};
inline EXPORT_FROM_DLL void CeilingChase::Archive (Archiver &arc)
{
Steering::Archive( arc );
arc.WriteObject( &seek );
// arc.WriteObject( &follow );
// arc.WriteFloat( nextpathtime );
// arc.WriteSafePointer( path );
arc.WriteVector( goal );
arc.WriteSafePointer( goalent );
// arc.WriteSafePointer( goalnode );
arc.WriteObject( &avoid );
arc.WriteFloat( avoidtime );
arc.WriteBoolean( usegoal );
// arc.WriteFloat( newpathrate );
arc.WriteVector( wanderstart );
arc.WriteInteger( wander );
arc.WriteFloat( wandertime );
arc.WriteObject( &turnto );
arc.WriteString( anim );
arc.WriteInteger( stuck );
arc.WriteVector( avoidvec );
}
inline EXPORT_FROM_DLL void CeilingChase::Unarchive (Archiver &arc)
{
Steering::Unarchive( arc );
arc.ReadObject( &seek );
// arc.ReadObject( &follow );
// arc.ReadFloat( &nextpathtime );
// arc.ReadSafePointer( &path );
arc.ReadVector( &goal );
arc.ReadSafePointer( &goalent );
// arc.ReadSafePointer( &goalnode );
arc.ReadObject( &avoid );
arc.ReadFloat( &avoidtime );
arc.ReadBoolean( &usegoal );
// arc.ReadFloat( &newpathrate );
arc.ReadVector( &wanderstart );
arc.ReadInteger( &wander );
arc.ReadFloat( &wandertime );
arc.ReadObject( &turnto );
arc.ReadString( &anim );
arc.ReadInteger( &stuck );
arc.ReadVector( &avoidvec );
}
#endif /* ceilingsteering.h */