From ac30b0f7bb86df44b4dd5696c396b1efcd6fe8a2 Mon Sep 17 00:00:00 2001 From: n00b Date: Fri, 15 Nov 2024 09:24:19 -0500 Subject: [PATCH] Fixed a bug with getting the sprite position not using the offset for box2d --- rcbasic_runtime/rc_os_defines.h | 4 ++-- rcbasic_runtime/rc_spritelib.h | 15 +++++++++++---- rcbasic_runtime/rcbasic_runtime.depend | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/rcbasic_runtime/rc_os_defines.h b/rcbasic_runtime/rc_os_defines.h index 766dfe7..3a94755 100755 --- a/rcbasic_runtime/rc_os_defines.h +++ b/rcbasic_runtime/rc_os_defines.h @@ -1,8 +1,8 @@ #ifndef RC_OS_DEFINES_H_INCLUDED #define RC_OS_DEFINES_H_INCLUDED -//#define RC_LINUX -#define RC_WEB +#define RC_LINUX +//#define RC_WEB //#define RC_WINDOWS //#define RC_ANDROID //#define RC_MAC diff --git a/rcbasic_runtime/rc_spritelib.h b/rcbasic_runtime/rc_spritelib.h index dfbfedf..b363f3a 100644 --- a/rcbasic_runtime/rc_spritelib.h +++ b/rcbasic_runtime/rc_spritelib.h @@ -540,8 +540,11 @@ void rc_getSpritePosition(int spr_id, double* x, double* y) if(!rc_sprite[spr_id].active) return; - *x = (double)rc_sprite[spr_id].physics.body->GetPosition().x; - *y = (double)rc_sprite[spr_id].physics.body->GetPosition().y; + double off_x = rc_sprite[spr_id].physics.offset_x; + double off_y = rc_sprite[spr_id].physics.offset_y; + + *x = (double)rc_sprite[spr_id].physics.body->GetPosition().x - off_x; + *y = (double)rc_sprite[spr_id].physics.body->GetPosition().y - off_y; } double rc_spriteX(int spr_id) @@ -552,7 +555,9 @@ double rc_spriteX(int spr_id) if(!rc_sprite[spr_id].active) return 0; - return (double)rc_sprite[spr_id].physics.body->GetPosition().x; + double off_x = rc_sprite[spr_id].physics.offset_x; + + return (double)rc_sprite[spr_id].physics.body->GetPosition().x - off_x; } double rc_spriteY(int spr_id) @@ -563,7 +568,9 @@ double rc_spriteY(int spr_id) if(!rc_sprite[spr_id].active) return 0; - return (double)rc_sprite[spr_id].physics.body->GetPosition().y; + double off_y = rc_sprite[spr_id].physics.offset_y; + + return (double)rc_sprite[spr_id].physics.body->GetPosition().y - off_y; } void rc_setSpriteRotation(int spr_id, double angle) diff --git a/rcbasic_runtime/rcbasic_runtime.depend b/rcbasic_runtime/rcbasic_runtime.depend index e84a81e..898a5ff 100755 --- a/rcbasic_runtime/rcbasic_runtime.depend +++ b/rcbasic_runtime/rcbasic_runtime.depend @@ -32,7 +32,7 @@ "rc_func130_cases.h" -1731547485 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h +1731678428 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h 1730315467 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h @@ -2486,7 +2486,7 @@ -1731554928 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h +1731679477 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h "SDL.h" "rc_sprite2D.h"