#pragma once #include "../../DNACommon/DNACommon.hpp" #include "IScriptObject.hpp" #include "Parameters.hpp" namespace DataSpec::DNAMP1 { struct WallCrawlerSwarm : IScriptObject { AT_DECL_DNA_YAMLV String<-1> name; Value location; Value orientation; Value volume; Value active; ActorParameters actorParameters; Value flavor; AnimationParameters animationParameters; Value launchAnim; Value attractAnim; UniqueID32 part1; UniqueID32 part2; UniqueID32 part3; UniqueID32 part4; DamageInfo crabDamage; Value crabDamageCooldown; DamageInfo scarabExplodeDamage; Value boidRadius; Value touchRadius; Value playerTouchRadius; Value animPlaybackSpeed; Value numBoids; Value maxCreatedBoids; Value separationRadius; Value cohesionMagnitude; Value alignmentWeight; Value separationMagnitude; Value moveToWaypointWeight; Value attractionMagnitude; Value attractionRadius; Value boidGenRate; Value maxLaunches; Value scarabBoxMargin; Value scarabScatterXYVelocity; Value scarabTimeToExplode; HealthInfo healthInfo; DamageVulnerability damageVulnerabilty; Value launchSfx; Value scatterSfx; void addCMDLRigPairs(PAKRouter& pakRouter, CharacterAssociations& charAssoc) const override { actorParameters.addCMDLRigPairs(pakRouter, charAssoc, animationParameters); } void nameIDs(PAKRouter& pakRouter) const override { if (part1.isValid()) { PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(part1); ent->name = name + "_part1"; } if (part2.isValid()) { PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(part2); ent->name = name + "_part2"; } if (part3.isValid()) { PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(part3); ent->name = name + "_part3"; } if (part4.isValid()) { PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(part4); ent->name = name + "_part4"; } animationParameters.nameANCS(pakRouter, name + "_animp"); actorParameters.nameIDs(pakRouter, name + "_actp"); } void gatherDependencies(std::vector& pathsOut, std::vector& lazyOut) const override { g_curSpec->flattenDependencies(part1, pathsOut); g_curSpec->flattenDependencies(part2, pathsOut); g_curSpec->flattenDependencies(part3, pathsOut); g_curSpec->flattenDependencies(part4, pathsOut); animationParameters.depANCS(pathsOut); actorParameters.depIDs(pathsOut, lazyOut); } void gatherScans(std::vector& scansOut) const override { actorParameters.scanIDs(scansOut); } }; } // namespace DataSpec::DNAMP1