void FirstPersonCamera::SetRotation(const XMFLOAT2& rotation, float roll) { _rotation.x = XMScalarModAngle(rotation.x); _rotation.y = clamp(rotation.y, -PiOver2, PiOver2); _roll = XMScalarModAngle(roll); XMVECTOR quat = XMQuaternionRotationRollPitchYaw(_rotation.y, _rotation.x, _roll); XMFLOAT4 newOrientation; XMStoreFloat4(&newOrientation, quat); SetOrientation(newOrientation); }
//----------------------------------------------------------------------------------------------------------------------------------- const float MathUtils::GetAngleBetweenObjectAndWorldSpaceVector(const BaseObject* object, const Vector2& v) { Vector2 diffVector2 = v - object->GetWorldPosition(); float rotation = atan2(diffVector2.x, -diffVector2.y); rotation = XMScalarModAngle(rotation); return rotation; }
//----------------------------------------------------------------------------------------------------------------------------------- const float BaseObject::GetWorldRotation() const { if (!m_parent) { return m_localRotation; } return XMScalarModAngle(m_parent->GetWorldRotation() + m_localRotation); }