20 const void*
data =
nullptr;
31 const std::string&
name,
49 const std::string&
name,
53 const std::vector<ComponentField>& childrenFields
75 for (
const auto& child : original.
children)
77 const void* childDataPtr =
reinterpret_cast<const char*
>(dataPtr) + child.offset;
78 children.emplace_back(child, childDataPtr);
84 const void* srcData =
reinterpret_cast<const char*
>(src) +
offset;
85 void* destData =
reinterpret_cast<char*
>(clone) +
offset;
89 std::memcpy(destData, srcData,
size);
95 child.CopyValue(src, clone);
114 ComponentLayout(
const std::string& name, std::initializer_list<ComponentField> fields) : m_name(name), m_fields(fields) { }
115 ComponentLayout(
const std::string& name, std::vector<ComponentField>& fields) : m_name(name), m_fields(fields) { }
118 std::vector<ComponentField>::iterator
begin() {
return m_fields.begin(); }
119 std::vector<ComponentField>::iterator
end() {
return m_fields.end(); }
120 std::vector<ComponentField>::const_iterator
begin()
const {
return m_fields.begin(); }
121 std::vector<ComponentField>::const_iterator
end()
const {
return m_fields.end(); }
123 const std::vector<ComponentField>&
GetFields()
const {
return m_fields; }
126 const std::string&
GetName()
const {
return m_name; }
128 std::vector<ComponentField> m_fields;
size_t GetFieldCount() const
std::vector< ComponentField >::const_iterator begin() const
std::vector< ComponentField >::iterator begin()
const std::vector< ComponentField > & GetFields() const
std::vector< ComponentField >::const_iterator end() const
ComponentLayout(const std::string &name, std::vector< ComponentField > &fields)
const std::string & GetName() const
ComponentLayout(const std::string &name, std::initializer_list< ComponentField > fields)
ComponentLayout()=default
std::vector< ComponentField >::iterator end()
EngineDataType ComponentDataType
uint32_t GetDataTypeSize(EngineDataType type)
ComponentField(const std::string &name, ComponentDataType type, size_t offset, const std::string &displayName, const std::vector< ComponentField > &childrenFields)
ComponentField(const ComponentField &original, const void *dataPtr)
ComponentField(const std::string &name, ComponentDataType type, const void *dataPtr)
std::vector< ComponentField > children
ComponentField(const std::string &name, ComponentDataType type, size_t offset, const std::string &displayName="")
const std::string & GetDisplayName() const
void CopyValue(Component *src, Component *clone) const