15class FlockingComponent {
19 ::ll::TypedStorage<8, 24, ::std::vector<::ActorUniqueID>> mNeighborhood;
20 ::ll::TypedStorage<4, 12, ::Vec3> mCenterOfMass;
21 ::ll::TypedStorage<4, 12, ::Vec3> mGroupVelocity;
22 ::ll::TypedStorage<4, 12, ::Vec3> mGoalHeading;
23 ::ll::TypedStorage<4, 12, ::Vec3> mCurrentHeading;
24 ::ll::TypedStorage<1, 1, bool> mInWater;
25 ::ll::TypedStorage<1, 1, bool> mMatchVariant;
26 ::ll::TypedStorage<1, 1, bool> mUseCenterOfMass;
27 ::ll::TypedStorage<1, 1, bool> mIsLeader;
28 ::ll::TypedStorage<1, 1, bool> mInFlock;
29 ::ll::TypedStorage<1, 1, bool> mIsEnabled;
30 ::ll::TypedStorage<1, 1, bool> mHasTargetGoal;
31 ::ll::TypedStorage<1, 1, bool> mUsingDirection;
32 ::ll::TypedStorage<4, 4, int> mFlockLimit;
33 ::ll::TypedStorage<4, 4, float> mLonerChance;
34 ::ll::TypedStorage<4, 4, float> mGoalWeight;
35 ::ll::TypedStorage<4, 4, float> mInfluenceRadius;
36 ::ll::TypedStorage<4, 4, float> mBreachInfluence;
37 ::ll::TypedStorage<4, 4, float> mSeparationWeight;
38 ::ll::TypedStorage<4, 4, float> mSeparationThreshold;
39 ::ll::TypedStorage<4, 4, float> mCohesionWeight;
40 ::ll::TypedStorage<4, 4, float> mCohesionThreshold;
41 ::ll::TypedStorage<4, 4, float> mInnerCohesionThreshold;
42 ::ll::TypedStorage<4, 4, float> mMinHeight;
43 ::ll::TypedStorage<4, 4, float> mMaxHeight;
44 ::ll::TypedStorage<4, 4, float> mBlockDist;
45 ::ll::TypedStorage<4, 4, float> mBlockWeight;
46 ::ll::TypedStorage<1, 1, bool> mOverspeedRequired;
52 MCAPI FlockingComponent();
54 MCAPI
void breakFlock(
::Actor const& owner);
56 MCAPI
void calculateFlockVector(
::Actor const& owner);
58 MCAPI
void calculateGoalHeading(
::Mob& owner);
60 MCAPI
bool canJoinFlock(
::Actor& owner)
const;
62 MCAPI
void joinFlock(
::Actor& owner);
64 MCAPI
void manageNeighborhood(
::Actor& owner);
66 MCAPI
void mergeNeighborhoods(
::Actor& owner);
68 MCAPI
void updateNeighborhoodData(
::Actor const& owner);
70 MCAPI
bool validateVariantEntityTypes(
::Actor const& e0,
::Actor const& e1)
const;