private void OnValidate() { CheckTileType(ref Structure, LayerType.Walls, LayerType.Windows); CheckTileType(ref Object, LayerType.Objects); CheckTileType(ref Floor, LayerType.Floors); CheckTileType(ref Base, LayerType.Base); if (Structure != _structureCurrent || Object != _objectCurrent || Floor != _floorCurrent || Base != _baseCurrent) { if (_structureCurrent == null && _objectCurrent == null && _floorCurrent == null && _baseCurrent == null) { // if everything is null, it could be that it's loading on startup, so there already should be an preview sprite to load EditorApplication.delayCall += () => { PreviewSprite = PreviewSpriteBuilder.LoadSprite(this) ?? PreviewSpriteBuilder.Create(this); ; }; } else { // something changed, so create a new preview sprite EditorApplication.delayCall += () => { PreviewSprite = PreviewSpriteBuilder.Create(this); }; } } _structureCurrent = Structure; _objectCurrent = Object; _floorCurrent = Floor; _baseCurrent = Base; }
private void OnValidate() { if (Object != null) { if (_objectCurrent == null) { // if sprite already exists (e.g. at startup), then load it, otherwise create a new one EditorApplication.delayCall += () => { PreviewSprite = PreviewSpriteBuilder.LoadSprite(Object) ?? PreviewSpriteBuilder.Create(Object); }; } else if (Object != _objectCurrent) { // from one object -> other (overwrite current sprite) EditorApplication.delayCall += () => { PreviewSprite = PreviewSpriteBuilder.Create(Object); }; } } else if (_objectCurrent != null) { // setting to None object (delete current sprite) var obj = _objectCurrent; EditorApplication.delayCall += () => { PreviewSpriteBuilder.DeleteSprite(obj); }; } _objectCurrent = Object; if (_objectCurrent != null) { IsItem = _objectCurrent.GetComponentInChildren <RegisterItem>() != null; } }