public override int GetNorthTextureIndex(ILocalChunkCache manager, int x, int y, int z)
        {
            OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
            ushort           topblock    = manager.GetBlock(x, y, z + 1);

            switch (orientation)
            {
            case OrientationFlags.SideSouth:
            case OrientationFlags.SideNorth:
                if (topblock != 0)
                {
                    return(0);
                }
                else
                {
                    return(2);
                }

            case OrientationFlags.SideWest:
            case OrientationFlags.SideEast:
            case OrientationFlags.SideBottom:
            case OrientationFlags.SideTop:
            default:
                return(1);
            }
        }
Пример #2
0
 private static OrientationFlags FindCorner(Vector2 point, OrientationFlags upperLeftCorner, OrientationFlags upperRightCorner, OrientationFlags lowerLeftCorner, OrientationFlags lowerRightCorner)
 {
     if (point.X < 0.5f)
     {
         if (point.Y < 0.5f)
         {
             return(upperLeftCorner);
         }
         else
         {
             return(lowerLeftCorner);
         }
     }
     else
     {
         if (point.Y < 0.5f)
         {
             return(upperRightCorner);
         }
         else
         {
             return(lowerRightCorner);
         }
     }
 }
Пример #3
0
 private static OrientationFlags FindEdge(Vector2 point, OrientationFlags upper, OrientationFlags lower, OrientationFlags left, OrientationFlags right)
 {
     if (point.X > point.Y)
     {
         if (1f - point.X > point.Y)
         {
             return(upper);
         }
         else
         {
             return(right);
         }
     }
     else
     {
         if (1f - point.X > point.Y)
         {
             return(left);
         }
         else
         {
             return(lower);
         }
     }
 }
Пример #4
0
        public override int GetNorthTextureIndex(IPlanetResourceManager manager, int x, int y, int z)
        {
            OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);

            switch (orientation)
            {
            case OrientationFlags.SideSouth:
            case OrientationFlags.SideNorth:
                return(0);

            case OrientationFlags.SideWest:
            case OrientationFlags.SideEast:
            case OrientationFlags.SideBottom:
            case OrientationFlags.SideTop:
            default:
                return(1);
            }
        }
        public override int GetSouthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
        {
            OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);

            switch (orientation)
            {
            case OrientationFlags.SideWest:
            case OrientationFlags.SideEast:
                return(1);

            case OrientationFlags.SideSouth:
            case OrientationFlags.SideNorth:
            case OrientationFlags.SideBottom:
            case OrientationFlags.SideTop:
            default:
                return(0);
            }
        }
Пример #6
0
        public override int GetTextureRotation(Wall wall, ILocalChunkCache manager, int x, int y, int z)
        {
            OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);

            switch (wall)
            {
            case Wall.Top:
            case Wall.Bottom:
            case Wall.Back:
            case Wall.Front:
                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                    return(1);

                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(0);
                }

            case Wall.Left:
            case Wall.Right:
                switch (orientation)
                {
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    return(1);

                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(0);
                }

            default:
                return(base.GetTextureRotation(wall, manager, x, y, z));    //should never ever happen
            }
        }
Пример #7
0
 private static OrientationFlags FindEdge(Vector2 point, OrientationFlags upper, OrientationFlags lower, OrientationFlags left, OrientationFlags right)
 {
     if (point.X > point.Y)
     {
         if (1f - point.X > point.Y) return upper;
         else return right;
     }
     else
     {
         if (1f - point.X > point.Y) return left;
         else return lower;
     }
 }
Пример #8
0
 private static OrientationFlags FindCorner(Vector2 point, OrientationFlags upperLeftCorner, OrientationFlags upperRightCorner, OrientationFlags lowerLeftCorner, OrientationFlags lowerRightCorner)
 {
     if (point.X < 0.5f)
     {
         if (point.Y < 0.5f) return upperLeftCorner;
         else return lowerLeftCorner;
     }
     else
     {
         if (point.Y < 0.5f) return upperRightCorner;
         else return lowerRightCorner;
     }
 }
Пример #9
0
 /// <summary>
 /// Setzt einen neuen Block.
 /// </summary>
 /// <param name="blockIndex"></param>
 /// <param name="orientation"></param>
 public void Apply(Index3 blockIndex, OrientationFlags orientation)
 {
     lastApply       = blockIndex;
     lastOrientation = orientation;
 }
Пример #10
0
 /// <summary>
 /// Utility function used to determine if the passed in MLWorldPlane object's
 /// flags contain the passed in OrientationFlags.
 /// </summary>
 /// <param name="plane">The MLWorldPlane object to be checked</param>
 /// <param name="flag">The OrientationFlags to be checked</param>
 public static bool DoesPlaneHaveFlag(MLWorldPlane plane, OrientationFlags flag)
 {
     return (plane.Flags & (uint)flag) == (uint)flag;
 }
Пример #11
0
 public void Apply(Index3 blockIndex, OrientationFlags orientation)
 {
     lastApply = blockIndex;
     lastOrientation = orientation;
 }
Пример #12
0
 public IBlock GetInstance(OrientationFlags orientation)
 {
     return new GroundBlock();
 }
Пример #13
0
        public override int GetTextureIndex(Wall wall, ILocalChunkCache manager,
                                            int x, int y, int z)
        {
            OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);

            switch (wall)
            {
            case Wall.Top:
            {
                ushort topblock = manager.GetBlock(x, y, z + 1);

                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    return(1);

                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    if (topblock != 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(2);
                    }
                }
            }

            case Wall.Bottom:
            {
                ushort topblock = manager.GetBlock(x, y, z + 1);

                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    return(1);

                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    if (topblock != 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(2);
                    }
                }
            }

            case Wall.Front:
            {
                ushort topblock = manager.GetBlock(x, y, z + 1);

                switch (orientation)
                {
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    if (topblock != 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(2);
                    }

                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(1);
                }
            }

            case Wall.Back:
            {
                ushort topblock = manager.GetBlock(x, y, z + 1);

                switch (orientation)
                {
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    if (topblock != 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(2);
                    }

                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(1);
                }
            }

            case Wall.Left:
            {
                ushort topblock = manager.GetBlock(x, y, z + 1);

                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                    if (topblock != 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(2);
                    }

                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(1);
                }
            }

            case Wall.Right:
            {
                ushort topblock = manager.GetBlock(x, y, z + 1);

                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                    if (topblock != 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(2);
                    }

                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(1);
                }
            }
            }

            // Should never happen
            // Assert here
            return(-1);
        }
Пример #14
0
 public IBlock GetInstance(OrientationFlags orientation)
 {
     return new WoodBlock()
     {
         Orientation = orientation
     };
 }
Пример #15
0
 public IBlock GetInstance(OrientationFlags orientation)
 {
     return new StoneBlock();
 }
Пример #16
0
        public override int GetTextureIndex(Wall wall, ILocalChunkCache manager, int x, int y, int z)
        {
            OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);

            switch (wall)
            {
            case Wall.Top:
            case Wall.Bottom:
            {
                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    return(1);

                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(0);
                }
            }

            case Wall.Back:     // North
            case Wall.Front:    // South
            {
                switch (orientation)
                {
                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                    return(0);

                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(1);
                }
            }

            case Wall.Left:
            case Wall.Right:
            {
                switch (orientation)
                {
                case OrientationFlags.SideWest:
                case OrientationFlags.SideEast:
                    return(0);

                case OrientationFlags.SideSouth:
                case OrientationFlags.SideNorth:
                case OrientationFlags.SideBottom:
                case OrientationFlags.SideTop:
                default:
                    return(1);
                }
            }
            }

            // Assert this
            return(-1);
        }