예제 #1
0
        private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e)
        {
            // If we changed something about our selected tileset, update the UI to reflect that
            Tileset tileset = this.SelectedTileset.Res;

            if (tileset != null)
            {
                bool affectsTileset     = e.HasObject(tileset);
                bool affectsConfigLayer =
                    e.HasAnyObject(tileset.RenderConfig) ||
                    e.HasAnyObject(tileset.AutoTileConfig) ||
                    e.HasProperty(TilemapsReflectionInfo.Property_Tileset_RenderConfig) ||
                    e.HasProperty(TilemapsReflectionInfo.Property_Tileset_AutoTileConfig);
                if (affectsTileset || affectsConfigLayer)
                {
                    if (this.activeMode != null)
                    {
                        this.activeMode.RaiseOnTilesetModified(e);
                    }

                    this.ApplyRequired = tileset.HasChangedSinceCompile;
                }
            }

            // If the user changed the assigned Tileset of a Tilemap present in the current Scene,
            // we'll need to update the implicit Tileset selection for the palette.
            if (e.Objects.ComponentCount > 0 &&
                e.HasProperty(TilemapsReflectionInfo.Property_Tilemap_Tileset) &&
                e.Objects.Components.OfType <Tilemap>().Any())
            {
                this.ApplyGlobalTilesetSelection(SelectionChangeReason.Unknown);
            }
        }
예제 #2
0
파일: TilesetView.cs 프로젝트: pyneer/case
        private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e)
        {
            if (this.tileset.Res != null)
            {
                bool affectsTileset =
                    e.HasObject(this.tileset.Res);
                bool affectsRenderConfig =
                    e.HasAnyObject(this.tileset.Res.RenderConfig) ||
                    e.HasProperty(TilemapsReflectionInfo.Property_Tileset_RenderConfig);

                if (!affectsTileset && !affectsRenderConfig)
                {
                    return;
                }

                if (affectsRenderConfig)
                {
                    this.OnTilesetChanged();
                }
                else if (affectsTileset)
                {
                    this.UpdateContentLayout();
                }

                this.Invalidate();
            }
        }
        [Test] 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);
        }
예제 #4
0
        protected override void OnTilesetModified(ObjectPropertyChangedEventArgs args)
        {
            Tileset tileset = this.SelectedTileset.Res;

            // If an AutoTile was modified, emit an editor-wide change event for
            // the Tileset as well, so the editor knows it will need to save this Resource.
            if (tileset != null && args.HasAnyObject(tileset.AutoTileConfig))
            {
                DualityEditorApp.NotifyObjPropChanged(
                    this,
                    new ObjectSelection(tileset),
                    TilemapsReflectionInfo.Property_Tileset_AutoTileConfig);
            }

            this.UpdateTreeModel();
        }
        protected override void OnTilesetModified(ObjectPropertyChangedEventArgs args)
        {
            Tileset tileset = this.SelectedTileset.Res;

            // If a visual layer was modified, emit an editor-wide change event for
            // the Tileset as well, so the editor knows it will need to save this Resource.
            if (tileset != null && args.HasAnyObject(tileset.RenderConfig))
            {
                DualityEditorApp.NotifyObjPropChanged(
                    this,
                    new ObjectSelection(tileset),
                    TilemapsReflectionInfo.Property_Tileset_RenderConfig);
            }

            this.UpdateTreeModel();
        }
예제 #6
0
        private void DualityEditorApp_ObjectPropertyChanged(object sender, ObjectPropertyChangedEventArgs e)
        {
            // If we changed something about our selected tileset, update the UI to reflect that
            Tileset tileset = this.SelectedTileset.Res;
            if (tileset != null)
            {
                bool affectsTileset = e.HasObject(tileset);
                bool affectsConfigLayer =
                    e.HasAnyObject(tileset.RenderConfig) ||
                    e.HasAnyObject(tileset.AutoTileConfig) ||
                    e.HasProperty(TilemapsReflectionInfo.Property_Tileset_RenderConfig) ||
                    e.HasProperty(TilemapsReflectionInfo.Property_Tileset_AutoTileConfig);
                if (affectsTileset || affectsConfigLayer)
                {
                    if (this.activeMode != null)
                        this.activeMode.RaiseOnTilesetModified(e);

                    this.ApplyRequired = tileset.HasChangedSinceCompile;
                }
            }

            // If the user changed the assigned Tileset of a Tilemap present in the current Scene,
            // we'll need to update the implicit Tileset selection for the palette.
            if (e.Objects.ComponentCount > 0 &&
                e.HasProperty(TilemapsReflectionInfo.Property_Tilemap_Tileset) &&
                e.Objects.Components.OfType<Tilemap>().Any())
            {
                this.ApplyGlobalTilesetSelection(SelectionChangeReason.Unknown);
            }
        }