private Matrix4 BuildTransform() { return (Matrix4.CreateRotationY( m_direction.ToYaw() ) * Matrix4.CreateTranslation( Location.X + 0.5f, Location.Y * 0.5f, Location.Z + 0.5f )); }
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)); } }
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)); } }
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)); } }