[Scummvm-git-logs] scummvm master -> 0f4791ea2824c040ba9ec3ca23098cbb7602483e
aquadran
noreply at scummvm.org
Sat Jul 30 14:17:58 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0f4791ea28 ICB: Avoid casting PXMarker class to memory
Commit: 0f4791ea2824c040ba9ec3ca23098cbb7602483e
https://github.com/scummvm/scummvm/commit/0f4791ea2824c040ba9ec3ca23098cbb7602483e
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2022-07-30T16:17:54+02:00
Commit Message:
ICB: Avoid casting PXMarker class to memory
Changed paths:
engines/icb/actor_view_pc.cpp
engines/icb/common/px_anims.h
engines/icb/fn_animation.cpp
engines/icb/fn_interact.cpp
engines/icb/general_interaction.cpp
engines/icb/general_npc_animation.cpp
engines/icb/player.cpp
engines/icb/route_manager.cpp
engines/icb/stage_poly.cpp
engines/icb/stagedraw_pc_poly.cpp
diff --git a/engines/icb/actor_view_pc.cpp b/engines/icb/actor_view_pc.cpp
index ba4481cc933..64167e7570b 100644
--- a/engines/icb/actor_view_pc.cpp
+++ b/engines/icb/actor_view_pc.cpp
@@ -389,7 +389,7 @@ void DrawFrame(const int32 frame) {
PXframe *frm = PXFrameEnOfAnim(framenum, pxanim);
PXmarker &marker = frm->markers[ORG_POS];
float mposx, mposy, mposz;
- marker.GetXYZ(&mposx, &mposy, &mposz);
+ PXmarker_PSX_Object::GetXYZ(&marker, &mposx, &mposy, &mposz);
int32 dy = (int32)mposy;
g_av_actor->lw.t[0] = 0;
diff --git a/engines/icb/common/px_anims.h b/engines/icb/common/px_anims.h
index d069d1918fe..2b1b2cbdd61 100644
--- a/engines/icb/common/px_anims.h
+++ b/engines/icb/common/px_anims.h
@@ -29,12 +29,11 @@
#include "engines/icb/common/px_common.h"
-namespace ICB {
+#include "common/endian.h"
-#define PSX_PXANIM_SCHEMA 5
-#define PC_PXANIM_SCHEMA 5
+namespace ICB {
-#define PXANIM_SCHEMA PC_PXANIM_SCHEMA
+#define PXANIM_SCHEMA 5
#define PXANIM_TAG "Peas"
#define ORG_POS 0
@@ -50,50 +49,35 @@ namespace ICB {
#define TRI_TYPE 3
#define OBJ_TYPE 4
-#if PXANIM_SCHEMA == 1
-
-#define TRI_POS 2
-#define TRI_STRING "TRI"
-
-#undef INT_TYPE
-#define INT_TYPE *(uint32 *)INT_STRING
-
-#undef TRI_TYPE
-#define TRI_TYPE *(uint32 *)TRI_STRING
-
-#endif // #if PXANIM_SCHEMA == 1
-
// PXmarker_PC : the PC version
-class PXmarker_PC {
-private:
+typedef struct {
uint32 m_type;
float m_x, m_y, m_z;
float m_pan;
+} PXmarker_PC;
-#if PXANIM_SCHEMA == 1
- float dummy1, dummy2;
-#endif
-
+// PXmarker_PC : the PC version
+class PXmarker_PC_Object {
public:
- void SetType(uint32 type) { m_type = type; }
- void SetPan(float pan) { m_pan = pan; }
- void SetXYZ(float x, float y, float z);
+ static void SetType(PXmarker_PC *marker, uint32 type) { marker->m_type = type; }
+ static void SetPan(PXmarker_PC *marker, float pan) { marker->m_pan = pan; }
+ static void SetXYZ(PXmarker_PC *marker, float x, float y, float z);
- uint32 GetType(void) { return m_type; }
- void GetPan(float *pan) { *pan = m_pan; }
- void GetXYZ(float *x, float *y, float *z);
+ static uint32 GetType(PXmarker_PC *marker) { return marker->m_type; }
+ static void GetPan(PXmarker_PC *marker, float *pan) { *pan = marker->m_pan; }
+ static void GetXYZ(PXmarker_PC *marker, float *x, float *y, float *z);
};
-inline void PXmarker_PC::SetXYZ(float x, float y, float z) {
- m_x = x;
- m_y = y;
- m_z = z;
+inline void PXmarker_PC_Object::SetXYZ(PXmarker_PC *marker, float x, float y, float z) {
+ marker->m_x = x;
+ marker->m_y = y;
+ marker->m_z = z;
}
-inline void PXmarker_PC::GetXYZ(float *x, float *y, float *z) {
- *x = m_x;
- *y = m_y;
- *z = m_z;
+inline void PXmarker_PC_Object::GetXYZ(PXmarker_PC *marker, float *x, float *y, float *z) {
+ *x = marker->m_x;
+ *y = marker->m_y;
+ *z = marker->m_z;
}
// PXframe_PC : the PC version //
@@ -108,43 +92,47 @@ typedef struct {
} PXframe_PC;
// PXmarker_PSX : the PSX version
-class PXmarker_PSX {
-private:
+typedef struct {
uint8 m_type;
uint8 x8;
uint16 x7y9;
uint32 y6z15pan11;
+} PXmarker_PSX;
+// PXmarker_PSX : the PSX version
+class PXmarker_PSX_Object {
public:
- void SetType(uint8 type) { m_type = type; }
- void SetPackedXYZPan(uint8 _x8, uint16 _x7y9, uint32 _y6z15pan11);
+ static void SetType(PXmarker_PSX *marker, uint8 type) { marker->m_type = type; }
+ static void SetPackedXYZPan(PXmarker_PSX *marker, uint8 _x8, uint16 _x7y9, uint32 _y6z15pan11);
- uint8 GetType(void) const { return m_type; }
+ static uint8 GetType(PXmarker_PSX *marker) { return marker->m_type; }
- void GetPan(float *pan) const;
- void GetXYZ(float *x, float *y, float *z) const;
+ static void GetPan(PXmarker_PSX *marker, float *pan);
+ static void GetXYZ(PXmarker_PSX *marker, float *x, float *y, float *z);
};
-inline void PXmarker_PSX::SetPackedXYZPan(uint8 _x8, uint16 _x7y9, uint32 _y6z15pan11) {
- x8 = _x8;
- x7y9 = _x7y9;
- y6z15pan11 = _y6z15pan11;
+inline void PXmarker_PSX_Object::SetPackedXYZPan(PXmarker_PSX *marker, uint8 _x8, uint16 _x7y9, uint32 _y6z15pan11) {
+ marker->x8 = _x8;
+ marker->x7y9 = _x7y9;
+ marker->y6z15pan11 = _y6z15pan11;
}
-inline void PXmarker_PSX::GetPan(float *pan) const { *pan = (float)(((y6z15pan11 & 0x7FF) << 1)) / 4096.0f; }
+inline void PXmarker_PSX_Object::GetPan(PXmarker_PSX *marker, float *pan) {
+ *pan = (float)(((marker->y6z15pan11 & 0x7FF) << 1)) / 4096.0f;
+}
-inline void PXmarker_PSX::GetXYZ(float *x, float *y, float *z) const {
+inline void PXmarker_PSX_Object::GetXYZ(PXmarker_PSX *marker, float *x, float *y, float *z) {
int32 ix, iy, iz;
- ix = ((x8 << 7) | (x7y9 >> 9));
+ ix = ((marker->x8 << 7) | (marker->x7y9 >> 9));
if (ix >= 16384)
ix = ix - 32768;
- iy = (((x7y9 & 0x1FF) << 6) | (y6z15pan11 >> 26));
+ iy = (((marker->x7y9 & 0x1FF) << 6) | (marker->y6z15pan11 >> 26));
if (iy >= 16384)
iy = iy - 32768;
- iz = ((y6z15pan11 >> 11) & 0x7FFF);
+ iz = ((marker->y6z15pan11 >> 11) & 0x7FFF);
if (iz >= 16384)
iz = iz - 32768;
@@ -183,21 +171,21 @@ typedef struct {
inline void ConvertPXanim(PXanim_PSX *anim) {
// Support old schema type files
- if (anim->schema == PSX_PXANIM_SCHEMA - 1) {
+ if (FROM_LE_32(anim->schema) == PXANIM_SCHEMA - 1) {
int32 nFrames = anim->frame_qty;
anim->frame_qty = (uint8)nFrames;
anim->speed = 1;
- anim->schema = PSX_PXANIM_SCHEMA;
+ anim->schema = TO_LE_32(PXANIM_SCHEMA);
}
}
inline void ConvertPXanim(PXanim_PC *anim) {
// Support old schema type files
- if (anim->schema == PC_PXANIM_SCHEMA - 1) {
+ if (FROM_LE_32(anim->schema) == PXANIM_SCHEMA - 1) {
int32 nFrames = anim->frame_qty;
anim->frame_qty = (uint8)nFrames;
anim->speed = 1;
- anim->schema = PC_PXANIM_SCHEMA;
+ anim->schema = TO_LE_32(PXANIM_SCHEMA);
}
}
diff --git a/engines/icb/fn_animation.cpp b/engines/icb/fn_animation.cpp
index 45f64b8d5c2..87e33e45810 100644
--- a/engines/icb/fn_animation.cpp
+++ b/engines/icb/fn_animation.cpp
@@ -1476,9 +1476,9 @@ mcodeFunctionReturnCodes _game_session::fn_apply_anim_y(int32 &, int32 *params)
PXreal yend;
PXreal ystart;
- PXFrameEnOfAnim(pAnim->frame_qty - 1, pAnim)->markers[ORG_POS].GetXYZ(&x, ¥d, &z);
+ PXmarker_PSX_Object::GetXYZ(&PXFrameEnOfAnim(pAnim->frame_qty - 1, pAnim)->markers[ORG_POS], &x, ¥d, &z);
- PXFrameEnOfAnim(0, pAnim)->markers[ORG_POS].GetXYZ(&x, &ystart, &z);
+ PXmarker_PSX_Object::GetXYZ(&PXFrameEnOfAnim(0, pAnim)->markers[ORG_POS], &x, &ystart, &z);
y_next = yend - ystart;
diff --git a/engines/icb/fn_interact.cpp b/engines/icb/fn_interact.cpp
index e28a830a192..94e68a2ddf0 100644
--- a/engines/icb/fn_interact.cpp
+++ b/engines/icb/fn_interact.cpp
@@ -483,7 +483,7 @@ mcodeFunctionReturnCodes _game_session::Core_prop_interact(int32 & /*result*/, i
for (j = 0; j < M->anim_speed; j++) {
PXframe *frame = PXFrameEnOfAnim(L->anim_pc + j, pAnim);
- if ((frame->marker_qty > INT_POS) && (INT_TYPE == (frame->markers[INT_POS].GetType()))) {
+ if ((frame->marker_qty > INT_POS) && (INT_TYPE == (PXmarker_PSX_Object::GetType(&frame->markers[INT_POS])))) {
// run the trigger anim
if (!MS->Call_socket(M->target_id, "trigger", &retval)) {
Message_box("[%s] interact marker but no trigger script", (const char *)L->GetName());
diff --git a/engines/icb/general_interaction.cpp b/engines/icb/general_interaction.cpp
index 43a45483c43..b6e88d624e2 100644
--- a/engines/icb/general_interaction.cpp
+++ b/engines/icb/general_interaction.cpp
@@ -68,7 +68,7 @@ bool8 _game_session::Find_interact_marker_in_anim(__mega_set_names animation, PX
// INT_TYPE : which means it was a real export of the INT marker on the frame when the anim made the INT marker visible
PXreal x_org, z_org, unused;
- PXFrameEnOfAnim(0, pAnim)->markers[ORG_POS].GetXYZ(&x_org, &unused, &z_org);
+ PXmarker_PSX_Object::GetXYZ(&PXFrameEnOfAnim(0, pAnim)->markers[ORG_POS], &x_org, &unused, &z_org);
for (uint16 frame = 0; frame < pAnim->frame_qty; frame++) {
PXframe *frm = PXFrameEnOfAnim(frame, pAnim);
@@ -76,13 +76,13 @@ bool8 _game_session::Find_interact_marker_in_anim(__mega_set_names animation, PX
if (frm->marker_qty > INT_POS) {
PXmarker *marker = &(frm->markers[INT_POS]);
- uint8 mtype = (uint8)marker->GetType();
+ uint8 mtype = (uint8)PXmarker_PSX_Object::GetType(marker);
if ((INT0_TYPE == mtype) || (INT_TYPE == mtype)) {
// The interact marker exists
PXreal x_int, z_int;
- marker->GetXYZ(&x_int, &unused, &z_int);
+ PXmarker_PSX_Object::GetXYZ(marker, &x_int, &unused, &z_int);
xoff[0] = x_int - x_org;
zoff[0] = z_int - z_org;
diff --git a/engines/icb/general_npc_animation.cpp b/engines/icb/general_npc_animation.cpp
index 8f5dc365c9a..88d6881c5f4 100644
--- a/engines/icb/general_npc_animation.cpp
+++ b/engines/icb/general_npc_animation.cpp
@@ -57,8 +57,8 @@ bool8 _game_session::Easy_frame_motion_and_pan(__mega_set_names anim_type, bool8
// Get current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(L->anim_pc, pAnim);
- nextFrame->markers[ORG_POS].GetPan(&pan1);
- currentFrame->markers[ORG_POS].GetPan(&pan2);
+ PXmarker_PSX_Object::GetPan(&nextFrame->markers[ORG_POS], &pan1);
+ PXmarker_PSX_Object::GetPan(¤tFrame->markers[ORG_POS], &pan2);
L->pan += (pan1 - pan2); // update by difference
@@ -66,8 +66,8 @@ bool8 _game_session::Easy_frame_motion_and_pan(__mega_set_names anim_type, bool8
// note that we always read frame+1 for motion of next frame even though the voxel frame itself will be looped back to 0
PXreal x1, x2, z1, z2, unused;
- nextFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
- currentFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x1, &unused, &z1);
xnext = x2 - x1;
znext = z2 - z1;
@@ -82,7 +82,7 @@ bool8 _game_session::Easy_frame_motion_and_pan(__mega_set_names anim_type, bool8
// as GCC got it all wrong if the same reference was re-used
currentFrame = PXFrameEnOfAnim(L->anim_pc, pAnim);
- currentFrame->markers[ORG_POS].GetPan(&pan);
+ PXmarker_PSX_Object::GetPan(¤tFrame->markers[ORG_POS], &pan);
L->pan_adjust = pan; // this value will be unwound from the orientation of the frame at render time in stage draw
@@ -132,8 +132,8 @@ bool8 _game_session::Easy_frame_and_motion(__mega_set_names anim_type, bool8 /*p
// Get current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(L->anim_pc, pAnim);
- nextFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
- currentFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x1, &unused, &z1);
xnext = x2 - x1;
znext = z2 - z1;
@@ -213,8 +213,8 @@ __barrier_result _game_session::Core_advance(__mega_set_names anim_type, bool8 p
// Get current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(L->anim_pc, pAnim);
- nextFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
- currentFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x1, &unused, &z1);
xnext = x2 - x1;
znext = z2 - z1;
@@ -326,8 +326,8 @@ __barrier_result _game_session::Core_reverse(__mega_set_names anim_type, bool8 p
// Get current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(L->anim_pc, pAnim);
- nextFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
- currentFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x1, &unused, &z1);
xnext = x2 - x1;
znext = z2 - z1;
@@ -417,8 +417,8 @@ void _game_session::Animate_turn_to_pan(__mega_set_names anim_type, uint32 speed
// Get current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(L->anim_pc, pAnim);
- infoFrame->markers[ORG_POS].GetPan(&pan1);
- currentFrame->markers[ORG_POS].GetPan(&pan2);
+ PXmarker_PSX_Object::GetPan(&infoFrame->markers[ORG_POS], &pan1);
+ PXmarker_PSX_Object::GetPan(¤tFrame->markers[ORG_POS], &pan2);
this_pan_change = (pan1 - pan2); // update by difference
@@ -453,10 +453,10 @@ void _game_session::Animate_turn_to_pan(__mega_set_names anim_type, uint32 speed
// Get the next frame from the anim
PXframe *nextFrame = PXFrameEnOfAnim(next_pc, pAnim);
- nextFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x2, &unused, &z2);
// Note, assumes current frame hasn't changed i.e L->info_pc is same
- currentFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x1, &unused, &z1);
// FIXME: xnext and znext are not used currently...
//PXreal xnext = x2 - x1;
@@ -469,7 +469,7 @@ void _game_session::Animate_turn_to_pan(__mega_set_names anim_type, uint32 speed
PXreal pan;
// Note, L->anim_pc = next_pc
- nextFrame->markers[ORG_POS].GetPan(&pan);
+ PXmarker_PSX_Object::GetPan(&nextFrame->markers[ORG_POS], &pan);
L->pan_adjust = pan;
diff --git a/engines/icb/player.cpp b/engines/icb/player.cpp
index 375339b809d..ff2302374bc 100644
--- a/engines/icb/player.cpp
+++ b/engines/icb/player.cpp
@@ -1354,7 +1354,7 @@ __mode_return _player::Process_strike() {
currentFrame = PXFrameEnOfAnim(log->anim_pc, pAnim);
if (currentFrame->marker_qty > INT_POS) {
- if (INT_TYPE == currentFrame->markers[INT_POS].GetType()) {
+ if (INT_TYPE == PXmarker_PSX_Object::GetType(¤tFrame->markers[INT_POS])) {
// punching a prop
if ((interact_selected) && (MS->logic_structs[cur_interact_id]->image_type == PROP)) {
MS->Call_socket(cur_interact_id, "ko", &retval); // call a ko script if there is one
@@ -1372,12 +1372,12 @@ __mode_return _player::Process_strike() {
// get interact marker offset
PXreal x_org, z_org, unused;
- PXFrameEnOfAnim(0, pAnim)->markers[ORG_POS].GetXYZ(&x_org, &unused, &z_org);
+ PXmarker_PSX_Object::GetXYZ(&PXFrameEnOfAnim(0, pAnim)->markers[ORG_POS], &x_org, &unused, &z_org);
// The interact marker exists
PXreal x_int, z_int;
- currentFrame->markers[INT_POS].GetXYZ(&x_int, &unused, &z_int);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[INT_POS], &x_int, &unused, &z_int);
int_x = x_int - x_org;
int_z = z_int - z_org;
@@ -2729,16 +2729,16 @@ bool8 _player::Advance_frame_motion_and_pan(__mega_set_names anim_type) {
// Get the current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(log->anim_pc, pAnim);
- nextFrame->markers[ORG_POS].GetPan(&pan1);
- currentFrame->markers[ORG_POS].GetPan(&pan2);
+ PXmarker_PSX_Object::GetPan(&nextFrame->markers[ORG_POS], &pan1);
+ PXmarker_PSX_Object::GetPan(¤tFrame->markers[ORG_POS], &pan2);
log->pan += (pan1 - pan2); // update by difference
// get motion displacement from currently displayed frame to next one
// note that we always read frame+1 for motion of next frame even though the voxel frame itself will be looped back to 0
PXreal x1, x2, z1, z2, unused;
- nextFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
- currentFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x2, &unused, &z2);
xnext = x1 - x2;
znext = z1 - z2;
@@ -2748,7 +2748,7 @@ bool8 _player::Advance_frame_motion_and_pan(__mega_set_names anim_type) {
// get the pan unwind value of the frame to be printed
PXreal pan;
- PXFrameEnOfAnim(log->anim_pc, pAnim)->markers[ORG_POS].GetPan(&pan);
+ PXmarker_PSX_Object::GetPan(&PXFrameEnOfAnim(log->anim_pc, pAnim)->markers[ORG_POS], &pan);
log->pan_adjust = pan; // this value will be unwound from the orientation of the frame at render time in stage draw
// calculate the new x and z coordinate from this frames motion offset
@@ -2825,16 +2825,16 @@ bool8 _player::Reverse_frame_motion_and_pan(__mega_set_names anim_type) {
// Get the current frame from the anim
PXframe *currentFrame = PXFrameEnOfAnim(log->anim_pc, pAnim);
- nextFrame->markers[ORG_POS].GetPan(&pan1);
- currentFrame->markers[ORG_POS].GetPan(&pan2);
+ PXmarker_PSX_Object::GetPan(&nextFrame->markers[ORG_POS], &pan1);
+ PXmarker_PSX_Object::GetPan(¤tFrame->markers[ORG_POS], &pan2);
log->pan += (pan1 - pan2); // update by difference
// get motion displacement from currently displayed frame to next one
// note that we always read frame+1 for motion of next frame even though the voxel frame itself will be looped back to 0
PXreal x1, x2, z1, z2, unused;
- nextFrame->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
- currentFrame->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(&nextFrame->markers[ORG_POS], &x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(¤tFrame->markers[ORG_POS], &x2, &unused, &z2);
xnext = x1 - x2;
znext = z1 - z2;
@@ -2844,7 +2844,7 @@ bool8 _player::Reverse_frame_motion_and_pan(__mega_set_names anim_type) {
// get the pan unwind value of the frame to be printed
PXreal pan;
- nextFrame->markers[ORG_POS].GetPan(&pan);
+ PXmarker_PSX_Object::GetPan(&nextFrame->markers[ORG_POS], &pan);
log->pan_adjust = pan;
diff --git a/engines/icb/route_manager.cpp b/engines/icb/route_manager.cpp
index b65544d7df5..f86f7ca19b7 100644
--- a/engines/icb/route_manager.cpp
+++ b/engines/icb/route_manager.cpp
@@ -1057,8 +1057,8 @@ uint32 _game_session::Animate_points(_route_description *route) {
// get motion displacement from currently displayed frame to next one
// note that we always read frame+1 for motion of next frame even though the voxel frame itself will be looped back to 0
PXreal x1, z1, x2, z2, unused;
- PXFrameEnOfAnim(L->anim_pc + 1, pAnim)->markers[ORG_POS].GetXYZ(&x1, &unused, &z1);
- PXFrameEnOfAnim(L->anim_pc, pAnim)->markers[ORG_POS].GetXYZ(&x2, &unused, &z2);
+ PXmarker_PSX_Object::GetXYZ(&PXFrameEnOfAnim(L->anim_pc + 1, pAnim)->markers[ORG_POS], &x1, &unused, &z1);
+ PXmarker_PSX_Object::GetXYZ(&PXFrameEnOfAnim(L->anim_pc, pAnim)->markers[ORG_POS], &x2, &unused, &z2);
xnext = x1 - x2;
znext = z1 - z2;
diff --git a/engines/icb/stage_poly.cpp b/engines/icb/stage_poly.cpp
index 07b7f595d5a..c3984a7111f 100644
--- a/engines/icb/stage_poly.cpp
+++ b/engines/icb/stage_poly.cpp
@@ -109,7 +109,7 @@ void _game_session::Stage_draw_poly() {
}
PXmarker_PSX &marker = PXFrameEnOfAnim(f, pAnim)->markers[ORG_POS];
float dx, dy, dz;
- marker.GetXYZ(&dx, &dy, &dz);
+ PXmarker_PSX_Object::GetXYZ(&marker, &dx, &dy, &dz);
// Make the actors orientation matrix
int32 pan;
diff --git a/engines/icb/stagedraw_pc_poly.cpp b/engines/icb/stagedraw_pc_poly.cpp
index 918c0a6bdf5..a96f2029883 100644
--- a/engines/icb/stagedraw_pc_poly.cpp
+++ b/engines/icb/stagedraw_pc_poly.cpp
@@ -499,15 +499,15 @@ int32 drawSpecialObjects(SDactor &actor, MATRIXPC *local2screen, int32 brightnes
PXframe *frm = PXFrameEnOfAnim(actor.frame, pAnim);
if (frm->marker_qty > INT_POS) {
PXmarker *marker = &(frm->markers[INT_POS]);
- uint8 mtype = (uint8)marker->GetType();
+ uint8 mtype = (uint8)PXmarker_PSX_Object::GetType(marker);
if ((INT0_TYPE == mtype) || (INT_TYPE == mtype)) {
// The interact marker exists
PXfloat mx, my, mz;
- marker->GetXYZ(&mx, &my, &mz);
+ PXmarker_PSX_Object::GetXYZ(marker, &mx, &my, &mz);
PXfloat ox, oy, oz;
marker = &(frm->markers[ORG_POS]);
- marker->GetXYZ(&ox, &oy, &oz);
+ PXmarker_PSX_Object::GetXYZ(marker, &ox, &oy, &oz);
// Yeah - found a muzzle flash
mflash = 1;
More information about the Scummvm-git-logs
mailing list