mirror of
https://github.com/GRRLIB/GRRLIB.git
synced 2024-11-22 15:02:20 +00:00
Use C++11 / C++14 in Particle example
This is the only C++ code in the project and it will require at least devkitPPC release 28.
This commit is contained in:
parent
41ba167a30
commit
145f8e439d
1 changed files with 17 additions and 31 deletions
|
@ -26,7 +26,6 @@
|
||||||
// Random Number (0 - 1) in float
|
// Random Number (0 - 1) in float
|
||||||
#define RANDOM ((((float)(rand() % 12))/12)-0.5)
|
#define RANDOM ((((float)(rand() % 12))/12)-0.5)
|
||||||
|
|
||||||
using std::vector;
|
|
||||||
Mtx GXmodelView2D;
|
Mtx GXmodelView2D;
|
||||||
|
|
||||||
// Basic structure to hold particle data
|
// Basic structure to hold particle data
|
||||||
|
@ -44,9 +43,9 @@ typedef struct Particle {
|
||||||
} Particle;
|
} 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 vector<GRRLIB_texImg *> TextureList;
|
static std::vector<GRRLIB_texImg *> TextureList;
|
||||||
static vector<Particle *> ParticleList;
|
static std::vector<Particle *> ParticleList;
|
||||||
static vector<Particle *> ParticleListTmp;
|
static std::vector<Particle *> ParticleListTmp;
|
||||||
|
|
||||||
// Declare static functions
|
// Declare static functions
|
||||||
static void ExitGame();
|
static void ExitGame();
|
||||||
|
@ -58,10 +57,6 @@ static u8 ClampVar8 (f32 Value);
|
||||||
|
|
||||||
// Initialize general variables
|
// Initialize general variables
|
||||||
extern GXRModeObj *rmode;
|
extern GXRModeObj *rmode;
|
||||||
ir_t P1Mote;
|
|
||||||
short WinW;
|
|
||||||
short WinH;
|
|
||||||
int P1MX, P1MY;
|
|
||||||
|
|
||||||
// Prepare Graphics
|
// Prepare Graphics
|
||||||
GRRLIB_texImg *GFX_Background;
|
GRRLIB_texImg *GFX_Background;
|
||||||
|
@ -71,15 +66,14 @@ GRRLIB_texImg *GFX_Font;
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
u32 WPADKeyDown;
|
ir_t P1Mote;
|
||||||
|
|
||||||
u8 FPS = 0;
|
u8 FPS = 0;
|
||||||
u32 ParticleCnt = 0;
|
|
||||||
|
|
||||||
// Init GRRLIB & WiiUse
|
// Init GRRLIB & WiiUse
|
||||||
GRRLIB_Init();
|
GRRLIB_Init();
|
||||||
WinW = rmode->fbWidth;
|
short WinW = rmode->fbWidth;
|
||||||
WinH = rmode->efbHeight;
|
short WinH = rmode->efbHeight;
|
||||||
WPAD_Init();
|
WPAD_Init();
|
||||||
WPAD_SetIdleTimeout( 60*10 );
|
WPAD_SetIdleTimeout( 60*10 );
|
||||||
WPAD_SetDataFormat( WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR );
|
WPAD_SetDataFormat( WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR );
|
||||||
|
@ -96,38 +90,31 @@ int main() {
|
||||||
GRRLIB_SetMidHandle( GFX_Smoke, true );
|
GRRLIB_SetMidHandle( GFX_Smoke, true );
|
||||||
|
|
||||||
// Feed the vector with the textures
|
// Feed the vector with the textures
|
||||||
TextureList.push_back( GFX_Background );
|
TextureList = { GFX_Background, GFX_Crosshair, GFX_Smoke, GFX_Font };
|
||||||
TextureList.push_back( GFX_Crosshair );
|
|
||||||
TextureList.push_back( GFX_Smoke );
|
|
||||||
TextureList.push_back( GFX_Font );
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
WPAD_ScanPads();
|
WPAD_ScanPads();
|
||||||
WPADKeyDown = WPAD_ButtonsDown(WPAD_CHAN_0);
|
u32 WPADKeyDown = WPAD_ButtonsDown(WPAD_CHAN_0);
|
||||||
WPAD_SetVRes(WPAD_CHAN_0, WinW, WinH);
|
WPAD_SetVRes(WPAD_CHAN_0, WinW, WinH);
|
||||||
WPAD_IR(WPAD_CHAN_0, &P1Mote);
|
WPAD_IR(WPAD_CHAN_0, &P1Mote);
|
||||||
|
|
||||||
// Resetting Vars
|
// Resetting Vars
|
||||||
GRRLIB_SetBlend( GRRLIB_BLEND_ALPHA );
|
GRRLIB_SetBlend( GRRLIB_BLEND_ALPHA );
|
||||||
ParticleCnt = 0;
|
u32 ParticleCnt = 0;
|
||||||
|
|
||||||
// WiiMote IR Viewport correction
|
// WiiMote IR Viewport correction
|
||||||
P1MX = P1Mote.sx - 150;
|
int P1MX = P1Mote.sx - 150;
|
||||||
P1MY = P1Mote.sy - 150;
|
int P1MY = P1Mote.sy - 150;
|
||||||
|
|
||||||
// Drawing Background
|
// Drawing Background
|
||||||
GRRLIB_DrawImg( 0, 0, GFX_Background, 0, 1, 1, RGBA(255, 255, 255, 255) );
|
GRRLIB_DrawImg( 0, 0, GFX_Background, 0, 1, 1, RGBA(255, 255, 255, 255) );
|
||||||
|
|
||||||
// Add any pending objects into the main container
|
// Add any pending objects into the main container
|
||||||
if (ParticleListTmp.size()) {
|
ParticleList.insert(ParticleList.end(), ParticleListTmp.begin(), ParticleListTmp.end());
|
||||||
for(u32 i = 0; i<ParticleListTmp.size();i++) {
|
|
||||||
ParticleList.push_back(ParticleListTmp[i]);
|
|
||||||
}
|
|
||||||
ParticleListTmp.clear();
|
ParticleListTmp.clear();
|
||||||
}
|
|
||||||
|
|
||||||
// Update and draw all particles
|
// Update and draw all particles
|
||||||
for (vector<Particle *>::iterator PartIter = ParticleList.begin(); PartIter != ParticleList.end();) {
|
for (auto PartIter = ParticleList.begin(); PartIter != ParticleList.end();) {
|
||||||
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 {
|
||||||
|
@ -135,7 +122,7 @@ int main() {
|
||||||
ParticleList.erase(PartIter);
|
ParticleList.erase(PartIter);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ParticleCnt += 1;
|
ParticleCnt++;
|
||||||
PartIter++;
|
PartIter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,9 +242,8 @@ static bool updateParticle( Particle *part ) {
|
||||||
|
|
||||||
static void ExitGame() {
|
static void ExitGame() {
|
||||||
// Free all memory used by textures.
|
// Free all memory used by textures.
|
||||||
for (vector<GRRLIB_texImg *>::iterator TexIter = TextureList.begin(); TexIter != TextureList.end(); TexIter++) {
|
for (auto &TexIter : TextureList) {
|
||||||
free((*TexIter)->data);
|
GRRLIB_FreeTexture(TexIter);
|
||||||
free((*TexIter));
|
|
||||||
}
|
}
|
||||||
TextureList.clear();
|
TextureList.clear();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue