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); } }
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); }
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(); }
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); } }