Added Sprite Color Blend and Global AntiAlias functions

This commit is contained in:
n00b
2024-12-22 20:27:40 -05:00
parent ff01fa83f4
commit d91146db60
20 changed files with 1740 additions and 1546 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -763,6 +763,12 @@ case FN_DrawImage_Flip: //Sub Procedure
case FN_DrawImage_FlipEx: //Sub Procedure
rc_drawImage_FlipEx( DRAWIMAGE_FLIPEX_SLOT, DRAWIMAGE_FLIPEX_X, DRAWIMAGE_FLIPEX_Y, DRAWIMAGE_FLIPEX_SRC_X, DRAWIMAGE_FLIPEX_SRC_Y, DRAWIMAGE_FLIPEX_SRC_W, DRAWIMAGE_FLIPEX_SRC_H, DRAWIMAGE_FLIPEX_H, DRAWIMAGE_FLIPEX_V );
break;
case FN_SetAntiAliasMode: //Sub Procedure
rc_setAntiAliasMode( SETANTIALIASMODE_AA_MODE );
break;
case FN_GetAntiAliasMode: //Number Function
rc_push_num(rc_getAntiAliasMode( ));
break;
case FN_InKey: //Number Function
rc_push_num(rc_inKey( ));
break;
@@ -1469,6 +1475,18 @@ case FN_GetSpriteSource: //Number Function
case FN_SpriteExists: //Number Function
rc_push_num(rc_spriteExists( SPRITEEXISTS_SPRITE ));
break;
case FN_SetSpriteColorMod: //Sub Procedure
rc_setSpriteColorMod( SETSPRITECOLORMOD_SPRITE, SETSPRITECOLORMOD_COLOR );
break;
case FN_SetSpriteAlpha: //Sub Procedure
rc_setSpriteAlpha( SETSPRITEALPHA_SPRITE, SETSPRITEALPHA_ALPHA );
break;
case FN_GetSpriteColorMod: //Number Function
rc_push_num(rc_getSpriteColorMod( GETSPRITECOLORMOD_SPRITE ));
break;
case FN_GetSpriteAlpha: //Number Function
rc_push_num(rc_getSpriteAlpha( GETSPRITEALPHA_SPRITE ));
break;
case FN_CreateSpriteAnimation: //Number Function
rc_push_num(rc_createSpriteAnimation( CREATESPRITEANIMATION_SPRITE, CREATESPRITEANIMATION_ANIM_LENGTH, CREATESPRITEANIMATION_SPEED ));
break;

View File

@@ -2559,6 +2559,16 @@ bool rc_getBilinearFilter()
return rc_bilinear_filter;
}
void rc_setAntiAliasMode( int aa_mode )
{
rc_anti_alias = (irr::video::E_ANTI_ALIASING_MODE) aa_mode;
}
int rc_getAntiAliasMode( )
{
return (int)rc_anti_alias;
}
void rc_setImageColorMod(int img_id, Uint32 color)
{
if(img_id < 0 || img_id >= rc_image.size())

View File

@@ -749,6 +749,7 @@ irr::core::array<rc_image_obj> rc_image;
irr::video::E_BLEND_OPERATION rc_blend_mode = irr::video::EBO_ADD;
bool rc_bilinear_filter = false;
irr::video::E_ANTI_ALIASING_MODE rc_anti_alias = irr::video::EAAM_OFF;
#define PRIM3D_LINE 1
#define PRIM3D_TRIANGLE 2
@@ -778,7 +779,8 @@ void rc_setDriverMaterial()
material.TextureLayer[0].BilinearFilter = rc_bilinear_filter;
material.MaterialTypeParam = irr::video::pack_textureBlendFunc(irr::video::EBF_SRC_ALPHA, irr::video::EBF_ONE_MINUS_SRC_ALPHA, irr::video::EMFN_MODULATE_1X, irr::video::EAS_TEXTURE | irr::video::EAS_VERTEX_COLOR);
material.BlendOperation = rc_blend_mode;
material.BlendOperation = irr::video::EBO_ADD;
//material.BlendOperation = irr::video::EBO_ADD;
material.AntiAliasing = rc_anti_alias;
material.MaterialType = irr::video::EMT_ONETEXTURE_BLEND;
@@ -860,6 +862,7 @@ void draw2DImage(irr::video::IVideoDriver *driver, irr::video::ITexture* texture
material.TextureLayer[0].BilinearFilter = rc_bilinear_filter;
material.MaterialTypeParam = irr::video::pack_textureBlendFunc(irr::video::EBF_SRC_ALPHA, irr::video::EBF_ONE_MINUS_SRC_ALPHA, irr::video::EMFN_MODULATE_1X, irr::video::EAS_TEXTURE | irr::video::EAS_VERTEX_COLOR);
material.BlendOperation = rc_blend_mode;
material.AntiAliasing = rc_anti_alias;
//material.BlendOperation = irr::video::EBO_ADD;
if (useAlphaChannel)
@@ -952,7 +955,7 @@ void draw2DImage2(irr::video::IVideoDriver *driver, irr::video::ITexture* textur
material.TextureLayer[0].BilinearFilter = rc_bilinear_filter; //TODO: Add option to switch this on/off
material.BlendOperation = rc_blend_mode;
material.MaterialTypeParam = irr::video::pack_textureBlendFunc(irr::video::EBF_SRC_ALPHA, irr::video::EBF_ONE_MINUS_SRC_ALPHA, irr::video::EMFN_MODULATE_1X, irr::video::EAS_TEXTURE | irr::video::EAS_VERTEX_COLOR);
//material.AntiAliasing = irr::video::EAAM_OFF;
material.AntiAliasing = rc_anti_alias;
if (useAlphaChannel)
material.MaterialType = irr::video::EMT_ONETEXTURE_BLEND;

View File

@@ -811,6 +811,51 @@ bool rc_spriteIsVisible(int spr_id)
return rc_sprite[spr_id].visible;
}
void rc_setSpriteColorMod(int spr_id, Uint32 color)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return;
if(!rc_sprite[spr_id].active)
return;
if(rc_sprite[spr_id].image_id >= 0)
rc_sprite[spr_id].color_mod = irr::video::SColor(color);
}
void rc_setSpriteAlpha(int spr_id, Uint32 alpha)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return;
if(!rc_sprite[spr_id].active)
return;
if(rc_sprite[spr_id].image_id >= 0)
rc_sprite[spr_id].alpha = (Uint8)alpha;
}
Uint32 rc_getSpriteColorMod(int spr_id)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return 0;
if(!rc_sprite[spr_id].active)
return 0;
return rc_sprite[spr_id].color_mod.color;
}
Uint32 rc_getSpriteAlpha(int spr_id)
{
if(spr_id < 0 || spr_id >= rc_sprite.size())
return 0;
if(!rc_sprite[spr_id].active)
return 0;
return (Uint32)rc_sprite[spr_id].alpha;
}
//-----------------------------------PHYSICS----------------------------------------------------------------------------------