mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
Compile PandAI with ppremake
This commit is contained in:
parent
bd5e89e4a5
commit
fc4b36b1ec
82
contrib/src/ai/Sources.pp
Executable file
82
contrib/src/ai/Sources.pp
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#define LOCAL_LIBS contribbase
|
||||||
|
#define BUILDING_DLL BUILDING_PANDAAI
|
||||||
|
|
||||||
|
#define OTHER_LIBS \
|
||||||
|
panda:c \
|
||||||
|
express:c putil:c pandabase:c pandaexpress:m \
|
||||||
|
interrogatedb:c prc:c dconfig:c dtoolconfig:m \
|
||||||
|
dtoolutil:c dtoolbase:c dtool:m
|
||||||
|
|
||||||
|
#begin lib_target
|
||||||
|
#define TARGET pandaai
|
||||||
|
|
||||||
|
#define COMBINED_SOURCES ai_composite1.cxx
|
||||||
|
|
||||||
|
#define SOURCES \
|
||||||
|
aiBehaviors.h \
|
||||||
|
aiCharacter.h \
|
||||||
|
aiGlobals.h \
|
||||||
|
aiNode.h \
|
||||||
|
aiPathFinder.h \
|
||||||
|
aiWorld.h \
|
||||||
|
arrival.h \
|
||||||
|
config_ai.h \
|
||||||
|
evade.h \
|
||||||
|
flee.h \
|
||||||
|
flock.h \
|
||||||
|
globals.h \
|
||||||
|
meshNode.h \
|
||||||
|
obstacleAvoidance.h \
|
||||||
|
pathFind.h \
|
||||||
|
pathFollow.h \
|
||||||
|
pursue.h \
|
||||||
|
seek.h \
|
||||||
|
wander.h
|
||||||
|
|
||||||
|
#define INCLUDED_SOURCES \
|
||||||
|
aiBehaviors.cxx \
|
||||||
|
aiCharacter.cxx \
|
||||||
|
aiNode.cxx \
|
||||||
|
aiPathFinder.cxx \
|
||||||
|
aiWorld.cxx \
|
||||||
|
ai_composite.cxx \
|
||||||
|
ai_composite1.cxx \
|
||||||
|
arrival.cxx \
|
||||||
|
config_ai.cxx \
|
||||||
|
evade.cxx \
|
||||||
|
flee.cxx \
|
||||||
|
flock.cxx \
|
||||||
|
meshNode.cxx \
|
||||||
|
obstacleAvoidance.cxx \
|
||||||
|
pathFind.cxx \
|
||||||
|
pathFollow.cxx \
|
||||||
|
pursue.cxx \
|
||||||
|
seek.cxx \
|
||||||
|
wander.cxx
|
||||||
|
|
||||||
|
|
||||||
|
#define INSTALL_HEADERS \
|
||||||
|
aiBehaviors.h \
|
||||||
|
aiCharacter.h \
|
||||||
|
aiGlobals.h \
|
||||||
|
aiNode.h \
|
||||||
|
aiPathFinder.h \
|
||||||
|
aiWorld.h \
|
||||||
|
arrival.h \
|
||||||
|
config_ai.h \
|
||||||
|
evade.h \
|
||||||
|
flee.h \
|
||||||
|
flock.h \
|
||||||
|
globals.h \
|
||||||
|
meshNode.h \
|
||||||
|
obstacleAvoidance.h \
|
||||||
|
pathFind.h \
|
||||||
|
pathFollow.h \
|
||||||
|
pursue.h \
|
||||||
|
seek.h \
|
||||||
|
wander.h
|
||||||
|
|
||||||
|
#define IGATESCAN all
|
||||||
|
|
||||||
|
#end lib_target
|
||||||
|
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license along
|
// BSD license. You should have received a copy of this license along
|
||||||
// with this source code in a file named "LICENSE."
|
// with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
@ -104,10 +104,10 @@ bool AIBehaviors::is_conflict() {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: accumulate_force
|
// Function: accumulate_force
|
||||||
// Description: This function updates the individual steering forces
|
// Description: This function updates the individual steering forces
|
||||||
// for each of the ai characters.
|
// for each of the ai characters.
|
||||||
// These accumulated forces are eventually what
|
// These accumulated forces are eventually what
|
||||||
// comprise the resultant steering force of the
|
// comprise the resultant steering force of the
|
||||||
// character.
|
// character.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::accumulate_force(string force_type, LVecBase3f force) {
|
void AIBehaviors::accumulate_force(string force_type, LVecBase3f force) {
|
||||||
@ -160,10 +160,10 @@ void AIBehaviors::accumulate_force(string force_type, LVecBase3f force) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: calculate_prioritized
|
// Function: calculate_prioritized
|
||||||
// Description: This function updates the main steering force
|
// Description: This function updates the main steering force
|
||||||
// for the ai character using the accumulate function
|
// for the ai character using the accumulate function
|
||||||
// and checks for max force and arrival force.
|
// and checks for max force and arrival force.
|
||||||
// It finally returns this steering force which is
|
// It finally returns this steering force which is
|
||||||
// accessed by the update function in the AICharacter
|
// accessed by the update function in the AICharacter
|
||||||
// class.
|
// class.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -502,7 +502,7 @@ void AIBehaviors::pause_ai(string ai_type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 8: {
|
case 8: {
|
||||||
if (BT_obstacle_avoidance != NULL) {
|
if (_obstacle_avoidance_obj != NULL) {
|
||||||
turn_off("obstacle_avoidance");
|
turn_off("obstacle_avoidance");
|
||||||
turn_off("obstacle_avoidance_activate");
|
turn_off("obstacle_avoidance_activate");
|
||||||
}
|
}
|
||||||
@ -628,7 +628,7 @@ void AIBehaviors::resume_ai(string ai_type) {
|
|||||||
// of the Seek class.
|
// of the Seek class.
|
||||||
// This is the function we want the user to call for
|
// This is the function we want the user to call for
|
||||||
// seek to be done.
|
// seek to be done.
|
||||||
// This function is overloaded to accept a NodePath or
|
// This function is overloaded to accept a NodePath or
|
||||||
// an LVecBase3f.
|
// an LVecBase3f.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::seek(NodePath target_object, float seek_wt) {
|
void AIBehaviors::seek(NodePath target_object, float seek_wt) {
|
||||||
@ -650,7 +650,7 @@ void AIBehaviors::seek(LVecBase3f pos, float seek_wt) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::flee(NodePath target_object, double panic_distance,
|
void AIBehaviors::flee(NodePath target_object, double panic_distance,
|
||||||
double relax_distance, float flee_wt) {
|
double relax_distance, float flee_wt) {
|
||||||
_flee_obj = new Flee(_ai_char, target_object, panic_distance,
|
_flee_obj = new Flee(_ai_char, target_object, panic_distance,
|
||||||
relax_distance, flee_wt);
|
relax_distance, flee_wt);
|
||||||
_flee_list.insert(_flee_list.end(), *_flee_obj);
|
_flee_list.insert(_flee_list.end(), *_flee_obj);
|
||||||
|
|
||||||
@ -669,8 +669,8 @@ void AIBehaviors::flee(LVecBase3f pos, double panic_distance,
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: pursue
|
// Function: pursue
|
||||||
// Description: This function activates pursue.
|
// Description: This function activates pursue.
|
||||||
// This is the function we want the user to call
|
// This is the function we want the user to call
|
||||||
// for pursue to be done.
|
// for pursue to be done.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::pursue(NodePath target_object, float pursue_wt) {
|
void AIBehaviors::pursue(NodePath target_object, float pursue_wt) {
|
||||||
_pursue_obj = new Pursue(_ai_char, target_object, pursue_wt);
|
_pursue_obj = new Pursue(_ai_char, target_object, pursue_wt);
|
||||||
@ -683,7 +683,7 @@ void AIBehaviors::pursue(NodePath target_object, float pursue_wt) {
|
|||||||
// Description: This function activates evade_activate.
|
// Description: This function activates evade_activate.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::evade(NodePath target_object, double panic_distance,
|
void AIBehaviors::evade(NodePath target_object, double panic_distance,
|
||||||
double relax_distance, float evade_wt) {
|
double relax_distance, float evade_wt) {
|
||||||
_evade_obj = new Evade(_ai_char, target_object, panic_distance, relax_distance, evade_wt);
|
_evade_obj = new Evade(_ai_char, target_object, panic_distance, relax_distance, evade_wt);
|
||||||
_evade_list.insert(_evade_list.end(), *_evade_obj);
|
_evade_list.insert(_evade_list.end(), *_evade_obj);
|
||||||
|
|
||||||
@ -715,7 +715,7 @@ void AIBehaviors::arrival(double distance) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: flock
|
// Function: flock
|
||||||
// Description: This function activates flock.
|
// Description: This function activates flock.
|
||||||
// This is the function we want the user to call for
|
// This is the function we want the user to call for
|
||||||
// flock to be done.
|
// flock to be done.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::flock(float flock_wt) {
|
void AIBehaviors::flock(float flock_wt) {
|
||||||
@ -727,7 +727,7 @@ void AIBehaviors::flock(float flock_wt) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: flock_activate
|
// Function: flock_activate
|
||||||
// Description: This function checks whether any other behavior
|
// Description: This function checks whether any other behavior
|
||||||
// exists to work with flock.
|
// exists to work with flock.
|
||||||
// When this is true, it calls the do_flock function.
|
// When this is true, it calls the do_flock function.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -740,13 +740,13 @@ void AIBehaviors::flock_activate() {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: do_flock
|
// Function: do_flock
|
||||||
// Description: This function contains the logic for flocking
|
// Description: This function contains the logic for flocking
|
||||||
// behavior. This is an emergent behavior and is
|
// behavior. This is an emergent behavior and is
|
||||||
// obtained by combining three other behaviors which
|
// obtained by combining three other behaviors which
|
||||||
// are separation, cohesion and alignment based on
|
// are separation, cohesion and alignment based on
|
||||||
// Craig Reynold's algorithm. Also, this behavior does
|
// Craig Reynold's algorithm. Also, this behavior does
|
||||||
// not work by itself. It works only when combined with
|
// not work by itself. It works only when combined with
|
||||||
// other steering behaviors such as wander, pursue,
|
// other steering behaviors such as wander, pursue,
|
||||||
// evade, seek and flee.
|
// evade, seek and flee.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
LVecBase3f AIBehaviors::do_flock() {
|
LVecBase3f AIBehaviors::do_flock() {
|
||||||
@ -778,7 +778,7 @@ LVecBase3f AIBehaviors::do_flock() {
|
|||||||
* cos(_flock_group->_flock_vcone_angle * (_PI / 180)))
|
* cos(_flock_group->_flock_vcone_angle * (_PI / 180)))
|
||||||
&& (dist_vect.length() < _flock_group->_flock_vcone_radius)) {
|
&& (dist_vect.length() < _flock_group->_flock_vcone_radius)) {
|
||||||
// Separation force calculation.
|
// Separation force calculation.
|
||||||
LVecBase3f ai_char_to_units = _ai_char->_ai_char_np.get_pos()
|
LVecBase3f ai_char_to_units = _ai_char->_ai_char_np.get_pos()
|
||||||
- _flock_group->_ai_char_list[i]->_ai_char_np.get_pos();
|
- _flock_group->_ai_char_list[i]->_ai_char_np.get_pos();
|
||||||
float to_units_dist = ai_char_to_units.length();
|
float to_units_dist = ai_char_to_units.length();
|
||||||
ai_char_to_units.normalize();
|
ai_char_to_units.normalize();
|
||||||
@ -811,7 +811,7 @@ LVecBase3f AIBehaviors::do_flock() {
|
|||||||
cohesion_dir.normalize();
|
cohesion_dir.normalize();
|
||||||
cohesion_force = cohesion_dir * _ai_char->_movt_force;
|
cohesion_force = cohesion_dir * _ai_char->_movt_force;
|
||||||
}
|
}
|
||||||
else if (is_on(BT_seek) || is_on(BT_flee) || is_on(BT_pursue) ||
|
else if (is_on(BT_seek) || is_on(BT_flee) || is_on(BT_pursue) ||
|
||||||
is_on(BT_evade) || is_on(BT_wander)) {
|
is_on(BT_evade) || is_on(BT_wander)) {
|
||||||
_flock_done = true;
|
_flock_done = true;
|
||||||
turn_off("flock");
|
turn_off("flock");
|
||||||
@ -822,7 +822,7 @@ LVecBase3f AIBehaviors::do_flock() {
|
|||||||
// Calculate the resultant force on the ai character by taking into
|
// Calculate the resultant force on the ai character by taking into
|
||||||
// account the separation, alignment and cohesion
|
// account the separation, alignment and cohesion
|
||||||
// forces along with their corresponding weights.
|
// forces along with their corresponding weights.
|
||||||
return (separation_force * _flock_group->_separation_wt +
|
return (separation_force * _flock_group->_separation_wt +
|
||||||
avg_neighbor_heading * _flock_group->_alignment_wt
|
avg_neighbor_heading * _flock_group->_alignment_wt
|
||||||
+ cohesion_force * _flock_group->_cohesion_wt);
|
+ cohesion_force * _flock_group->_cohesion_wt);
|
||||||
}
|
}
|
||||||
@ -830,10 +830,10 @@ LVecBase3f AIBehaviors::do_flock() {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: wander
|
// Function: wander
|
||||||
// Description: This function activates wander.
|
// Description: This function activates wander.
|
||||||
// This is the function we want the user to call
|
// This is the function we want the user to call
|
||||||
// for flock to be done.
|
// for flock to be done.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::wander(double wander_radius, int flag, double aoe,
|
void AIBehaviors::wander(double wander_radius, int flag, double aoe,
|
||||||
float wander_weight) {
|
float wander_weight) {
|
||||||
_wander_obj = new Wander(_ai_char, wander_radius, flag, aoe,
|
_wander_obj = new Wander(_ai_char, wander_radius, flag, aoe,
|
||||||
wander_weight);
|
wander_weight);
|
||||||
@ -842,7 +842,7 @@ void AIBehaviors::wander(double wander_radius, int flag, double aoe,
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: obstacle avoidance
|
// Function: obstacle avoidance
|
||||||
// Description: This function activates obstacle avoidance for a
|
// Description: This function activates obstacle avoidance for a
|
||||||
// given character.
|
// given character.
|
||||||
// This is the function we want the user to call for
|
// This is the function we want the user to call for
|
||||||
// obstacle avoidance to be performed.
|
// obstacle avoidance to be performed.
|
||||||
@ -855,7 +855,7 @@ void AIBehaviors::obstacle_avoidance(float obstacle_avoidance_weight) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: path_follow
|
// Function: path_follow
|
||||||
// Description: This function activates path following.
|
// Description: This function activates path following.
|
||||||
// This is the function we want the user to call for
|
// This is the function we want the user to call for
|
||||||
// path following.
|
// path following.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::path_follow(float follow_wt) {
|
void AIBehaviors::path_follow(float follow_wt) {
|
||||||
@ -889,9 +889,9 @@ void AIBehaviors::init_path_find(const char* navmesh_filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: path_find_to (for pathfinding towards a
|
// Function: path_find_to (for pathfinding towards a
|
||||||
// static position)
|
// static position)
|
||||||
// Description: This function checks for the source and target in
|
// Description: This function checks for the source and target in
|
||||||
// the navigation mesh for its availability and then
|
// the navigation mesh for its availability and then
|
||||||
// finds the best path via the A* algorithm
|
// finds the best path via the A* algorithm
|
||||||
// Then it calls the path follower to make the object
|
// Then it calls the path follower to make the object
|
||||||
@ -902,9 +902,9 @@ void AIBehaviors::path_find_to(LVecBase3f pos, string type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: path_find_to (for pathfinding towards a moving
|
// Function: path_find_to (for pathfinding towards a moving
|
||||||
// target (a NodePath))
|
// target (a NodePath))
|
||||||
// Description: This function checks for the source and target in
|
// Description: This function checks for the source and target in
|
||||||
// the navigation mesh for its availability and then
|
// the navigation mesh for its availability and then
|
||||||
// finds the best path via the A* algorithm
|
// finds the best path via the A* algorithm
|
||||||
// Then it calls the path follower to make the object
|
// Then it calls the path follower to make the object
|
||||||
@ -916,11 +916,11 @@ void AIBehaviors::path_find_to(NodePath target, string type) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: add_static_obstacle
|
// Function: add_static_obstacle
|
||||||
// Description: This function allows the user to dynamically add
|
// Description: This function allows the user to dynamically add
|
||||||
// obstacles to the
|
// obstacles to the
|
||||||
// game environment. The function will update the nodes
|
// game environment. The function will update the nodes
|
||||||
// within the bounding volume of the obstacle as non-
|
// within the bounding volume of the obstacle as non-
|
||||||
// traversable. Hence will not be considered by the
|
// traversable. Hence will not be considered by the
|
||||||
// pathfinding algorithm.
|
// pathfinding algorithm.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::add_static_obstacle(NodePath obstacle) {
|
void AIBehaviors::add_static_obstacle(NodePath obstacle) {
|
||||||
@ -929,7 +929,7 @@ void AIBehaviors::add_static_obstacle(NodePath obstacle) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: add_dynamic_obstacle
|
// Function: add_dynamic_obstacle
|
||||||
// Description: This function starts the pathfinding obstacle
|
// Description: This function starts the pathfinding obstacle
|
||||||
// navigation for the passed in obstacle.
|
// navigation for the passed in obstacle.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::add_dynamic_obstacle(NodePath obstacle) {
|
void AIBehaviors::add_dynamic_obstacle(NodePath obstacle) {
|
||||||
@ -938,7 +938,7 @@ void AIBehaviors::add_dynamic_obstacle(NodePath obstacle) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: behavior_status
|
// Function: behavior_status
|
||||||
// Description: This function returns the status of an AI Type
|
// Description: This function returns the status of an AI Type
|
||||||
// whether it is active, paused or disabled. It returns
|
// whether it is active, paused or disabled. It returns
|
||||||
// -1 if an invalid string is passed.
|
// -1 if an invalid string is passed.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -1136,12 +1136,12 @@ string AIBehaviors::behavior_status(string ai_type) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 10:
|
case 10:
|
||||||
if (_seek_obj || _flee_obj || _pursue_obj || _evade_obj || _arrival_obj
|
if (_seek_obj || _flee_obj || _pursue_obj || _evade_obj || _arrival_obj
|
||||||
|| _flock_group || _wander_obj || _obstacle_avoidance_obj ||
|
|| _flock_group || _wander_obj || _obstacle_avoidance_obj ||
|
||||||
_path_follow_obj) {
|
_path_follow_obj) {
|
||||||
if (is_on(BT_seek) || is_on(BT_flee) || is_on(BT_pursue)||
|
if (is_on(BT_seek) || is_on(BT_flee) || is_on(BT_pursue)||
|
||||||
is_on(BT_evade) || is_on(BT_arrival) || is_on(BT_flock)
|
is_on(BT_evade) || is_on(BT_arrival) || is_on(BT_flock)
|
||||||
|| is_on(BT_wander) || is_on(BT_obstacle_avoidance) ||
|
|| is_on(BT_wander) || is_on(BT_obstacle_avoidance) ||
|
||||||
is_on("pathfollow") || is_on("pathfinding")) {
|
is_on("pathfollow") || is_on("pathfinding")) {
|
||||||
return "active";
|
return "active";
|
||||||
}
|
}
|
||||||
@ -1223,7 +1223,7 @@ int AIBehaviors::char_to_int(string ai_type) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: turn_on
|
// Function: turn_on
|
||||||
// Description: This function turns on any aiBehavior which is
|
// Description: This function turns on any aiBehavior which is
|
||||||
// passed as a string.
|
// passed as a string.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::turn_on(string ai_type) {
|
void AIBehaviors::turn_on(string ai_type) {
|
||||||
@ -1287,7 +1287,7 @@ void AIBehaviors::turn_on(string ai_type) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: turn_off
|
// Function: turn_off
|
||||||
// Description: This function turns off any aiBehavior which is
|
// Description: This function turns off any aiBehavior which is
|
||||||
// passed as a string.
|
// passed as a string.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void AIBehaviors::turn_off(string ai_type) {
|
void AIBehaviors::turn_off(string ai_type) {
|
||||||
@ -1401,7 +1401,7 @@ bool AIBehaviors::is_on(BehaviorType bt) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: is_on
|
// Function: is_on
|
||||||
// Description: This function returns true if pathfollow or
|
// Description: This function returns true if pathfollow or
|
||||||
// pathfinding is on
|
// pathfinding is on
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool AIBehaviors::is_on(string ai_type) {
|
bool AIBehaviors::is_on(string ai_type) {
|
||||||
@ -1436,7 +1436,7 @@ bool AIBehaviors::is_off(BehaviorType bt) {
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: is_off
|
// Function: is_off
|
||||||
// Description: This function returns true if pathfollow or
|
// Description: This function returns true if pathfollow or
|
||||||
// pathfinding is off
|
// pathfinding is off
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool AIBehaviors::is_off(string ai_type) {
|
bool AIBehaviors::is_off(string ai_type) {
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -92,7 +92,7 @@ public:
|
|||||||
Flee *_flee_obj;
|
Flee *_flee_obj;
|
||||||
LVecBase3f _flee_force;
|
LVecBase3f _flee_force;
|
||||||
|
|
||||||
// This list is used if the ai character needs to flee from
|
// This list is used if the ai character needs to flee from
|
||||||
// multiple onjects.
|
// multiple onjects.
|
||||||
ListFlee _flee_list;
|
ListFlee _flee_list;
|
||||||
ListFlee::iterator _flee_itr;
|
ListFlee::iterator _flee_itr;
|
||||||
@ -111,7 +111,7 @@ public:
|
|||||||
Arrival *_arrival_obj;
|
Arrival *_arrival_obj;
|
||||||
LVecBase3f _arrival_force;
|
LVecBase3f _arrival_force;
|
||||||
|
|
||||||
// Since Flock is a collective behavior the variables are
|
// Since Flock is a collective behavior the variables are
|
||||||
// declared within the AIBehaviors class.
|
// declared within the AIBehaviors class.
|
||||||
float _flock_weight;
|
float _flock_weight;
|
||||||
LVecBase3f _flock_force;
|
LVecBase3f _flock_force;
|
||||||
@ -135,7 +135,7 @@ public:
|
|||||||
bool is_on(BehaviorType bt);
|
bool is_on(BehaviorType bt);
|
||||||
bool is_off(BehaviorType bt);
|
bool is_off(BehaviorType bt);
|
||||||
// special cases for pathfollow and pathfinding
|
// special cases for pathfollow and pathfinding
|
||||||
bool is_on(string ai_type);
|
bool is_on(string ai_type);
|
||||||
bool is_off(string ai_type);
|
bool is_off(string ai_type);
|
||||||
void turn_on(string ai_type);
|
void turn_on(string ai_type);
|
||||||
void turn_off(string ai_type);
|
void turn_off(string ai_type);
|
||||||
@ -156,19 +156,19 @@ PUBLISHED:
|
|||||||
|
|
||||||
void flee(NodePath target_object, double panic_distance = 10.0,
|
void flee(NodePath target_object, double panic_distance = 10.0,
|
||||||
double relax_distance = 10.0, float flee_wt = 1.0);
|
double relax_distance = 10.0, float flee_wt = 1.0);
|
||||||
void flee(LVecBase3f pos, double panic_distance = 10.0,
|
void flee(LVecBase3f pos, double panic_distance = 10.0,
|
||||||
double relax_distance = 10.0, float flee_wt = 1.0);
|
double relax_distance = 10.0, float flee_wt = 1.0);
|
||||||
|
|
||||||
void pursue(NodePath target_object, float pursue_wt = 1.0);
|
void pursue(NodePath target_object, float pursue_wt = 1.0);
|
||||||
|
|
||||||
void evade(NodePath target_object, double panic_distance = 10.0,
|
void evade(NodePath target_object, double panic_distance = 10.0,
|
||||||
double relax_distance = 10.0, float evade_wt = 1.0);
|
double relax_distance = 10.0, float evade_wt = 1.0);
|
||||||
|
|
||||||
void arrival(double distance = 10.0);
|
void arrival(double distance = 10.0);
|
||||||
|
|
||||||
void flock(float flock_wt);
|
void flock(float flock_wt);
|
||||||
|
|
||||||
void wander(double wander_radius = 5.0, int flag =0,
|
void wander(double wander_radius = 5.0, int flag =0,
|
||||||
double aoe = 0.0, float wander_weight = 1.0);
|
double aoe = 0.0, float wander_weight = 1.0);
|
||||||
|
|
||||||
void obstacle_avoidance(float feeler_length = 1.0);
|
void obstacle_avoidance(float feeler_length = 1.0);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license along
|
// BSD license. You should have received a copy of this license along
|
||||||
// with this source code in a file named "LICENSE."
|
// with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
@ -15,23 +15,20 @@
|
|||||||
#ifndef AICHARACTER_H
|
#ifndef AICHARACTER_H
|
||||||
#define AICHARACTER_H
|
#define AICHARACTER_H
|
||||||
|
|
||||||
#include "aiBehaviors.h"
|
|
||||||
#include "aiWorld.h"
|
|
||||||
|
|
||||||
class AIBehaviors;
|
class AIBehaviors;
|
||||||
class AIWorld;
|
class AIWorld;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Class : AICharacter
|
// Class : AICharacter
|
||||||
// Description : This class is used for creating the ai characters.
|
// Description : This class is used for creating the ai characters.
|
||||||
// It assigns both physics and ai attributes to the
|
// It assigns both physics and ai attributes to the
|
||||||
// character. It also has an update function which
|
// character. It also has an update function which
|
||||||
// updates the physics and ai of the character.
|
// updates the physics and ai of the character.
|
||||||
// This update function is called by the AIWorld
|
// This update function is called by the AIWorld
|
||||||
// update.
|
// update.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
class AICharacter {
|
class AICharacter {
|
||||||
public:
|
public:
|
||||||
double _mass;
|
double _mass;
|
||||||
double _max_force;
|
double _max_force;
|
||||||
LVecBase3f _velocity;
|
LVecBase3f _velocity;
|
||||||
@ -64,11 +61,11 @@ PUBLISHED:
|
|||||||
|
|
||||||
AIBehaviors * get_ai_behaviors();
|
AIBehaviors * get_ai_behaviors();
|
||||||
|
|
||||||
// This function is used to enable or disable the guides
|
// This function is used to enable or disable the guides
|
||||||
// for path finding.
|
// for path finding.
|
||||||
void set_pf_guide(bool pf_guide);
|
void set_pf_guide(bool pf_guide);
|
||||||
|
|
||||||
AICharacter(string model_name, NodePath model_np, double mass,
|
AICharacter(string model_name, NodePath model_np, double mass,
|
||||||
double movt_force, double max_force);
|
double movt_force, double max_force);
|
||||||
~AICharacter();
|
~AICharacter();
|
||||||
};
|
};
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
@ -29,7 +29,7 @@
|
|||||||
// on the mesh.
|
// on the mesh.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
class AINode {
|
class AINode {
|
||||||
public:
|
PUBLISHED:
|
||||||
// This variable specifies whether the node is an obtacle or not.
|
// This variable specifies whether the node is an obtacle or not.
|
||||||
// Used for dynamic obstacle addition to the environment.
|
// Used for dynamic obstacle addition to the environment.
|
||||||
// obstacle = false
|
// obstacle = false
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license along
|
// BSD license. You should have received a copy of this license along
|
||||||
// with this source code in a file named "LICENSE."
|
// with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
@ -32,7 +32,7 @@ AINode* find_in_mesh(NavMesh nav_mesh, LVecBase3f pos, int grid_size);
|
|||||||
// calculated using the manhattan method.
|
// calculated using the manhattan method.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
class PathFinder {
|
class PathFinder {
|
||||||
public:
|
PUBLISHED:
|
||||||
AINode *_src_node;
|
AINode *_src_node;
|
||||||
AINode *_dest_node;
|
AINode *_dest_node;
|
||||||
vector<AINode*> _open_list;
|
vector<AINode*> _open_list;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license along
|
// BSD license. You should have received a copy of this license along
|
||||||
// with this source code in a file named "LICENSE."
|
// with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
@ -25,7 +25,7 @@ class Flock;
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Class : AICharPool
|
// Class : AICharPool
|
||||||
// Description : This class implements a linked list of AI
|
// Description : This class implements a linked list of AI
|
||||||
// Characters allowing the user to add and delete
|
// Characters allowing the user to add and delete
|
||||||
// characters from the linked list.
|
// characters from the linked list.
|
||||||
// This will be used in the AIWorld class.
|
// This will be used in the AIWorld class.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
@ -41,7 +41,7 @@ public:
|
|||||||
unsigned int _cohesion_wt;
|
unsigned int _cohesion_wt;
|
||||||
unsigned int _alignment_wt;
|
unsigned int _alignment_wt;
|
||||||
|
|
||||||
// This vector will hold all the ai characters which belong to
|
// This vector will hold all the ai characters which belong to
|
||||||
// this flock.
|
// this flock.
|
||||||
typedef std::vector<AICharacter*> AICharList;
|
typedef std::vector<AICharacter*> AICharList;
|
||||||
AICharList _ai_char_list;
|
AICharList _ai_char_list;
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
////////////////////////////////////////////////////////////////////////
|
// Filename: globals.h
|
||||||
//! Filename : globals.h
|
// Created by: Deepak, John, Navin (26Apr10)
|
||||||
//! Created by : Deepak, John, Navin
|
//
|
||||||
//! Date: 8 Sep 09
|
////////////////////////////////////////////////////////////////////
|
||||||
//!
|
//
|
||||||
////////////////////////////////////////////////////////////////////////
|
// PANDA 3D SOFTWARE
|
||||||
//!
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//! PANDA3D SOFTWARE
|
//
|
||||||
//! Copyright(c) Carnegie Mellon University. All rights reserved.
|
// All use of this software is subject to the terms of the revised BSD
|
||||||
//!
|
// license. You should have received a copy of this license along
|
||||||
//! All use of this software is subjest to the terms of the revised BSD
|
// with this source code in a file named "LICENSE."
|
||||||
//! license. You should have received a copy of this license along with this source code in a file named "LICENSE"
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#pragma warning (disable:4996)
|
#pragma warning (disable:4996)
|
||||||
#pragma warning (disable:4005)
|
#pragma warning (disable:4005)
|
||||||
#pragma warning(disable:4275)
|
#pragma warning (disable:4275)
|
||||||
|
|
||||||
#ifndef _GLOBALS_H
|
#ifndef _GLOBALS_H
|
||||||
#define _GLOBALS_H
|
#define _GLOBALS_H
|
||||||
@ -30,4 +29,4 @@
|
|||||||
#include "genericAsyncTask.h"
|
#include "genericAsyncTask.h"
|
||||||
#include "asyncTaskManager.h"
|
#include "asyncTaskManager.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -4,64 +4,64 @@
|
|||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
//!
|
// Class : Node
|
||||||
//! Class : Node
|
// Description : This class is used to assign the nodes on the mesh.
|
||||||
//! Description : This class is used to assign the nodes on the mesh. It holds all the data necessary to
|
// It holds all the data necessary to compute A*
|
||||||
//! compute A* algorithm. It also maintains a lot of vital information such as the neighbor
|
// algorithm. It also maintains a lot of vital
|
||||||
//! nodes of each node and also its position on the mesh.
|
// information such as the neighbor nodes of each
|
||||||
//! Note: The Mesh Generator which is a stand alone tool makes use of this class to generate the nodes on the
|
// node and also its position on the mesh.
|
||||||
//! mesh.
|
// Note: the Mesh Generator which is a stand alone
|
||||||
|
// tool makes use of this class to generate the nodes
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
// on the mesh.
|
||||||
|
///////////////////////////////////////////////////////////////////
|
||||||
class Node {
|
class Node {
|
||||||
public:
|
public:
|
||||||
// This variable specifies whether the node is an obtacle or not.
|
// This variable specifies whether the node is an obtacle or not.
|
||||||
// Used for dynamic obstacle addition to the environment.
|
// Used for dynamic obstacle addition to the environment.
|
||||||
// obstacle = false
|
// obstacle = false
|
||||||
// navigational = true
|
// navigational = true
|
||||||
bool _type;
|
bool _type;
|
||||||
|
|
||||||
// This variable specifies the node status whether open, close or neutral.
|
// This variable specifies the node status whether open, close or neutral.
|
||||||
// open = belongs to _open_list.
|
// open = belongs to _open_list.
|
||||||
// close = belongs to _closed_list.
|
// close = belongs to _closed_list.
|
||||||
// neutral = unexamined node.
|
// neutral = unexamined node.
|
||||||
enum Status {
|
enum Status {
|
||||||
open,
|
open,
|
||||||
close,
|
close,
|
||||||
neutral
|
neutral
|
||||||
};
|
};
|
||||||
Status _status;
|
Status _status;
|
||||||
|
|
||||||
// The score is used to compute the traversal expense to nodes when using A*.
|
// The score is used to compute the traversal expense to nodes when using A*.
|
||||||
// _score = _cost + heuristic
|
// _score = _cost + heuristic
|
||||||
int _score;
|
int _score;
|
||||||
int _cost;
|
int _cost;
|
||||||
int _heuristic;
|
int _heuristic;
|
||||||
|
|
||||||
// Used to trace back the path after it is generated using A*.
|
// Used to trace back the path after it is generated using A*.
|
||||||
Node *_prv_node;
|
Node *_prv_node;
|
||||||
|
|
||||||
// Position of the node in the 2d grid.
|
// Position of the node in the 2d grid.
|
||||||
int _grid_x, _grid_y;
|
int _grid_x, _grid_y;
|
||||||
|
|
||||||
// Position of the node in 3D space.
|
// Position of the node in 3D space.
|
||||||
LVecBase3f _position;
|
LVecBase3f _position;
|
||||||
|
|
||||||
// Dimensions of each face / cell on the mesh.
|
// Dimensions of each face / cell on the mesh.
|
||||||
// Height is given in case of expansion to a 3d mesh. Currently not used.
|
// Height is given in case of expansion to a 3d mesh. Currently not used.
|
||||||
float _width, _length ,_height;
|
float _width, _length ,_height;
|
||||||
Node *_neighbours[8]; // anti-clockwise from top left corner.
|
Node *_neighbours[8]; // anti-clockwise from top left corner.
|
||||||
|
|
||||||
// The _next pointer is used for traversal during mesh generation from the model.
|
// The _next pointer is used for traversal during mesh generation from the model.
|
||||||
// Note: The data in this member is discarded when mesh data is written into navmesh.csv file.
|
// Note: The data in this member is discarded when mesh data is written into navmesh.csv file.
|
||||||
Node *_next;
|
Node *_next;
|
||||||
|
|
||||||
Node(int grid_x, int grid_y, LVecBase3f pos, float w, float l, float h);
|
Node(int grid_x, int grid_y, LVecBase3f pos, float w, float l, float h);
|
||||||
~Node();
|
~Node();
|
||||||
|
|
||||||
bool contains(float x, float y);
|
bool contains(float x, float y);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// PANDA 3D SOFTWARE
|
// PANDA 3D SOFTWARE
|
||||||
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
//
|
//
|
||||||
// All use of this software is subject to the terms of the revised
|
// All use of this software is subject to the terms of the revised
|
||||||
// BSD license. You should have received a copy of this license
|
// BSD license. You should have received a copy of this license
|
||||||
// along with this source code in a file named "LICENSE."
|
// along with this source code in a file named "LICENSE."
|
||||||
//
|
//
|
||||||
|
13
contrib/src/contribbase/Sources.pp
Normal file
13
contrib/src/contribbase/Sources.pp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#define OTHER_LIBS interrogatedb:c dconfig:c dtoolconfig:m \
|
||||||
|
dtoolutil:c dtoolbase:c dtool:m prc:c
|
||||||
|
|
||||||
|
#begin lib_target
|
||||||
|
#define TARGET contribbase
|
||||||
|
|
||||||
|
#define SOURCES \
|
||||||
|
contribbase.cxx contribbase.h contribsymbols.h \
|
||||||
|
|
||||||
|
#define INSTALL_HEADERS \
|
||||||
|
contribbase.h contribbase.h
|
||||||
|
|
||||||
|
#end lib_target
|
15
contrib/src/contribbase/contribbase.cxx
Normal file
15
contrib/src/contribbase/contribbase.cxx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Filename: contribbase.cxx
|
||||||
|
// Created by: rdb (26Apr10)
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// PANDA 3D SOFTWARE
|
||||||
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
||||||
|
//
|
||||||
|
// All use of this software is subject to the terms of the revised BSD
|
||||||
|
// license. You should have received a copy of this license along
|
||||||
|
// with this source code in a file named "LICENSE."
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "contribbase.h"
|
Loading…
x
Reference in New Issue
Block a user