historical/toontown-classic.git/panda/include/aiWorld.h
2024-01-16 11:20:27 -06:00

62 lines
1.6 KiB
C++

/**
* 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."
*
* @file aiWorld.h
* @author Deepak, John, Navin
* @date 2009-09-08
*/
#ifndef _AIWORLD_H
#define _AIWORLD_H
#include "aiGlobals.h"
#include "aiCharacter.h"
#include "flock.h"
class AICharacter;
class Flock;
/**
* A class that implements the virtual AI world which keeps track of the AI
* characters active at any given time. It contains a linked list of AI
* characters, obstactle data and unique name for each character. It also
* updates each characters state. The AI characters can also be added to the
* world as flocks.
*/
class EXPCL_PANDAAI AIWorld {
private:
typedef std::vector<PT(AICharacter)> AICharPool;
AICharPool _ai_char_pool;
NodePath _render;
public:
std::vector<NodePath> _obstacles;
typedef std::vector<Flock*> FlockPool;
FlockPool _flock_pool;
void remove_ai_char_from_flock(std::string name);
PUBLISHED:
AIWorld(NodePath render);
~AIWorld();
void add_ai_char(AICharacter *ai_ch);
void remove_ai_char(std::string name);
void add_flock(Flock *flock);
void flock_off(unsigned int flock_id);
void flock_on(unsigned int flock_id);
void remove_flock(unsigned int flock_id);
Flock get_flock(unsigned int flock_id);
void add_obstacle(NodePath obstacle);
void remove_obstacle(NodePath obstacle);
void print_list();
void update();
};
#endif