diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Mono/MonoBehaviourSerialization.h |
Diffstat (limited to 'Runtime/Mono/MonoBehaviourSerialization.h')
-rw-r--r-- | Runtime/Mono/MonoBehaviourSerialization.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Runtime/Mono/MonoBehaviourSerialization.h b/Runtime/Mono/MonoBehaviourSerialization.h new file mode 100644 index 0000000..1e7fadb --- /dev/null +++ b/Runtime/Mono/MonoBehaviourSerialization.h @@ -0,0 +1,51 @@ +#pragma once + +#include "Runtime/Scripting/Backend/ScriptingTypes.h" + +static bool CalculateTransferPrivateVariables (MonoClass* klass); +struct BackupState; +YAMLNode* ConvertBackupToYAML (BackupState& binary); + +enum { kClassSerializationDepthLimit = 7 }; + + +struct MonoPPtr : PPtr<Object> +{ + MonoPPtr () { m_Buffer = NULL; m_Class = SCRIPTING_NULL; } + + char* m_Buffer; + ScriptingTypePtr m_Class; +}; + +struct TransferScriptInstance; + +template<class TransferFunction> +void TransferScriptData (TransferScriptInstance& info, TransferFunction& transfer); + +struct TransferScriptInstance +{ + inline static const char* GetTypeString () { return "Generic Mono"; } + inline static bool IsAnimationChannel () { return false; } + inline static bool MightContainPPtr () { return true; } + inline static bool AllowTransferOptimization () { return false; } + + template<class TransferFunction> inline + void Transfer (TransferFunction& transfer) + { + TransferScriptData (*this, transfer); + } + + TransferScriptInstance() + { + depthCounter = -9999; + } + + ScriptingObjectPtr instance; + ScriptingTypePtr klass; + bool transferPrivate; + const CommonScriptingClasses* commonClasses; + int depthCounter; +}; + +ScriptingObjectPtr TransferPPtrToMonoObjectUnChecked(int instanceID, bool threadedLoading); +ScriptingObjectPtr TransferPPtrToMonoObject(int instanceID, ScriptingClassPtr klass, int classID, ScriptingFieldPtr field, ScriptingObjectPtr parentInstance, bool threadedLoading); |