diff --git a/rcbasic_build/main.cpp b/rcbasic_build/main.cpp index 4fadbfc..b15061d 100755 --- a/rcbasic_build/main.cpp +++ b/rcbasic_build/main.cpp @@ -920,7 +920,8 @@ int main(int argc, char * argv[]) //DEBUG START //rc_filename = "/home/n00b/projects/bu/constraint_demo/main.bas"; - //rc_filename = "/home/n00b/projects/rcbasic_alpha3/test_project/main.bas"; + //rc_filename = "/home/n00b/projects/bu/rcbasic_v400A6_linux/rcbasic_v400_linux/examples/tile_demo/main.bas"; + rc_filename = "/home/n00b/projects/rcbasic_alpha3/test_project/main.bas"; //DEBUG END //enable_presets = true; diff --git a/rcbasic_build/rcbasic.dbgs b/rcbasic_build/rcbasic.dbgs index 5dbaf0a..6d4fec6 100644 --- a/rcbasic_build/rcbasic.dbgs +++ b/rcbasic_build/rcbasic.dbgs @@ -15,52 +15,54 @@ N main black 25 N main green 26 N main white 27 N main sprite_canvas 28 -N main gz_img 29 -N main rc_img 30 -N main rc 31 -N main gz 32 -N main gz_x 33 -N main gz_y 34 -N main rc_x 35 -N main rc_y 36 -N main x 37 -N main y 38 -N main lforce 39 +N main tile 29 +N main gz_img 30 +N main rc_img 31 +N main rc 32 +N main gz 33 +N main gz_x 34 +N main gz_y 35 +N main rc_x 36 +N main rc_y 37 +N main x 38 +N main y 39 +N main lforce 40 S main fnt$ 3 -N main hud_font 40 +N main hud_font 41 AS main hud_txt$ 4 -N main.#FOR:0 i 41 -N main mesh1 42 -N main actor1 43 -N main actor1_texture 44 -N main c 45 -N main mat 46 -N main a_mat 47 -N main level 48 -N main actor2 49 -N main ax 50 -N main ay 51 -N main az 52 -N main init 53 -N main i 54 -N main vx 55 -N main vy 56 -N main vz 57 -N main mass 58 -N main anim 59 -N main num_loops 60 -N main off_x 61 -N main off_y 62 -N main test_mode 63 -N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crx 64 -N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 cry 65 -N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crz 66 -N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crx 67 -N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 cry 68 -N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crz 69 -N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crx 70 -N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 cry 71 -N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crz 72 -N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crx 73 -N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 cry 74 -N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crz 75 +N main t_img 42 +N main.#FOR:0 i 43 +N main mesh1 44 +N main actor1 45 +N main actor1_texture 46 +N main c 47 +N main mat 48 +N main a_mat 49 +N main level 50 +N main actor2 51 +N main ax 52 +N main ay 53 +N main az 54 +N main init 55 +N main i 56 +N main vx 57 +N main vy 58 +N main vz 59 +N main mass 60 +N main anim 61 +N main num_loops 62 +N main off_x 63 +N main off_y 64 +N main test_mode 65 +N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crx 66 +N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 cry 67 +N main.#WHILE:0.#SELECT:0->CASE:0.#IF:7 crz 68 +N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crx 69 +N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 cry 70 +N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:7->CONDITION:0 crz 71 +N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crx 72 +N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 cry 73 +N main.#WHILE:0.#SELECT:0->CASE:0.#IF:9 crz 74 +N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crx 75 +N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 cry 76 +N main.#WHILE:0.#SELECT:0->CASE:0.#ELSE:9->CONDITION:0 crz 77 diff --git a/rcbasic_build/rcbasic_build.depend b/rcbasic_build/rcbasic_build.depend index 9864fa7..459d5c0 100755 --- a/rcbasic_build/rcbasic_build.depend +++ b/rcbasic_build/rcbasic_build.depend @@ -1,5 +1,5 @@ # depslib dependency file v1.0 -1733115894 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp +1733272260 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp @@ -54,7 +54,7 @@ 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h -1732562642 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h +1733270962 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h "identifier.h" 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h diff --git a/rcbasic_build/rcbasic_build.layout b/rcbasic_build/rcbasic_build.layout index 5955503..f19abea 100755 --- a/rcbasic_build/rcbasic_build.layout +++ b/rcbasic_build/rcbasic_build.layout @@ -1,10 +1,10 @@ - - + + - + @@ -12,12 +12,12 @@ - + - + - + @@ -58,12 +58,17 @@ - + - + - + + + + + + @@ -76,19 +81,14 @@ - + - + - + - - - - - - + diff --git a/rcbasic_runtime/main.cpp b/rcbasic_runtime/main.cpp index 6297390..458a1f6 100755 --- a/rcbasic_runtime/main.cpp +++ b/rcbasic_runtime/main.cpp @@ -4446,6 +4446,7 @@ int main(int argc, char * argv[]) std::cin >> debug_opt; if(debug_opt.compare("a")==0) { + //rc_intern_dirChange("/home/n00b/projects/bu/rcbasic_v400A6_linux/rcbasic_v400_linux/examples/tile_demo/"); rc_intern_dirChange("/home/n00b/projects/rcbasic_alpha3/test_project"); rc_filename = "main.cbc"; } diff --git a/rcbasic_runtime/rc_gfx.h b/rcbasic_runtime/rc_gfx.h index 0df6ce9..721be0c 100644 --- a/rcbasic_runtime/rc_gfx.h +++ b/rcbasic_runtime/rc_gfx.h @@ -1441,6 +1441,11 @@ Uint32 rc_getPixel(int x, int y) void rc_drawRect(int x, int y, int w, int h) { + // x and y seems to be offset by -1 in the GLES driver for this function. I will remove this once I fix it in the GLES driver but this works for now. + #ifdef RC_DRIVER_GLES2 + x++; + y++; + #endif // RC_DRIVER_GLES2 irr::core::vector2d r_pos(x,y); irr::core::dimension2d r_dim(w,h); irr::core::rect r(r_pos, r_dim); @@ -2417,7 +2422,8 @@ void rc_drawImage(int img_id, int x, int y) //irr::core::rect dest( irr::core::vector2d(x, y), irr::core::dimension2d(src_w, src_h));; - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2506,7 +2512,8 @@ void rc_drawImage_Rotate(int img_id, int x, int y, double angle) rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2534,7 +2541,8 @@ void rc_drawImage_Zoom(int img_id, int x, int y, double zx, double zy) rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2562,7 +2570,8 @@ void rc_drawImage_ZoomEx(int img_id, int x, int y, int src_x, int src_y, int src rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2590,7 +2599,8 @@ void rc_drawImage_Rotozoom(int img_id, int x, int y, double angle, double zx, do rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2618,7 +2628,8 @@ void rc_drawImage_RotozoomEx(int img_id, int x, int y, int src_x, int src_y, int rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2648,7 +2659,8 @@ void rc_drawImage_Flip(int img_id, int x, int y, bool h, bool v) rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2677,7 +2689,8 @@ void rc_drawImage_FlipEx(int img_id, int x, int y, int src_x, int src_y, int src rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2708,7 +2721,8 @@ void rc_drawImage_Blit(int img_id, int x, int y, int src_x, int src_y, int src_w irr::core::rect dest( irr::core::vector2d(x, y), irr::core::dimension2d(src_w, src_h)); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage(VideoDriver, rc_image[img_id].image, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); } @@ -2737,7 +2751,8 @@ void rc_drawImage_RotateEx(int img_id, int x, int y, int src_x, int src_y, int s rc_image[img_id].color_mod.getGreen(), rc_image[img_id].color_mod.getBlue()); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); irr::core::rect dest( irr::core::vector2d(x, y), irr::core::dimension2d(src_w, src_h)); @@ -2769,7 +2784,8 @@ void rc_drawImage_BlitEx(int img_id, int x, int y, int w, int h, int src_x, int irr::core::rect dest( irr::core::vector2d(x, y), irr::core::dimension2d(w, h)); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); draw2DImage2(VideoDriver, rc_image[img_id].image, sourceRect, dest, rotationPoint, rotation, useAlphaChannel, color, screenSize ); } @@ -2901,7 +2917,8 @@ void rc_floodFill(int x, int y) bool useAlphaChannel = true; irr::video::SColor color(rc_canvas[rc_active_canvas].color_mod); - irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + //irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].dimension.Width, rc_canvas[rc_active_canvas].dimension.Height); + irr::core::vector2df screenSize(rc_canvas[rc_active_canvas].texture->getSize().Width, rc_canvas[rc_active_canvas].texture->getSize().Height); rc_setActiveCanvas(rc_active_canvas); draw2DImage(VideoDriver, old_canvas, sourceRect, position, rotationPoint, rotation, scale, useAlphaChannel, color, screenSize); @@ -3006,16 +3023,43 @@ int rc_canvasClip(int x, int y, int w, int h) else return -1; + #ifdef RC_DRIVER_GLES2 + Uint32 size_n = 2; + Uint32 dim_max = (w > h ? w : h); + while(size_n < dim_max) size_n *= 2; + irr::video::ITexture* texture = VideoDriver->addRenderTargetTexture(irr::core::dimension2d((irr::u32)size_n, (irr::u32)size_n), "canvas_clip_image", ECF_A8R8G8B8); + #else irr::video::ITexture* texture = VideoDriver->addRenderTargetTexture(irr::core::dimension2d((irr::u32)w, (irr::u32)h), "canvas_clip_image", irr::video::ECF_A8R8G8B8); + #endif // RC_WEB if(!texture) return -1; VideoDriver->setRenderTarget(texture); - drawCanvasImage(rc_canvas[rc_active_canvas].texture, 0, 0, x, y, w, h, w, h); + int tgt_w = texture->getSize().Width; + int tgt_h = texture->getSize().Height; - VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, false, false); + #ifdef RC_DRIVER_GLES2 + int canvas_id = rc_active_canvas; + + irr::core::vector2d screenSize( (irr::f32) tgt_w, (irr::f32) tgt_h ); + irr::video::SColor color(rc_canvas[canvas_id].color_mod); + irr::core::dimension2d cv_dim(tgt_w, tgt_h); + irr::core::position2d cv_pos(0, 0); + irr::core::vector2d cv_offset(x, rc_canvas[canvas_id].texture->getSize().Height - y - cv_dim.Height); + irr::core::rect src( cv_offset, cv_dim ); + irr::core::rect dest( irr::core::vector2d(cv_pos.X, cv_pos.Y), irr::core::dimension2d(cv_dim.Width, cv_dim.Height) ); + draw2DImage2(VideoDriver, rc_canvas[canvas_id].texture, src, dest, irr::core::position2d(0, 0), 0, true, color, screenSize); + + //rc_setDriverMaterial(); + //VideoDriver->draw2DImage(rc_canvas[rc_active_canvas].texture, dest, src, 0, 0, false); + #else + drawCanvasImage(rc_canvas[rc_active_canvas].texture, 0, 0, x, y, w, h, tgt_w, tgt_h); + #endif // RC_DRIVER_GLES2 + + rc_setActiveCanvas(rc_active_canvas); + //VideoDriver->setRenderTarget(rc_canvas[rc_active_canvas].texture, false, false); int img_id = -1; rc_image_obj img; diff --git a/rcbasic_runtime/rc_os_defines.h b/rcbasic_runtime/rc_os_defines.h index 093fff9..50e40c0 100755 --- a/rcbasic_runtime/rc_os_defines.h +++ b/rcbasic_runtime/rc_os_defines.h @@ -40,7 +40,7 @@ //FOR TESTING PURPOSES #ifdef RC_TESTING -//#define RC_DRIVER_GLES2 +#define RC_DRIVER_GLES2 #endif // RC_TESTING #define RC_PI 3.14159265359 diff --git a/rcbasic_runtime/rcbasic_runtime.depend b/rcbasic_runtime/rcbasic_runtime.depend index 927dedd..c7a7d14 100755 --- a/rcbasic_runtime/rcbasic_runtime.depend +++ b/rcbasic_runtime/rcbasic_runtime.depend @@ -1,5 +1,5 @@ # depslib dependency file v1.0 -1733091135 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp +1733272320 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp "rc_os_defines.h" @@ -32,10 +32,10 @@ "rc_func130_cases.h" -1733116245 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h +1733446556 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h -1732562642 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h +1733270962 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h 1730291453 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h "rc_os_defines.h" @@ -1247,7 +1247,7 @@ 1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h -1733028476 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h +1733446561 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h "SDL.h" @@ -1271,7 +1271,7 @@ "rc_joints.h" -1733028476 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h +1733272044 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h "SDL.h" "btBulletDynamicsCommon.h" "BulletSoftBody/btSoftRigidDynamicsWorld.h" @@ -2272,7 +2272,7 @@ "rc_gfx_core.h" -1732562642 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h +1733270962 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h 1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp "irrBullet.h" diff --git a/rcbasic_runtime/rcbasic_runtime.layout b/rcbasic_runtime/rcbasic_runtime.layout index 261938a..40dd551 100755 --- a/rcbasic_runtime/rcbasic_runtime.layout +++ b/rcbasic_runtime/rcbasic_runtime.layout @@ -1,80 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + - + - + - + - - - - - - - - - - - + @@ -82,54 +27,44 @@ - + - + + + + + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + @@ -137,14 +72,59 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -152,4 +132,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +