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