private void markNeighbourChunksForUpdate(Chunk chunk, BlockPos pos) { var sw = Stopwatch.StartNew(); var sides = (EnumFacing[])Enum.GetValues(typeof(EnumFacing)); int chunksUpdated = 1; for (var index = 0; index < sides.Length; index++) { EnumFacing side = sides[index]; var p = pos.offset(side); var ch = getChunkFromPos(p); if (ch != chunk && ch != null) { updateModelForChunk(ch.chunkPos); chunksUpdated++; } } sw.Stop(); Console.WriteLine( $"DEBUG: built terrain model [{sw.Elapsed.TotalMilliseconds:F}ms] ({chunksUpdated} {(chunksUpdated > 1 ? "chunks" : "chunk")})"); }
public static Vector3 getFacingVector(EnumFacing dir) { switch (dir) { case EnumFacing.NORTH: return(-Vector3.UnitZ); case EnumFacing.SOUTH: return(Vector3.UnitZ); case EnumFacing.EAST: return(Vector3.UnitX); case EnumFacing.WEST: return(-Vector3.UnitX); case EnumFacing.UP: return(Vector3.UnitY); case EnumFacing.DOWN: return(-Vector3.UnitY); default: return(Vector3.Zero); } }
public void setUVForSide(EnumFacing side, Vector2 from, Vector2 to) { if (UVs.ContainsKey(side)) { UVs.Remove(side); } UVs.Add(side, new TextureUVNode(from, to)); }
void Update() { // Rotation if (Input.GetKeyDown(KeyHandler.GetKey("Up"))) { direction = EnumFacing.UP; } if (Input.GetKey(KeyHandler.GetKey("Left"))) { direction = EnumFacing.LEFT; } else if (Input.GetKey(KeyHandler.GetKey("Right"))) { direction = EnumFacing.RIGHT; } if (direction.Equals(EnumFacing.LEFT)) { transform.rotation = Quaternion.Euler(0, 180, 0); } else if (direction.Equals(EnumFacing.RIGHT)) { transform.rotation = Quaternion.Euler(0, 0, 0); } dTime += Time.deltaTime; // Jump if (Input.GetKeyDown(KeyHandler.GetKey("Jump"))) { jump = true; } // Shoot if (Input.GetKeyDown(KeyHandler.GetKey("Primary"))) { Vector3 dir = new Vector3(1, 0, 0); switch (direction) { case EnumFacing.LEFT: dir = new Vector3(-1, 0, 0); break; case EnumFacing.RIGHT: dir = new Vector3(1, 0, 0); break; case EnumFacing.UP: dir = new Vector3(0, 1, 0); break; default: break; } inHand.Shoot(dir, 100); } }
public static List <RawQuad> createCubeModelFace(EnumFacing face) { var quads = new List <RawQuad>(); if (CUBE.TryGetValue(face, out var vertices)) { quads.Add(new RawQuad(vertices)); } return(quads); }
public Facing(EnumFacing facing) { _facing = facing; if (facing == EnumFacing.Up || facing == EnumFacing.Down) { _axis = Axis.Y; } else if (facing == EnumFacing.East || facing == EnumFacing.West) { _axis = Axis.X; } else if (facing == EnumFacing.North || facing == EnumFacing.South) { _axis = Axis.Z; } }
public BlockPos offset(EnumFacing dir) { return(new BlockPos(new Vector3(_x, _y, _z) + ModelHelper.getFacingVector(dir))); }
public RawQuad getQuadForSide(EnumFacing side) { quads.TryGetValue(side, out var quad); return(quad); }
public TextureUVNode getUVForSide(EnumFacing side) { UVs.TryGetValue(side, out var uv); return(uv); }