metaforce/DataSpec/DNAMP1/ScriptObjects/IScriptObject.hpp

47 lines
1.9 KiB
C++
Raw Normal View History

2018-10-06 20:42:33 -07:00
#pragma once
2015-09-10 13:30:35 -07:00
#include "../../DNACommon/DNACommon.hpp"
#include "../DNAMP1.hpp"
2016-10-02 15:41:36 -07:00
#include "../SAVW.hpp"
2017-02-24 00:28:44 -08:00
#include "zeus/CAABox.hpp"
#include "specter/genie.hpp"
2017-12-29 00:08:12 -08:00
#include <cstdio>
2015-09-10 13:30:35 -07:00
#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")
2018-12-07 21:30:43 -08:00
namespace DataSpec::DNAMP1 {
2017-02-24 00:28:44 -08:00
2018-12-07 21:30:43 -08:00
zeus::CTransform ConvertEditorEulerToTransform4f(const zeus::CVector3f& scale, const zeus::CVector3f& orientation,
2017-02-24 00:28:44 -08:00
const zeus::CVector3f& position);
2018-12-07 21:30:43 -08:00
struct IScriptObject : BigDNAVYaml {
2019-08-10 17:49:41 -07:00
AT_DECL_DNA_YAMLV
2018-12-07 21:30:43 -08:00
atUint32 type;
Value<atUint32> id;
struct Connection : BigDNA {
2018-02-21 23:24:51 -08:00
AT_DECL_DNA_YAML
2018-12-07 21:30:43 -08:00
Value<atUint32> state;
Value<atUint32> msg;
Value<atUint32> target;
};
Value<atUint32> connectionCount;
Vector<Connection, AT_DNA_COUNT(connectionCount)> connections;
Value<atUint32> propertyCount;
~IScriptObject() override = default;
2018-12-07 21:30:43 -08:00
virtual void addCMDLRigPairs(PAKRouter<PAKBridge>&, CharacterAssociations<UniqueID32>& charAssoc) const {}
virtual void nameIDs(PAKRouter<PAKBridge>& pakRouter) const {}
virtual void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut,
std::vector<hecl::ProjectPath>& lazyOut) const {}
virtual void gatherScans(std::vector<Scan>& scansOut) const {}
virtual zeus::CAABox getVISIAABB(hecl::blender::Token& btok) const { return {}; }
2015-09-10 13:30:35 -07:00
};
2018-12-07 21:30:43 -08:00
} // namespace DataSpec::DNAMP1