Visual Debugger implementation

This commit is contained in:
Jett
2022-09-04 11:47:53 +01:00
parent 14d4bf3cc5
commit f3ace4e7ed
39 changed files with 334 additions and 92 deletions

View File

@@ -14,6 +14,9 @@ std::vector<MetricVariable> Metrics::m_Variables = {
MetricVariable::CPUTime,
MetricVariable::Sleep,
MetricVariable::Frame,
#ifdef BUILD_VISUAL_DEBUGGER
MetricVariable::VisualDebugger,
#endif
};
void Metrics::AddMeasurement(MetricVariable variable, int64_t value) {
@@ -132,7 +135,10 @@ std::string Metrics::MetricVariableToString(MetricVariable variable) {
return "Frame";
case MetricVariable::Ghosting:
return "Ghosting";
#ifdef BUILD_VISUAL_DEBUGGER
case MetricVariable::VisualDebugger:
return "VisualDebugger";
#endif
default:
return "Invalid";
}

View File

@@ -20,6 +20,9 @@ enum class MetricVariable : int32_t
CPUTime,
Sleep,
Frame,
#ifdef BUILD_VISUAL_DEBUGGER
VisualDebugger
#endif
};
struct Metric

View File

@@ -80,13 +80,13 @@ float NiPoint3::SquaredLength(void) const {
}
//! Returns the dot product of the vector dotted with another vector
float NiPoint3::DotProduct(const Vector3& vec) const {
float NiPoint3::DotProduct(const NiPoint3& vec) const {
return ((this->x * vec.x) + (this->y * vec.y) + (this->z * vec.z));
}
//! Returns the cross product of the vector crossed with another vector
Vector3 NiPoint3::CrossProduct(const Vector3& vec) const {
return Vector3(((this->y * vec.z) - (this->z * vec.y)),
NiPoint3 NiPoint3::CrossProduct(const NiPoint3& vec) const {
return NiPoint3(((this->y * vec.z) - (this->z * vec.y)),
((this->z * vec.x) - (this->x * vec.z)),
((this->x * vec.y) - (this->y * vec.x)));
}
@@ -171,7 +171,7 @@ bool NiPoint3::IsWithinAxisAlignedBox(const NiPoint3& minPoint, const NiPoint3&
//! Checks to see if the point (or vector) is within a sphere
bool NiPoint3::IsWithinSpehere(const NiPoint3& sphereCenter, float radius) {
Vector3 diffVec = Vector3(x - sphereCenter.GetX(), y - sphereCenter.GetY(), z - sphereCenter.GetZ());
NiPoint3 diffVec = NiPoint3(x - sphereCenter.GetX(), y - sphereCenter.GetY(), z - sphereCenter.GetZ());
return (diffVec.SquaredLength() <= (radius * radius));
}
@@ -226,7 +226,7 @@ NiPoint3 NiPoint3::MoveTowards(const NiPoint3& current, const NiPoint3& target,
//This code is yoinked from the MS XNA code, so it should be right, even if it's horrible.
NiPoint3 NiPoint3::RotateByQuaternion(const NiQuaternion& rotation) {
Vector3 vector;
NiPoint3 vector;
float num12 = rotation.x + rotation.x;
float num2 = rotation.y + rotation.y;
float num = rotation.z + rotation.z;

View File

@@ -7,7 +7,6 @@
class NiPoint3;
class NiQuaternion;
typedef NiPoint3 Vector3; //!< The Vector3 class is technically the NiPoint3 class, but typedef'd for clarity in some cases
//! A custom class the defines a point in space
class NiPoint3 {
@@ -102,14 +101,14 @@ public:
\param vec The second vector
\return The dot product of the two vectors
*/
float DotProduct(const Vector3& vec) const;
float DotProduct(const NiPoint3& vec) const;
//! Returns the cross product of the vector crossed with another vector
/*!
\param vec The second vector
\return The cross product of the two vectors
*/
Vector3 CrossProduct(const Vector3& vec) const;
NiPoint3 CrossProduct(const NiPoint3& vec) const;
//! Unitize the vector
/*!

View File

@@ -72,22 +72,22 @@ void NiQuaternion::SetZ(float z) {
// MARK: Member Functions
//! Returns the forward vector from the quaternion
Vector3 NiQuaternion::GetForwardVector(void) const {
return Vector3(2 * (x * z + w * y), 2 * (y * z - w * x), 1 - 2 * (x * x + y * y));
NiPoint3 NiQuaternion::GetForwardVector(void) const {
return NiPoint3(2 * (x * z + w * y), 2 * (y * z - w * x), 1 - 2 * (x * x + y * y));
}
//! Returns the up vector from the quaternion
Vector3 NiQuaternion::GetUpVector(void) const {
return Vector3(2 * (x * y - w * z), 1 - 2 * (x * x + z * z), 2 * (y * z + w * x));
NiPoint3 NiQuaternion::GetUpVector(void) const {
return NiPoint3(2 * (x * y - w * z), 1 - 2 * (x * x + z * z), 2 * (y * z + w * x));
}
//! Returns the right vector from the quaternion
Vector3 NiQuaternion::GetRightVector(void) const {
return Vector3(1 - 2 * (y * y + z * z), 2 * (x * y + w * z), 2 * (x * z - w * y));
NiPoint3 NiQuaternion::GetRightVector(void) const {
return NiPoint3(1 - 2 * (y * y + z * z), 2 * (x * y + w * z), 2 * (x * z - w * y));
}
Vector3 NiQuaternion::GetEulerAngles() const {
Vector3 angles;
NiPoint3 NiQuaternion::GetEulerAngles() const {
NiPoint3 angles;
// roll (x-axis rotation)
const float sinr_cosp = 2 * (w * x + y * z);
@@ -164,7 +164,7 @@ NiQuaternion NiQuaternion::LookAtUnlocked(const NiPoint3& sourcePoint, const NiP
}
//! Creates a Quaternion from a specific axis and angle relative to that axis
NiQuaternion NiQuaternion::CreateFromAxisAngle(const Vector3& axis, float angle) {
NiQuaternion NiQuaternion::CreateFromAxisAngle(const NiPoint3& axis, float angle) {
float halfAngle = angle * 0.5f;
float s = static_cast<float>(sin(halfAngle));

View File

@@ -9,7 +9,6 @@
*/
class NiQuaternion;
typedef NiQuaternion Quaternion; //!< A typedef for a shorthand version of NiQuaternion
//! A class that defines a rotation in space
class NiQuaternion {
@@ -95,21 +94,21 @@ public:
/*!
\return The forward vector of the quaternion
*/
Vector3 GetForwardVector(void) const;
NiPoint3 GetForwardVector(void) const;
//! Returns the up vector from the quaternion
/*!
\return The up vector fo the quaternion
*/
Vector3 GetUpVector(void) const;
NiPoint3 GetUpVector(void) const;
//! Returns the right vector from the quaternion
/*!
\return The right vector of the quaternion
*/
Vector3 GetRightVector(void) const;
NiPoint3 GetRightVector(void) const;
Vector3 GetEulerAngles() const;
NiPoint3 GetEulerAngles() const;
// MARK: Operators
@@ -145,7 +144,7 @@ public:
\param angle The angle relative to this axis
\return A quaternion created from the axis and angle
*/
static NiQuaternion CreateFromAxisAngle(const Vector3& axis, float angle);
static NiQuaternion CreateFromAxisAngle(const NiPoint3& axis, float angle);
static NiQuaternion FromEulerAngles(const NiPoint3& eulerAngles);
};

View File

@@ -48,7 +48,9 @@ const uint64_t LWOZONEID_INVALID = 0; //!< Invalid LWOZONEID
typedef std::set<LWOOBJID> TSetObjID;
const float PI = 3.14159f;
#ifndef PI
#define PI 3.14159265358979323846f
#endif
#if defined(__unix) || defined(__APPLE__)
//For Linux: