예제 #1
0
    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;
    }
예제 #2
0
        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;
            }
        }