public GameStateMenu() { _backColor = new Color4(0f, 0f, 0f, 1f); _font = FontManager.Get("glyphs"); _flatColorShader = ShaderManager.Get("FlatColorShader"); _3dSpriteShader = ShaderManager.Get("SpriteSheet"); _text = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.MIDDLE, $"Press the Enter button to start!"); _selected = 0; var u = 24.0f / 240; _playerMesh = new Object3D(new[] { new Mesh { Vertices = new List <Vertex> { new Vertex(new Vector3(-12, 32f, 0f), new Vector2(0, 0)), new Vertex(new Vector3(-12, 0f, 0f), new Vector2(0, 1)), new Vertex(new Vector3(12, 32f, 0f), new Vector2(u, 0)), new Vertex(new Vector3(12, 32f, 0f), new Vector2(u, 0)), new Vertex(new Vector3(-12, 0f, 0f), new Vector2(0, 1)), new Vertex(new Vector3(12, 0f, 0f), new Vector2(u, 1)), } } }); _playerMesh.LoadInGl(_3dSpriteShader); _playerSpriteSheets = new[] { new SpriteSheet(_playerMesh, "running_link.png", 24, 32, TextureMinFilter.Nearest, TextureMagFilter.Nearest), new SpriteSheet(_playerMesh, "running_holo.png", 24, 32, TextureMinFilter.Nearest, TextureMagFilter.Nearest) }; }
private void LoadShader() { ShaderManager.LoadCustomProgram("mbrot", "mbrot-vs", "mbrot-fs"); prog = ShaderManager.Get("mbrot").Id; Renderer.HandleResolution = GL.GetUniformLocation(prog, "iResolution"); GL.Uniform2(Renderer.HandleResolution, iResolution.X, iResolution.Y); }
public void OnAwake() { var instance = ShaderManager.Get(); ShaderManagerEditor.materials = VariableMaterial.GetAll(); ShaderManagerEditor.keywordsChanged = false; ShaderManagerEditor.SetKeyword(instance.shadingBlend); ShaderManagerEditor.SetKeyword(instance.shadowType); ShaderManagerEditor.SetKeyword(instance.shadowMode); ShaderManagerEditor.SetKeyword(instance.shadowBlend); ShaderManagerEditor.SetKeyword(instance.lightmapType); ShaderManagerEditor.SetKeyword(instance.lightmapMode); ShaderManagerEditor.SetKeyword(instance.lightmapBlend); ShaderManagerEditor.SetKeyword(instance.fadeType); ShaderManagerEditor.SetKeyword(instance.fadeBlend); ShaderManagerEditor.SetKeyword(instance.fadeGrayscale); if (ShaderManagerEditor.keywordsChanged) { Events.AddStepper("On Editor Update", ShaderManagerEditor.RefreshStep, ShaderManagerEditor.materialsChanged, 50); } }
public GameStateGameOver(int finalScore) { _backColor = new Color4(0f, 0f, 0f, 1f); _finalScore = finalScore; _font = FontManager.Get("glyphs"); _flatColorShader = ShaderManager.Get("FlatColorShader"); _gameOverText = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.MIDDLE, "Game Over"); _scoreText = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.MIDDLE, $"Your final score: {_finalScore}"); _name = ""; _nameText = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.LEFT, ""); _scoreboardText = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.MIDDLE, "Scoreboard"); _scoreboardNameText = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.RIGHT, ""); _scoreboardScoreText = new Text(new Vector2(10, 10), _font, _flatColorShader, Text.Alignment.LEFT, ""); _coinMesh = new Object3D("coin.obj", false, false, true); _coinMesh.LoadInGl(_flatColorShader); _coins = new List <CloneableCoin>(); _coinReference = new CloneableCoin(_coinMesh); _coinEmitter = new CoinEmitter(ref _coins, _coinReference, new Vector3(0, _height, 0), 0.2f, _finalScore / 20, (float)(80f * (Math.PI / 180f)), 1000, 1200); DownloadScores(); }
public void SetWater() { this.IsWater = true; this.effect = ShaderManager.Get("ReflectionShader"); }
public GameStatePlay(string playerSkin) { _backColor = new Color4(0.6f, 0.8f, 0.85f, 1f); // SHADERS RETRIEVING *********************************************************** // _flatColorShader = ShaderManager.Get("FlatColorShader"); _baseShader = ShaderManager.Get("Shader"); _3dSpriteShader = ShaderManager.Get("SpriteSheet"); // FONT RETRIEVING ************************************************************** // _font = FontManager.Get("glyphs"); // TEXT INITIALISATION ********************************************************** // _scoreText = new Text(new Vector2(13, 30), _font, _flatColorShader, "Test"); var x = ((24 / 32f) * 1.7f) / 2; var u = 24.0f / 240; _playerMesh = new Object3D(new[] { new Mesh { Vertices = new List <Vertex> { new Vertex(new Vector3(-x, 1.7f, 0f), new Vector2(0, 0)), new Vertex(new Vector3(-x, 0f, 0f), new Vector2(0, 1)), new Vertex(new Vector3(x, 1.7f, 0f), new Vector2(u, 0)), new Vertex(new Vector3(x, 1.7f, 0f), new Vector2(u, 0)), new Vertex(new Vector3(-x, 0f, 0f), new Vector2(0, 1)), new Vertex(new Vector3(x, 0f, 0f), new Vector2(u, 1)), } } }); _playerMesh.LoadInGl(_3dSpriteShader); // TEXTURES INITIALISATION ****************************************************** // _playerSpriteSheet = new SpriteSheet(_playerMesh, playerSkin, 24, 32, TextureMinFilter.Nearest, TextureMagFilter.Nearest); // MESH INITIALISATION ********************************************************** // _groundMesh = new Object3D("wall.obj", false, false, true); _groundMesh.LoadInGl(_baseShader); GroundSimple.MeshToUse = _groundMesh; _groundStairsMesh = new Object3D("stairs.obj", false, false, true); _groundStairsMesh.LoadInGl(_baseShader); GroundStairs.MeshToUse = _groundStairsMesh; _groundClusterMesh = new Object3D("cluster.obj", false, false, true); _groundClusterMesh.LoadInGl(_baseShader); GroundCluster.MeshToUse = _groundClusterMesh; _cubeMesh = new Object3D("cube.obj", false, false, false); _cubeMesh.LoadInGl(_baseShader); AxisAlignedBB.SetMesh(_cubeMesh); _interLeftMesh = new Object3D("inter_l.obj", false, false, true); _interLeftMesh.LoadInGl(_baseShader); Intersection.Left_Mesh = _interLeftMesh; _interRightMesh = new Object3D("inter_r.obj", false, false, true); _interRightMesh.LoadInGl(_baseShader); Intersection.Right_Mesh = _interRightMesh; _interLeftRightMesh = new Object3D("inter_lr.obj", false, false, true); _interLeftRightMesh.LoadInGl(_baseShader); Intersection.LeftRight_Mesh = _interLeftRightMesh; _trashMesh = new Object3D("trash.obj", false, false, true); _trashMesh.LoadInGl(_baseShader); ObstacleTrash.MeshToUse = _trashMesh; _coinMesh = new Object3D("coin.obj", false, false, true); _coinMesh.LoadInGl(_baseShader); Coin.MeshToUse = _coinMesh; // WORLD INITIALISATION ********************************************************* // _world = new World(); // PLAYER INITIALISATION ******************************************************** // _player = new Player { World = _world, Position = new Vector3(0, 0, -3f), Speed = 12.5f }; _camera = new Camera(new Vector3(0, 2f, 2f), _player.PositionForCamera + new Vector3(0, 2.5f, 0), (float)(80f * (Math.PI / 180f))); // TERRAIN GENERATION *********************************************************** // var tilesToGenerate = 10; for (int i = 0; i < tilesToGenerate; i++) { _world.Grounds.Add(new Ground { BoundingBox = new AxisAlignedBB(new Vector3(-3f, -0.5f, -6f), new Vector3(3f, 0f, 0f)), Mesh = _groundMesh, Position = new Vector3(0, 0, -6f * i), Direction = Direction.NORTH }); } var intersection = GroundFactory.NewIntersection(_player, _world, new Vector3(0, 0, -6f * tilesToGenerate), Direction.NORTH, (int)Intersection.IntersectionDirection.LEFT); _world.Grounds.Add(intersection); var rotation = DirectionHelper.GetRotationFromDirection(Direction.NORTH); var w1p1 = new Vector3(new Vector4(-3f, 0f, -7f, 1) * rotation); var w1p2 = new Vector3(new Vector4(3f, 5f, -6f, 1) * rotation); _world.Obstacles.Add(new Obstacle(new AxisAlignedBB(Vector3.ComponentMin(w1p1, w1p2), Vector3.ComponentMax(w1p1, w1p2)), intersection.Position, Direction.NORTH)); var w2p1 = new Vector3(new Vector4(3f, 0f, -6f, 1) * rotation); var w2p2 = new Vector3(new Vector4(4f, 5f, 0f, 1) * rotation); _world.Obstacles.Add(new Obstacle(new AxisAlignedBB(Vector3.ComponentMin(w2p1, w2p2), Vector3.ComponentMax(w2p1, w2p2)), intersection.Position, Direction.NORTH)); GC.Collect(); GC.WaitForPendingFinalizers(); }
void Start() { manager = ShaderManager.Get(); renderer.material = manager.TouchMaterial; }
public static void Select() { Selection.activeObject = ShaderManager.Get(); }
public GameStatePlay(IGameStateManager gameStateManager, IWorldManager worldManager, IChunkManager chunkManager, IChunkPartManager chunkPartManager, IBlockSelector blockSelector, IBlocksProvider blocksProvider, World world) { Debug = new DebugObjects(); _world = world; _gameStateManager = gameStateManager; _worldManager = worldManager; _chunkManager = chunkManager; _chunkPartManager = chunkPartManager; _blockSelector = blockSelector; _blocksProvider = blocksProvider; _selectedBlockId = _blockSelector.GetNextBlock(0); _selectedBlockMetadata = 0; _aabbShader = ShaderManager.GetWithGeometry("AabbShader"); _baseShader = ShaderManager.GetWithGeometry("BaseShader"); _debugShader = ShaderManager.GetWithGeometry("Debug"); _guiShader = ShaderManager.Get("GuiShader"); _skyboxShader = ShaderManager.Get("SkyboxShader"); _player = new Player() { Position = new Vector3(0, 90, 0) }; _camera = new Camera(new Vector3(0), new Vector3(0), (float)(80f * (Math.PI / 180f))); _frustum = new Plane[6]; for (int i = 0; i < _frustum.Length; i++) { _frustum[i] = new Plane(); } _terrainTexture = TextureManager.Get("terrain.png", TextureMinFilter.Nearest, TextureMagFilter.Nearest); _iconsTexture = TextureManager.Get("icons.png", TextureMinFilter.Nearest, TextureMagFilter.Nearest); _skyTexture = TextureManager.Get("skybox.png", TextureMinFilter.Nearest, TextureMagFilter.Nearest); _text = new Text(new Vector2(5, 0), FontManager.Get("glyphs"), _guiShader, ""); _renderDistance = 16; _crosshair = new Sprite(new Vector2(36, 36), new Vector2(0), new Vector2(16 / 256f), _guiShader); _crosshair.UploadInGl(); _selectedBlocks = new AABBObjects(); _skybox = new Mesh() { Vertices = new List <Vertex>() { // FRONT new Vertex(new Vector3(-10, -10, -10), Vector3.One, new Vector2(1 / 4f, 2 / 3f)), new Vertex(new Vector3(10, -10, -10), Vector3.One, new Vector2(2 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, 10, -10), Vector3.One, new Vector2(1 / 4f, 1 / 3f)), new Vertex(new Vector3(-10, 10, -10), Vector3.One, new Vector2(1 / 4f, 1 / 3f)), new Vertex(new Vector3(10, -10, -10), Vector3.One, new Vector2(2 / 4f, 2 / 3f)), new Vertex(new Vector3(10, 10, -10), Vector3.One, new Vector2(2 / 4f, 1 / 3f)), // RIGHT new Vertex(new Vector3(10, -10, -10), Vector3.One, new Vector2(2 / 4f, 2 / 3f)), new Vertex(new Vector3(10, -10, 10), Vector3.One, new Vector2(3 / 4f, 2 / 3f)), new Vertex(new Vector3(10, 10, -10), Vector3.One, new Vector2(2 / 4f, 1 / 3f)), new Vertex(new Vector3(10, 10, -10), Vector3.One, new Vector2(2 / 4f, 1 / 3f)), new Vertex(new Vector3(10, -10, 10), Vector3.One, new Vector2(3 / 4f, 2 / 3f)), new Vertex(new Vector3(10, 10, 10), Vector3.One, new Vector2(3 / 4f, 1 / 3f)), // LEFT new Vertex(new Vector3(-10, -10, 10), Vector3.One, new Vector2(0 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, -10, -10), Vector3.One, new Vector2(1 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, 10, 10), Vector3.One, new Vector2(0 / 4f, 1 / 3f)), new Vertex(new Vector3(-10, 10, 10), Vector3.One, new Vector2(0 / 4f, 1 / 3f)), new Vertex(new Vector3(-10, -10, -10), Vector3.One, new Vector2(1 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, 10, -10), Vector3.One, new Vector2(1 / 4f, 1 / 3f)), // TOP new Vertex(new Vector3(-10, 10, -10), Vector3.One, new Vector2(1 / 4f, 1 / 3f)), new Vertex(new Vector3(10, 10, -10), Vector3.One, new Vector2(2 / 4f, 1 / 3f)), new Vertex(new Vector3(-10, 10, 10), Vector3.One, new Vector2(1 / 4f, 0 / 3f)), new Vertex(new Vector3(-10, 10, 10), Vector3.One, new Vector2(1 / 4f, 0 / 3f)), new Vertex(new Vector3(10, 10, -10), Vector3.One, new Vector2(2 / 4f, 1 / 3f)), new Vertex(new Vector3(10, 10, 10), Vector3.One, new Vector2(2 / 4f, 0 / 3f)), // BOTTOM new Vertex(new Vector3(-10, -10, 10), Vector3.One, new Vector2(1 / 4f, 3 / 3f)), new Vertex(new Vector3(10, -10, 10), Vector3.One, new Vector2(2 / 4f, 3 / 3f)), new Vertex(new Vector3(-10, -10, -10), Vector3.One, new Vector2(1 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, -10, -10), Vector3.One, new Vector2(1 / 4f, 2 / 3f)), new Vertex(new Vector3(10, -10, 10), Vector3.One, new Vector2(2 / 4f, 3 / 3f)), new Vertex(new Vector3(10, -10, -10), Vector3.One, new Vector2(2 / 4f, 2 / 3f)), // BACK new Vertex(new Vector3(10, -10, 10), Vector3.One, new Vector2(3 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, -10, 10), Vector3.One, new Vector2(4 / 4f, 2 / 3f)), new Vertex(new Vector3(10, 10, 10), Vector3.One, new Vector2(3 / 4f, 1 / 3f)), new Vertex(new Vector3(10, 10, 10), Vector3.One, new Vector2(3 / 4f, 1 / 3f)), new Vertex(new Vector3(-10, -10, 10), Vector3.One, new Vector2(4 / 4f, 2 / 3f)), new Vertex(new Vector3(-10, 10, 10), Vector3.One, new Vector2(4 / 4f, 1 / 3f)), } }; _skybox.LoadInGl(); _loadingThread = new Thread(new ThreadStart(() => { Func <int, Tuple <int, int> > spiral = (n) => { var k = (int)Math.Ceiling((Math.Sqrt(n) - 1) / 2); var t = 2 * k + 1; var m = t * t; t = t - 1; var mt = m - t; if (n > mt) { return(new Tuple <int, int>(k - (m - n), -k)); } m = mt; mt = m - t; if (n > mt) { return(new Tuple <int, int>(-k, -k + (m - n))); } m = mt; mt = m - t; if (n > mt) { return(new Tuple <int, int>(-k + (m - n), k)); } return(new Tuple <int, int>(k, k - (m - n - t))); }; while (!_stopLoading) { var chunks = _worldManager.GetLoadedChunks(_world); var playerPosition = _player.Position; var playerPos2D = playerPosition.Xz; ChunkPosition?chunkToLoad = null; var renderDistanceTime2Square = _renderDistance * 2; renderDistanceTime2Square = renderDistanceTime2Square * renderDistanceTime2Square; for (var i = 0; i < renderDistanceTime2Square; i++) { var pos = spiral(i); var chunkPositionInLocalCoordinates = new Vector2(pos.Item1, pos.Item2); if (chunkPositionInLocalCoordinates.LengthFast < _renderDistance) { var chunkPosition = new ChunkPosition((int)((chunkPositionInLocalCoordinates.X + Math.Floor(playerPos2D.X / 16f))), (int)((chunkPositionInLocalCoordinates.Y + Math.Floor(playerPos2D.Y / 16f)))); if (!chunks.Any(chunk => chunk.Item1.Equals(chunkPosition))) { chunkToLoad = chunkPosition; break; } } } if (chunkToLoad != null) { _worldManager.GetChunkAt(_world, chunkToLoad.Value.X, chunkToLoad.Value.Z); } else { Thread.Sleep(1000); } } })) { IsBackground = true }; _loadingThread.Start(); }