mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-11 21:21:57 -04:00
Frame interp: Fix Epona's reins
This commit is contained in:
@@ -196,6 +196,9 @@ public:
|
||||
void copyReinPos();
|
||||
void setReinPosHandSubstance(int);
|
||||
void setReinPosNormalSubstance();
|
||||
#if TARGET_PC
|
||||
void lerpControlPoints(f32 alpha);
|
||||
#endif
|
||||
void bgCheck();
|
||||
bool checkSpecialWallHitSubstance(cXyz const&) const;
|
||||
void setServiceWaitTimer();
|
||||
|
||||
@@ -435,6 +435,10 @@ public:
|
||||
m3DLineMatSortPacket[param_1->getMaterialID()].setMatDark(param_1);
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void refresh3DlineMats(const cXyz& eye);
|
||||
#endif
|
||||
|
||||
void peekZdata() { mPeekZ.peekData(); }
|
||||
void entryZSortListZxlu(J3DPacket* i_packet, cXyz& param_1) {
|
||||
entryZSortXluDrawList(mDrawBuffers[DB_LIST_Z_XLU], i_packet, param_1);
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
struct cXyz;
|
||||
|
||||
#ifdef __cplusplus
|
||||
namespace dusk {
|
||||
namespace frame_interp {
|
||||
@@ -15,6 +17,7 @@ void ensure_initialized();
|
||||
void begin_record();
|
||||
void end_record();
|
||||
void interpolate(float step);
|
||||
float get_interpolation_step();
|
||||
void notify_sim_tick_complete();
|
||||
uint32_t begin_presentation_ui_pass();
|
||||
uint32_t get_presentation_ui_advance_ticks();
|
||||
@@ -27,6 +30,8 @@ void record_final_mtx_raw(const Mtx* dest, const Mtx src);
|
||||
bool lookup_replacement(const void* source, Mtx out);
|
||||
bool lookup_concat_replacement(const void* lhs, const void* rhs, Mtx out);
|
||||
|
||||
void camera_eye_from_view_mtx(MtxP view_mtx, cXyz* o_eye);
|
||||
|
||||
} // namespace frame_interp
|
||||
} // namespace dusk
|
||||
#endif
|
||||
|
||||
@@ -541,6 +541,9 @@ public:
|
||||
virtual int getMaterialID() = 0;
|
||||
virtual void setMaterial() = 0;
|
||||
virtual void draw() = 0;
|
||||
#if TARGET_PC
|
||||
virtual void refreshGeometryForPresentationEye(const cXyz& eye) {}
|
||||
#endif
|
||||
|
||||
/* 0x4 */ mDoExt_3DlineMat_c* field_0x4;
|
||||
};
|
||||
@@ -582,11 +585,19 @@ class dKy_tevstr_c;
|
||||
class mDoExt_3DlineMat1_c : public mDoExt_3DlineMat_c {
|
||||
public:
|
||||
int init(u16, u16, ResTIMG*, int);
|
||||
#if TARGET_PC
|
||||
void update(int, GXColor&, dKy_tevstr_c*, const cXyz* presentationEye = nullptr);
|
||||
void update(int, f32, GXColor&, u16, dKy_tevstr_c*, const cXyz* presentationEye = nullptr);
|
||||
#else
|
||||
void update(int, GXColor&, dKy_tevstr_c*);
|
||||
void update(int, f32, GXColor&, u16, dKy_tevstr_c*);
|
||||
#endif
|
||||
int getMaterialID() { return 1; }
|
||||
void setMaterial();
|
||||
void draw();
|
||||
#if TARGET_PC
|
||||
void refreshGeometryForPresentationEye(const cXyz& eye) override;
|
||||
#endif
|
||||
|
||||
cXyz* getPos(int i_idx) { return mpLines[i_idx].field_0x0; }
|
||||
f32* getSize(int i_idx) { return mpLines[i_idx].field_0x4; }
|
||||
@@ -600,6 +611,11 @@ private:
|
||||
/* 0x34 */ u16 field_0x34;
|
||||
/* 0x36 */ u8 mIsDrawn;
|
||||
/* 0x38 */ mDoExt_3Dline_c* mpLines;
|
||||
#if TARGET_PC
|
||||
u8 mInterpLineKind;
|
||||
f32 mInterpLineF;
|
||||
u16 mInterpLineU16;
|
||||
#endif
|
||||
};
|
||||
|
||||
class mDoExt_3DlineMat2_c : public mDoExt_3DlineMat1_c {
|
||||
@@ -616,6 +632,9 @@ public:
|
||||
void setMatDark(mDoExt_3DlineMat_c* i_mat) { setMat(i_mat); }
|
||||
|
||||
void setMat(mDoExt_3DlineMat_c*);
|
||||
#if TARGET_PC
|
||||
mDoExt_3DlineMat_c* getFirstMat() const { return mp3DlineMat; }
|
||||
#endif
|
||||
virtual void draw();
|
||||
virtual ~mDoExt_3DlineMatSortPacket() {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user