Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BaseGrid"/> class.
        /// </summary>
        public BaseGrid()
        {
            _shader             = (BaseGridShader)RenderCache.Instance.GetShader(EverlookShader.BaseGrid);
            this.ActorTransform = new Transform();

            this.IsInitialized = false;
        }
Beispiel #2
0
        /// <summary>
        /// Creates a cached shader for the specifed shader, using the specified shader enumeration
        /// as a lookup key.
        /// </summary>
        private ShaderProgram CreateCachedShader(EverlookShader shader)
        {
            if (!Enum.IsDefined(typeof(EverlookShader), shader))
            {
                throw new ArgumentException("An unknown shader was passed to the rendering cache.", nameof(shader));
            }

            Log.Info($"Creating cached shader for \"{shader}\"");

            ShaderProgram shaderProgram;

            switch (shader)
            {
            case EverlookShader.Plain2D:
            {
                shaderProgram = new Plain2DShader();
                break;
            }

            case EverlookShader.WorldModel:
            {
                shaderProgram = new WorldModelShader();
                break;
            }

            case EverlookShader.BoundingBox:
            {
                shaderProgram = new BoundingBoxShader();
                break;
            }

            case EverlookShader.GameModel:
            {
                shaderProgram = new GameModelShader();
                break;
            }

            case EverlookShader.BaseGrid:
            {
                shaderProgram = new BaseGridShader();
                break;
            }

            default:
            {
                throw new ArgumentOutOfRangeException
                      (
                          nameof(shader),
                          "No implemented shader class for this shader."
                      );
            }
            }

            _shaderCache.Add(shader, shaderProgram);
            return(shaderProgram);
        }