Skip to main content

Serialization and Type Default Objects

Component framework provides serialization mechanism. And based on serialization mechanism and type default objects (Each object inherited from LObject will generate a type default object when needed), unified object copying and pasting, unified save (only difference value), prefab and prefab synchronization can be achieved currently.

Currently reflection macros are generated manually via flexi/include/publuc/module.h or automatically by using macros_reflection.h+reflang.exe. And the properties generated by these two mechanisms (known as TagProperty) are serialized automatically. Properties that are not annotated by macro reflection can be serialized by overloading the LObject::Serialize function and SERIALIZE_INNER_PROP macro.

game_object.cpp

void LGameObject::Serialize(Stream& ar)
{
SERIALIZE_INNER_PROP(ar, m_pInputComponent);
SERIALIZE_INNER_PROP(ar, m_pRootComponent);
SERIALIZE_INNER_PROP(ar, m_pActorOwner);
SERIALIZE_INNER_PROP(ar, m_pLogicOwner);
SERIALIZE_INNER_PROP(ar, m_pCreateParent);
DISABLE_ATTRIBUTE_DEPRECATED_WARNINGS
SERIALIZE_INNER_PROP(ar, m_ActorUpdate);
ENABLE_ATTRIBUTE_DEPRECATED_WARNINGS
SERIALIZE_INNER_PROP(ar, m_GameObjectUpdate);

SERIALIZE_INNER_PROP(ar, m_bExchangedRoles, CPF_Transient);
SERIALIZE_INNER_PROP(ar, m_bSeamlessTraveled);
SERIALIZE_INNER_PROP(ar, m_bHiddenEd);
SERIALIZE_INNER_PROP(ar, m_bHiddenEdLevel, CPF_Transient);

SERIALIZE_INNER_PROP(ar, m_bEditable);

SERIALIZE_INNER_PROP(ar, m_bEnableCollision);
SERIALIZE_INNER_PROP(ar, m_bHiddenEdTemporary, CPF_Transient);

SERIALIZE_INNER_PROP(ar, m_nLocalControlType);

SERIALIZE_INNER_PROP(ar, m_nRemoteControlType, CPF_Transient);

SERIALIZE_INNER_PROP(ar, m_ActorLabel);
SERIALIZE_INNER_PROP(ar, m_strActorLabel);
SERIALIZE_INNER_PROP(ar, m_FolderPath);
SERIALIZE_INNER_PROP(ar, m_Tag);