summaryrefslogtreecommitdiff
path: root/Runtime/BaseClasses/BitField.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/BaseClasses/BitField.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/BaseClasses/BitField.h')
-rw-r--r--Runtime/BaseClasses/BitField.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/Runtime/BaseClasses/BitField.h b/Runtime/BaseClasses/BitField.h
new file mode 100644
index 0000000..1ead092
--- /dev/null
+++ b/Runtime/BaseClasses/BitField.h
@@ -0,0 +1,26 @@
+#ifndef BITFIELD_H
+#define BITFIELD_H
+#include "Runtime/Serialize/SerializeUtility.h"
+
+struct BitField
+{
+ DECLARE_SERIALIZE_OPTIMIZE_TRANSFER (BitField)
+ UInt32 m_Bits;
+};
+
+enum { kPreUnity2UnusedLayerMask = 1 << 5 };
+
+template<class TransferFunc>
+void BitField::Transfer (TransferFunc& transfer)
+{
+ transfer.SetVersion (2);
+ transfer.Transfer (m_Bits, "m_Bits", kHideInEditorMask | kGenerateBitwiseDifferences);
+
+ if (transfer.IsOldVersion(1))
+ {
+ if (m_Bits & kPreUnity2UnusedLayerMask)
+ m_Bits |= 0xFFFF << 16;
+ }
+}
+
+#endif