#pragma once #include "../../DNACommon/DNACommon.hpp" #include "IScriptObject.hpp" #include "Parameters.hpp" namespace DataSpec::DNAMP1 { struct Effect : IScriptObject { AT_DECL_DNA_YAML AT_DECL_DNAV String<-1> name; Value location; Value orientation; Value scale; UniqueID32 part; UniqueID32 elsc; Value hotInThermal; Value noTimerUnlessAreaOccluded; Value rebuildSystemsOnActivate; Value active; Value useRateInverseCamDist; Value rateInverseCamDist; Value rateInverseCamDistRate; Value duration; Value durationResetWhileVisible; Value useRateCamDistRange; Value rateCamDistRangeMin; Value rateCamDistRangeMax; Value rateCamDistRangeFarRate; Value combatVisorVisible; Value thermalVisorVisible; Value xrayVisorVisible; Value dieWhenSystemsDone; LightParameters lightParameters; void nameIDs(PAKRouter& pakRouter) const { if (part) { PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(part); ent->name = name + "_part"; } if (elsc) { PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(elsc); ent->name = name + "_elsc"; } } void gatherDependencies(std::vector& pathsOut, std::vector& lazyOut) const { g_curSpec->flattenDependencies(part, pathsOut); g_curSpec->flattenDependencies(elsc, pathsOut); } }; } // namespace DataSpec::DNAMP1