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

58 lines
1.5 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 flock.h
* @author Deepak, John, Navin
* @date 2009-10-24
*/
#ifndef _FLOCK_H
#define _FLOCK_H
#include "aiGlobals.h"
#include "aiCharacter.h"
class AICharacter;
/**
* This class is used to define the flock attributes and the AI characters
* which are part of the flock.
*/
class EXPCL_PANDAAI Flock {
private:
unsigned int _flock_id;
public:
// Variables which will hold the parameters of the ai character's visibilty
// cone.
double _flock_vcone_angle;
double _flock_vcone_radius;
// Variables to specify weights of separation, cohesion and alignment
// behaviors and thus create variable flock behavior.
unsigned int _separation_wt;
unsigned int _cohesion_wt;
unsigned int _alignment_wt;
// This vector will hold all the ai characters which belong to this flock.
typedef std::vector<PT(AICharacter)> AICharList;
AICharList _ai_char_list;
PUBLISHED:
explicit Flock(unsigned int flock_id, double vcone_angle, double vcone_radius, unsigned int separation_wt = 2,
unsigned int cohesion_wt = 4, unsigned int alignment_wt = 1);
~Flock();
// Function to add the ai characters to _ai_char_list.
void add_ai_char(AICharacter *ai_char);
// Function to access the private member flock_id.
unsigned int get_id();
};
#endif