summaryrefslogtreecommitdiff
path: root/Runtime/Mono/MonoBehaviourSerialization.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Mono/MonoBehaviourSerialization.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Mono/MonoBehaviourSerialization.h')
-rw-r--r--Runtime/Mono/MonoBehaviourSerialization.h51
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);