#pragma once #include "../../DNACommon/DNACommon.hpp" #include "../DNAMP1.hpp" #include "../SAVW.hpp" #include "zeus/CAABox.hpp" #include "specter/genie.hpp" #include #define SO_NAME_SPECPROP() SPECTER_PROPERTY("Name", "Instance name; Used to debug scripting events") #define SO_LOCATION_SPECPROP() SPECTER_PROPERTY("Location", "World relative location of the Actor instance") #define SO_ORIENTATION_SPECPROP() SPECTER_PROPERTY("Orientation", "Object local axis-angle") #define SO_SCALE_SPECPROP() SPECTER_PROPERTY("Scale", "Object local scale") #define SO_COLLISION_EXTENT_SPECPROP() SPECTER_PROPERTY("Collision Extent", "") #define SO_COLLISION_OFFSET_SPECPROP() SPECTER_PROPERTY("Collision Offset", "") #define SO_ACTIVE_SPECPROP() SPECTER_PROPERTY("Active", "If enabled, object instance is drawn and updated") namespace DataSpec::DNAMP1 { zeus::CTransform ConvertEditorEulerToTransform4f(const zeus::CVector3f& scale, const zeus::CVector3f& orientation, const zeus::CVector3f& position); struct IScriptObject : BigDNAVYaml { AT_DECL_DNA_YAML atUint32 type; Value id; struct Connection : BigDNA { AT_DECL_DNA_YAML Value state; Value msg; Value target; }; Value connectionCount; Vector connections; Value propertyCount; virtual ~IScriptObject() = default; virtual void addCMDLRigPairs(PAKRouter&, CharacterAssociations& charAssoc) const {} virtual void nameIDs(PAKRouter& pakRouter) const {} virtual void gatherDependencies(std::vector& pathsOut, std::vector& lazyOut) const {} virtual void gatherScans(std::vector& scansOut) const {} virtual zeus::CAABox getVISIAABB(hecl::blender::Token& btok) const { return {}; } }; }