public unsafe override void Unity_NamedDeserialize(int depth) { byte[] var_0_cp_0; int var_0_cp_1; if (depth <= 7) { if (this.source == null) { this.source = new PropertyReference(); } PropertyReference arg_3F_0 = this.source; ISerializedNamedStateReader arg_37_0 = SerializedNamedStateReader.Instance; var_0_cp_0 = $FieldNamesStorage.$RuntimeNames; var_0_cp_1 = 0; arg_37_0.BeginMetaGroup(&var_0_cp_0[var_0_cp_1] + 1563); arg_3F_0.Unity_NamedDeserialize(depth + 1); SerializedNamedStateReader.Instance.EndMetaGroup(); } if (depth <= 7) { if (this.target == null) { this.target = new PropertyReference(); } PropertyReference arg_82_0 = this.target; SerializedNamedStateReader.Instance.BeginMetaGroup(&var_0_cp_0[var_0_cp_1] + 265); arg_82_0.Unity_NamedDeserialize(depth + 1); SerializedNamedStateReader.Instance.EndMetaGroup(); } this.direction = (PropertyBinding.Direction)SerializedNamedStateReader.Instance.ReadInt32(&var_0_cp_0[var_0_cp_1] + 1639); this.update = (PropertyBinding.UpdateCondition)SerializedNamedStateReader.Instance.ReadInt32(&var_0_cp_0[var_0_cp_1] + 2265); this.editMode = SerializedNamedStateReader.Instance.ReadBoolean(&var_0_cp_0[var_0_cp_1] + 2272); SerializedNamedStateReader.Instance.Align(); }
public override void Unity_Deserialize(int depth) { if (depth <= 7) { if (this.source == null) { this.source = new PropertyReference(); } this.source.Unity_Deserialize(depth + 1); } if (depth <= 7) { if (this.target == null) { this.target = new PropertyReference(); } this.target.Unity_Deserialize(depth + 1); } this.direction = (PropertyBinding.Direction)SerializedStateReader.Instance.ReadInt32(); this.update = (PropertyBinding.UpdateCondition)SerializedStateReader.Instance.ReadInt32(); this.editMode = SerializedStateReader.Instance.ReadBoolean(); SerializedStateReader.Instance.Align(); }
public override void OnInspectorGUI() { PropertyBinding pb = target as PropertyBinding; NGUIEditorTools.SetLabelWidth(80f); serializedObject.Update(); if (pb.direction == PropertyBinding.Direction.TargetUpdatesSource && pb.target != null) { PropertyReferenceDrawer.filter = pb.target.GetPropertyType(); } GUILayout.Space(3f); PropertyBinding.Direction dir = (target as PropertyBinding).direction; PropertyReferenceDrawer.mustRead = (dir == PropertyBinding.Direction.SourceUpdatesTarget || dir == PropertyBinding.Direction.BiDirectional); PropertyReferenceDrawer.mustWrite = (dir == PropertyBinding.Direction.TargetUpdatesSource || dir == PropertyBinding.Direction.BiDirectional); NGUIEditorTools.DrawProperty(serializedObject, "source"); if (pb.direction == PropertyBinding.Direction.SourceUpdatesTarget && pb.source != null) { PropertyReferenceDrawer.filter = pb.source.GetPropertyType(); } if (pb.source.target != null) { GUILayout.Space(-18f); if (pb.direction == PropertyBinding.Direction.TargetUpdatesSource) { GUILayout.Label(" \u25B2"); // Up } else if (pb.direction == PropertyBinding.Direction.SourceUpdatesTarget) { GUILayout.Label(" \u25BC"); // Down } else { GUILayout.Label(" \u25B2\u25BC"); } } GUILayout.Space(1f); PropertyReferenceDrawer.mustRead = (dir == PropertyBinding.Direction.TargetUpdatesSource || dir == PropertyBinding.Direction.BiDirectional); PropertyReferenceDrawer.mustWrite = (dir == PropertyBinding.Direction.SourceUpdatesTarget || dir == PropertyBinding.Direction.BiDirectional); NGUIEditorTools.DrawProperty(serializedObject, "target"); PropertyReferenceDrawer.mustRead = false; PropertyReferenceDrawer.mustWrite = false; PropertyReferenceDrawer.filter = typeof(void); GUILayout.Space(1f); NGUIEditorTools.DrawPaddedProperty(serializedObject, "direction"); NGUIEditorTools.DrawPaddedProperty(serializedObject, "update"); GUILayout.BeginHorizontal(); NGUIEditorTools.DrawProperty(" ", serializedObject, "editMode", GUILayout.Width(100f)); GUILayout.Label("Update in Edit Mode"); GUILayout.EndHorizontal(); if (!serializedObject.isEditingMultipleObjects) { if (pb.source != null && pb.target != null && pb.source.GetPropertyType() != pb.target.GetPropertyType()) { if (pb.direction == PropertyBinding.Direction.BiDirectional) { EditorGUILayout.HelpBox("Bi-Directional updates require both Source and Target to reference values of the same type.", MessageType.Error); } else if (pb.direction == PropertyBinding.Direction.SourceUpdatesTarget) { if (!PropertyReference.Convert(pb.source.Get(), pb.target.GetPropertyType())) { EditorGUILayout.HelpBox("Unable to convert " + pb.source.GetPropertyType() + " to " + pb.target.GetPropertyType(), MessageType.Error); } } else if (!PropertyReference.Convert(pb.target.Get(), pb.source.GetPropertyType())) { EditorGUILayout.HelpBox("Unable to convert " + pb.target.GetPropertyType() + " to " + pb.source.GetPropertyType(), MessageType.Error); } } } serializedObject.ApplyModifiedProperties(); }