Пример #1
0
 private Matrix4 BuildTransform()
 {
     return
         (Matrix4.CreateRotationY(
              m_direction.ToYaw()
              ) *
          Matrix4.CreateTranslation(
              Location.X + 0.5f,
              Location.Y * 0.5f,
              Location.Z + 0.5f
              ));
 }
Пример #2
0
 public static Matrix4 BuildTransform(TileCoordinates coordinates, FlatDirection direction)
 {
     if (direction != FlatDirection.North)
     {
         return
             (Matrix4.CreateTranslation(-0.5f, 0.0f, -0.5f) *
              Matrix4.CreateRotationY(direction.ToYaw()) *
              Matrix4.CreateTranslation((float)coordinates.X + 0.5f, (float)coordinates.Y * 0.5f, (float)coordinates.Z + 0.5f));
     }
     else
     {
         return
             (Matrix4.CreateTranslation((float)coordinates.X, (float)coordinates.Y * 0.5f, (float)coordinates.Z));
     }
 }
Пример #3
0
        private Matrix4 CalculateTransform()
        {
            // Work out where we are
            float fallDistance = GetDistance();

            if (m_direction != FlatDirection.North)
            {
                return
                    (Matrix4.CreateTranslation(-0.5f, 0.0f, -0.5f) *
                     Matrix4.CreateRotationY(m_direction.ToYaw()) *
                     Matrix4.CreateTranslation((float)Location.X + 0.5f, (float)Location.Y * 0.5f - fallDistance, (float)Location.Z + 0.5f));
            }
            else
            {
                return
                    (Matrix4.CreateTranslation((float)Location.X, (float)Location.Y * 0.5f - fallDistance, (float)Location.Z));
            }
        }
Пример #4
0
        private Matrix4 CalculateTransform()
        {
            // Work out where we are
            float height = GetCurrentHeight();

            if (m_direction != FlatDirection.North)
            {
                return
                    (Matrix4.CreateTranslation(-0.5f, 0.0f, -0.5f) *
                     Matrix4.CreateRotationY(m_direction.ToYaw()) *
                     Matrix4.CreateTranslation((float)Location.X + 0.5f, (float)Location.Y * 0.5f + height, (float)Location.Z + 0.5f));
            }
            else
            {
                return
                    (Matrix4.CreateTranslation((float)Location.X, (float)Location.Y * 0.5f + height, (float)Location.Z));
            }
        }