public void RegularChange()
        {
            TestObject[] obj = new TestObject[]
            {
                new TestObject { Foo = 42, Bar = "Hello" },
                new TestObject { Foo = 10, Bar = "World" },
                new TestObject { Foo = 0, Bar = "Not" }
            };
            ObjectPropertyChangedEventArgs args = new ObjectPropertyChangedEventArgs(
                new ObjectSelection(obj.Take(2)),
                new PropertyInfo[] { TestObject.FooProperty });

            Assert.IsTrue(args.HasObject(obj[0]));
            Assert.IsTrue(args.HasObject(obj[1]));
            Assert.IsFalse(args.HasObject(obj[2]));

            Assert.IsTrue(args.HasAnyObject(obj));
            Assert.IsTrue(args.HasAnyObject(obj.Skip(1)));
            Assert.IsFalse(args.HasAnyObject(obj.Skip(2)));

            Assert.IsTrue(args.HasProperty(TestObject.FooProperty));
            Assert.IsFalse(args.HasProperty(TestObject.BarProperty));
            Assert.IsFalse(args.HasProperty(UnrelatedObject.NotProperty));

            Assert.IsTrue(args.HasAnyProperty(TestObject.FooProperty));
            Assert.IsTrue(args.HasAnyProperty(TestObject.FooProperty, TestObject.BarProperty));
            Assert.IsFalse(args.HasAnyProperty(TestObject.BarProperty));
            Assert.IsFalse(args.HasAnyProperty(UnrelatedObject.NotProperty));

            Assert.IsFalse(args.CompleteChange);
        }
Esempio n. 2
0
        private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e)
        {
            if (e is PrefabAppliedEventArgs ||
                (e.HasProperty(ReflectionInfo.Property_GameObject_PrefabLink) && e.HasAnyObject(Scene.Current.AllObjects)) ||
                (e.CompleteChange && e.HasObject(Scene.Current)))
                this.UpdatePrefabLinkStatus(false);

            if (e.HasProperty(ReflectionInfo.Property_GameObject_Name))
            {
                foreach (GameObjectNode node in e.Objects.GameObjects.Select(g => this.FindNode(g)))
                    if (node != null) node.Text = node.Obj.Name;
            }
        }
Esempio n. 3
0
        private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e)
        {
            // If something Prefab-related changed, update the display state of all objects
            // to indicate new, removed or broken prefab links.
            if (e is PrefabAppliedEventArgs ||
                (e.HasProperty(ReflectionInfo.Property_GameObject_PrefabLink) && e.HasAnyObject(Scene.Current.AllObjects)))
            {
                this.UpdatePrefabLinkStatus(false);
            }

            // Update the displayed names of objects
            if (e.HasProperty(ReflectionInfo.Property_GameObject_Name))
            {
                foreach (GameObjectNode node in e.Objects.GameObjects.Select(g => this.FindNode(g)))
                    if (node != null) node.Text = node.Obj.Name;
            }
        }