160 lines
4.2 KiB
C++
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 */
|