static void FigureViewBinding(INPCBinding binding) { var sobj = new SerializedObject(binding); var viewProp = sobj.FindProperty("_view"); var viewEvProp = sobj.FindProperty("_viewEvent"); if (string.IsNullOrEmpty(viewEvProp.stringValue)) { return; } var vcprop = viewProp.FindPropertyRelative("Component"); var vcomp = vcprop.objectReferenceValue as Component; if (vcomp == null) { return; } var vevValue = GetEvent(vcomp, viewEvProp); if (vevValue != null) { UnityEditor.Events.UnityEventTools.AddVoidPersistentListener(vevValue, binding.ApplyVToVM); } sobj.ApplyModifiedProperties(); }
private static void BuildPaths(INPCBinding binding, StringBuilder sw) { var sobj = new SerializedObject(binding); BuildPath(sobj.FindProperty("_view"), sw); BuildPath(sobj.FindProperty("_viewModel"), sw); }
static void FigureViewBinding(INPCBinding binding) { if (binding.Mode == BindingMode.OneWayToView) { Debug.LogFormat(binding, "Skipping {0}, as it is onewaytoview", binding.name); return; } var sobj = new SerializedObject(binding); var viewProp = sobj.FindProperty("_view"); var viewEvProp = sobj.FindProperty("_viewEvent"); if (string.IsNullOrEmpty(viewEvProp.stringValue)) { return; } var vcprop = viewProp.FindPropertyRelative("Component"); var vcomp = vcprop.objectReferenceValue as Component; if (vcomp == null) { return; } var vevValue = GetEvent(vcomp, viewEvProp); if (vevValue != null) { UnityEditor.Events.UnityEventTools.AddVoidPersistentListener(vevValue, binding.ApplyVToVM); } sobj.ApplyModifiedProperties(); }
static void FigureViewBinding(INPCBinding binding) { if (binding.Mode == BindingMode.OneWayToView) { return; } var sobj = new SerializedObject(binding); var vevValue = GetViewEventValue(sobj); if (vevValue != null) { cachedBindings.Add(binding); var eventCount = vevValue.GetPersistentEventCount(); for (var idx = 0; idx < eventCount; idx++) { var perTarget = vevValue.GetPersistentTarget(idx); // if we find a duplicate event skip over adding it if (perTarget == binding) { return; } } UnityEditor.Events.UnityEventTools.AddVoidPersistentListener(vevValue, binding.ApplyVToVM); } sobj.ApplyModifiedProperties(); }
static void RemoveViewBinding(INPCBinding binding) { var sobj = new SerializedObject(binding); var vevValue = GetViewEventValue(sobj); if (vevValue != null) { var eventCount = vevValue.GetPersistentEventCount(); for (var idx = 0; idx < eventCount; idx++) { var perTarget = vevValue.GetPersistentTarget(idx); // this was a binding we added, let's remove it if (perTarget == binding) { UnityEditor.Events.UnityEventTools.RemovePersistentListener(vevValue, idx); eventCount--; sobj.ApplyModifiedProperties(); } } } }