14 #ifndef _AIBEHAVIORS_H 15 #define _AIBEHAVIORS_H 31 typedef std::list<Flee, std::allocator<Flee> > ListFlee;
32 typedef std::list<Evade, std::allocator<Evade> > ListEvade;
50 _flee_activate = 0x00100,
52 _arrival_activate = 0x01000,
56 _evade_activate = 0x00800,
58 _flock_activate = 0x00400,
59 _obstacle_avoidance = 0x02000,
60 _obstacle_avoidance_activate = 0x04000
67 LVecBase3 _steering_force;
70 LVecBase3 _seek_force;
73 LVecBase3 _flee_force;
78 ListFlee::iterator _flee_itr;
81 LVecBase3 _pursue_force;
84 LVecBase3 _evade_force;
88 ListEvade _evade_list;
89 ListEvade::iterator _evade_itr;
92 LVecBase3 _arrival_force;
97 LVecBase3 _flock_force;
101 LVecBase3 _wander_force;
104 LVecBase3 _obstacle_avoidance_force;
110 bool _conflict, _previous_conflict;
115 bool is_on(_behavior_type bt);
116 bool is_on(std::string ai_type);
117 bool is_off(_behavior_type bt);
118 bool is_off(std::string ai_type);
119 void turn_on(std::string ai_type);
120 void turn_off(std::string ai_type);
124 void accumulate_force(std::string force_type, LVecBase3 force);
125 LVecBase3 calculate_prioritized();
127 void flock_activate();
128 LVecBase3 do_flock();
130 int char_to_int(std::string ai_type);
133 void seek(
NodePath target_object,
float seek_wt = 1.0);
134 void seek(LVecBase3 pos,
float seek_wt = 1.0);
136 void flee(
NodePath target_object,
double panic_distance = 10.0,
double relax_distance = 10.0,
float flee_wt = 1.0);
137 void flee(LVecBase3 pos,
double panic_distance = 10.0,
double relax_distance = 10.0,
float flee_wt = 1.0);
139 void pursue(
NodePath target_object,
float pursue_wt = 1.0);
141 void evade(
NodePath target_object,
double panic_distance = 10.0,
double relax_distance = 10.0,
float evade_wt = 1.0);
143 void arrival(
double distance = 10.0);
145 void flock(
float flock_wt);
147 void wander(
double wander_radius = 5.0,
int flag =0,
double aoe = 0.0,
float wander_weight = 1.0);
149 void obstacle_avoidance(
float feeler_length = 1.0);
151 void path_follow(
float follow_wt);
152 void add_to_path(LVecBase3 pos);
153 void start_follow(std::string type =
"normal");
156 void init_path_find(
const char* navmesh_filename);
157 void path_find_to(LVecBase3 pos, std::string type =
"normal");
158 void path_find_to(
NodePath target, std::string type =
"normal");
159 void add_static_obstacle(
NodePath obstacle);
160 void add_dynamic_obstacle(
NodePath obstacle);
163 void remove_ai(std::string ai_type);
164 void pause_ai(std::string ai_type);
165 void resume_ai(std::string ai_type);
167 std::string behavior_status(std::string ai_type);
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class implements all the steering behaviors of the AI framework, such as seek,...
This class is used to define the flock attributes and the AI characters which are part of the flock.
This class contains all the members and functions that are required to form an interface between the ...
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level int...