00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GBEGDYNAMICGENERATORCATEGORYH
00026 #define GBEGDYNAMICGENERATORCATEGORYH
00027
00028 #include "PseudoRNG.h"
00029
00030 #include <GElement.h>
00031 #include <GEnergy.h>
00032 #include <GVector3.h>
00033 #include <GForm.h>
00034 #include <GAgent.h>
00035 #include <GObject.h>
00036
00037 #include <qptrlist.h>
00038
00039 namespace GBE
00040 {
00041
00061 class GDynamicGeneratorCategory
00062 {
00063 protected:
00064
00074 double Range;
00075
00079 double RadiusMin;
00080
00084 double RadiusMax;
00085
00092 bool FormOverlapAllowed;
00093
00094 public:
00095
00099 GDynamicGeneratorCategory(double range,
00100 double radius_min, double radius_max,
00101 bool form_overlapping_allowed);
00102
00106 virtual ~GDynamicGeneratorCategory();
00107
00111 double getRange() const;
00112
00116 double getRadiusMax() const;
00117
00121 double getRadiusMin() const;
00122
00126 bool formOverlapAllowed() const;
00127
00133 virtual GCS::GForm* createForm(const GCS::GEnergy& energy, const GCS::GVector3& position, Util::PseudoRNG& rng) const = 0;
00134
00140 virtual QPtrList<GCS::GAgent> createAgents(const GCS::GEnergy& energy, Util::PseudoRNG& rng) const = 0;
00141
00142 };
00143
00144 }
00145
00146 #endif