Exemple #1
0
        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")})");
        }
Exemple #2
0
        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));
        }
Exemple #4
0
    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);
        }
    }
Exemple #5
0
        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);
        }
Exemple #6
0
 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;
     }
 }
Exemple #7
0
 public BlockPos offset(EnumFacing dir)
 {
     return(new BlockPos(new Vector3(_x, _y, _z) + ModelHelper.getFacingVector(dir)));
 }
Exemple #8
0
        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);
        }