Exemple #1
0
    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();
    }
Exemple #2
0
    private static void BuildPaths(INPCBinding binding, StringBuilder sw)
    {
        var sobj = new SerializedObject(binding);

        BuildPath(sobj.FindProperty("_view"), sw);
        BuildPath(sobj.FindProperty("_viewModel"), sw);
    }
Exemple #3
0
    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();
    }
Exemple #4
0
    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();
    }
Exemple #5
0
    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();
                }
            }
        }
    }