00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_TargetMovementEntryBoidsh_INCLUDE__)
00022 #define __INCLUDE_TargetMovementEntryBoidsh_INCLUDE__
00023
00024 #include <common/FixedVector.h>
00025 #include <movement/TargetMovementEntry.h>
00026 #include <landscapemap/TargetGroupsSetEntry.h>
00027 #include <map>
00028 #include <vector>
00029
00030 class Obstacle;
00031 class Boid2;
00032 class TargetMovementEntryBoids : public TargetMovementEntry
00033 {
00034 public:
00035 TargetMovementEntryBoids();
00036 virtual ~TargetMovementEntryBoids();
00037
00038 fixed getCruiseDistance() { return cruiseDistance_; }
00039 fixed getCruiseVelocity() { return cruiseVelocity_; }
00040 fixed getMaxVelocity() { return maxVelocity_; }
00041 fixed getMaxAcceleration() { return maxAcceleration_; }
00042 FixedVector &getMinBounds() { return minBounds_; }
00043 FixedVector &getMaxBounds() { return maxBounds_; }
00044
00045
00046 virtual void generate(ScorchedContext &context,
00047 RandomGenerator &random,
00048 LandscapeMovementType *movementType);
00049 virtual void simulate(ScorchedContext &context, fixed frameTime);
00050 virtual void draw();
00051 virtual bool writeMessage(NetBuffer &buffer);
00052 virtual bool readMessage(NetBufferReader &reader);
00053
00054 protected:
00055 TargetGroupsSetEntry *groupEntry_;
00056
00057 unsigned int movementNumber_;
00058 FixedVector minBounds_, maxBounds_;
00059 fixed cruiseDistance_;
00060 fixed maxVelocity_, cruiseVelocity_;
00061 fixed maxAcceleration_;
00062
00063 void makeBoids(ScorchedContext &context, RandomGenerator &random,
00064 FixedVector &maxBounds, FixedVector &minBounds);
00065 Boid2 *makeBoid(ScorchedContext &context, TargetGroup *groupEntry);
00066 void processSet(fixed frameTime, std::vector<Boid2*> &boidSet);
00067 };
00068
00069 #endif // __INCLUDE_TargetMovementEntryBoidsh_INCLUDE__