summaryrefslogtreecommitdiff
path: root/src/fakerw
diff options
context:
space:
mode:
Diffstat (limited to 'src/fakerw')
-rw-r--r--src/fakerw/fake.cpp4
-rw-r--r--src/fakerw/rphanim.h10
-rw-r--r--src/fakerw/rtquat.h7
3 files changed, 17 insertions, 4 deletions
diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp
index dca15dd0..c4ff2dd2 100644
--- a/src/fakerw/fake.cpp
+++ b/src/fakerw/fake.cpp
@@ -787,8 +787,8 @@ RwImage *RtBMPImageRead(const RwChar * imageName) { return rw::readBMP(imageName
#include "rtquat.h"
-RtQuat *RtQuatRotate(RtQuat * quat, const RwV3d * axis, RwReal angle, RwOpCombineType combineOp) { return quat->rotate(axis, angle/180.0f*3.14159f, (CombineOp)combineOp); }
-void RtQuatConvertToMatrix(const RtQuat * const qpQuat, RwMatrix * const mpMatrix) { mpMatrix->rotate(*qpQuat, COMBINEREPLACE); }
+RtQuat *RtQuatRotate(RtQuat * quat, const RwV3d * axis, RwReal angle, RwOpCombineType combineOp) { return (RtQuat*)((rw::Quat*)quat)->rotate(axis, angle/180.0f*3.14159f, (CombineOp)combineOp); }
+void RtQuatConvertToMatrix(const RtQuat * const qpQuat, RwMatrix * const mpMatrix) { mpMatrix->rotate(*(rw::Quat*)qpQuat, COMBINEREPLACE); }
#include "rtcharse.h"
diff --git a/src/fakerw/rphanim.h b/src/fakerw/rphanim.h
index 34dfeb09..6ece8306 100644
--- a/src/fakerw/rphanim.h
+++ b/src/fakerw/rphanim.h
@@ -9,7 +9,15 @@ typedef rw::Animation RpHAnimAnimation;
#define rpHANIMSTDKEYFRAMETYPEID 0x1
-typedef rw::HAnimKeyFrame RpHAnimStdKeyFrame;
+// same as rw::HAnimKeyFrame, but we need RtQuat in this one
+struct RpHAnimStdKeyFrame
+{
+ RpHAnimStdKeyFrame *prevFrame;
+ RwReal time;
+ RtQuat q;
+ RwV3d t;
+};
+
enum RpHAnimHierarchyFlag
{
diff --git a/src/fakerw/rtquat.h b/src/fakerw/rtquat.h
index 3cf15f5a..450342b2 100644
--- a/src/fakerw/rtquat.h
+++ b/src/fakerw/rtquat.h
@@ -1,6 +1,11 @@
#pragma once
-typedef rw::Quat RtQuat;
+// Same layout as rw::Quat but with ugly imag,real separation which i don't want in librw
+struct RtQuat
+{
+ rw::V3d imag;
+ rw::float32 real;
+};
RwBool RtQuatConvertFromMatrix(RtQuat * const qpQuat, const RwMatrix * const mpMatrix);
RtQuat *RtQuatRotate(RtQuat * quat, const RwV3d * axis, RwReal angle, RwOpCombineType combineOp);