Use new/delete in C++ example

This commit is contained in:
Crayon2000 2021-07-18 12:38:15 -04:00
parent 9aa8be58e2
commit c712562db6

View file

@ -27,7 +27,7 @@
#define RANDOM ((((float)(rand() % 12))/12)-0.5) #define RANDOM ((((float)(rand() % 12))/12)-0.5)
// Basic structure to hold particle data // Basic structure to hold particle data
typedef struct Particle { struct Particle {
u8 id; u8 id;
float x, y; float x, y;
float sx, sy; float sx, sy;
@ -38,7 +38,7 @@ typedef struct Particle {
float sscale, salpha; float sscale, salpha;
float scolor; float scolor;
GRRLIB_texImg *tex; GRRLIB_texImg *tex;
} Particle; };
// Vector used as a container to iterate through all members of GRRLIB_texImg // Vector used as a container to iterate through all members of GRRLIB_texImg
static std::vector<GRRLIB_texImg *> TextureList; static std::vector<GRRLIB_texImg *> TextureList;
@ -95,7 +95,6 @@ int main() {
// Resetting Vars // Resetting Vars
GRRLIB_SetBlend( GRRLIB_BLEND_ALPHA ); GRRLIB_SetBlend( GRRLIB_BLEND_ALPHA );
u32 ParticleCnt = 0;
// WiiMote IR Viewport correction // WiiMote IR Viewport correction
int P1MX = P1Mote.sx - 150; int P1MX = P1Mote.sx - 150;
@ -115,11 +114,10 @@ int main() {
if (updateParticle((*PartIter)) == true) { if (updateParticle((*PartIter)) == true) {
GRRLIB_DrawImg( (*PartIter)->x, (*PartIter)->y, (*PartIter)->tex, (*PartIter)->rot, (*PartIter)->scale, (*PartIter)->scale, RGBA( (*PartIter)->red, (*PartIter)->green, (*PartIter)->blue, ClampVar8((*PartIter)->alpha*255) ) ); GRRLIB_DrawImg( (*PartIter)->x, (*PartIter)->y, (*PartIter)->tex, (*PartIter)->rot, (*PartIter)->scale, (*PartIter)->scale, RGBA( (*PartIter)->red, (*PartIter)->green, (*PartIter)->blue, ClampVar8((*PartIter)->alpha*255) ) );
} else { } else {
free( (*PartIter) ); delete (*PartIter);
ParticleList.erase(PartIter); ParticleList.erase(PartIter);
continue; continue;
} }
ParticleCnt++;
PartIter++; PartIter++;
} }
@ -130,7 +128,7 @@ int main() {
GRRLIB_Rectangle( 28, 28, 280, 20, RGBA(0, 0, 0, 160), 1 ); GRRLIB_Rectangle( 28, 28, 280, 20, RGBA(0, 0, 0, 160), 1 );
GRRLIB_Printf ( 32, 32, GFX_Font, 0xFFFFFFFF, 1, "Point your WiiMote on the screen." ); GRRLIB_Printf ( 32, 32, GFX_Font, 0xFFFFFFFF, 1, "Point your WiiMote on the screen." );
GRRLIB_Rectangle( 28, 48, 200, 16, RGBA(0, 0, 0, 160), 1 ); GRRLIB_Rectangle( 28, 48, 200, 16, RGBA(0, 0, 0, 160), 1 );
GRRLIB_Printf ( 32, 48, GFX_Font, 0xFFFFFFFF, 1, "Number of Particle: %d", ParticleCnt ); GRRLIB_Printf ( 32, 48, GFX_Font, 0xFFFFFFFF, 1, "Number of Particle: %d", ParticleList.size() );
GRRLIB_Rectangle( 28, 64, 64, 16, RGBA(0, 0, 0, 160), 1 ); GRRLIB_Rectangle( 28, 64, 64, 16, RGBA(0, 0, 0, 160), 1 );
GRRLIB_Printf ( 32, 64, GFX_Font, 0xFFFFFFFF, 1, "FPS: %d", FPS ); GRRLIB_Printf ( 32, 64, GFX_Font, 0xFFFFFFFF, 1, "FPS: %d", FPS );
@ -167,7 +165,7 @@ static void createEffect( u8 id, int _x, int _y ) {
} }
static void createParticle( u8 _id, int _x, int _y, float _scale, float _alpha, u8 _red, u8 _green, u8 _blue ) { static void createParticle( u8 _id, int _x, int _y, float _scale, float _alpha, u8 _red, u8 _green, u8 _blue ) {
Particle *part = (struct Particle *)calloc(1, sizeof(Particle)); Particle *part = new Particle();
part->id = _id; part->id = _id;
part->x = _x; part->x = _x;
part->y = _y; part->y = _y;