Path: blob/main/RSDKv4/NativeObjects/MenuBG.cpp
817 views
#include "RetroEngine.hpp"12void MenuBG_Create(void *objPtr)3{4RSDK_THIS(MenuBG);5self->textureID = LoadTexture("Data/Game/Menu/BG1.png", TEXFMT_RGBA5551);6self->bgCircle1 = LoadMesh("Data/Game/Models/BGCircle1.bin", -1);7self->bgCircle2 = LoadMesh("Data/Game/Models/BGCircle2.bin", -1);8self->bgLines = LoadMesh("Data/Game/Models/BGLines.bin", -1);9SetMeshAnimation(self->bgLines, &self->animator, 0, 40, 0.0);10self->animator.loopAnimation = true;11self->fadeR = -96;12self->fadeG = -64;13self->fadeB = -8;14self->isFading = true;15SetMeshVertexColors(self->bgCircle1, 0xE0, 0xD0, 0xC0, 0xFF);16SetMeshVertexColors(self->bgCircle2, 0xE0, 0xD0, 0xC0, 0xFF);17SetMeshVertexColors(self->bgLines, 0xE0, 0, 0, 0xFF);18self->Ztrans1 = -32.0;19self->Ztrans2 = -64.0;20self->ZtransRender = -128.0;21}22void MenuBG_Main(void *objPtr)23{24RSDK_THIS(MenuBG);25if (self->isFading) {26SetRenderBlendMode(RENDER_BLEND_NONE);27self->fadeTimer += Engine.deltaTime;28if (self->fadeTimer > 1.5)29self->isFading = false;3031if (self->fadeR < 0xF8)32self->fadeR += 8;3334if (self->fadeG < 0xF8)35self->fadeG += 8;3637if (self->fadeB < 0xF8)38self->fadeB += 8;3940if (self->alpha < 0x100)41self->alpha += 0x10;4243self->Ztrans1 = ((160.0 - self->Ztrans1) / (16.0 * Engine.deltaTime * 60.0)) + self->Ztrans1;44self->Ztrans2 = ((160.0 - self->Ztrans2) / (18.0 * Engine.deltaTime * 60.0)) + self->Ztrans2;45self->ZtransRender = ((160.0 - self->ZtransRender) / (Engine.deltaTime * 60.0 * 20.0)) + self->ZtransRender;46RenderRect(-SCREEN_CENTERX_F, SCREEN_CENTERY_F, 160.0, SCREEN_XSIZE_F, SCREEN_YSIZE_F, self->fadeR, self->fadeG, self->fadeB, 255);47SetRenderBlendMode(RENDER_BLEND_ALPHA);48SetRenderVertexColor(224, 208, 192);49RenderImage(-64.0, 0.0, 160.0, 0.45, 0.45, 256.0, 256.0, 512.0, 512.0, 0.0, 0.0, self->alpha, self->textureID);50SetRenderVertexColor(255, 255, 255);51SetRenderBlendMode(RENDER_BLEND_NONE);52self->circle1Rot = self->circle1Rot - Engine.deltaTime;53if (self->circle1Rot < -M_PI_2)54self->circle1Rot += M_PI_2;55self->circle2Rot += Engine.deltaTime;56if (self->circle2Rot > M_PI_2)57self->circle2Rot -= M_PI_2;58NewRenderState();59MatrixRotateZF(&self->circle1, self->circle1Rot);60MatrixTranslateXYZF(&self->matrixTemp, 120.0, 94.0, self->Ztrans1);61MatrixMultiplyF(&self->circle1, &self->matrixTemp);62SetRenderMatrix(&self->circle1);63RenderMesh(self->bgCircle1, MESH_COLORS, false);6465MatrixRotateZF(&self->circle2, self->circle2Rot);66MatrixTranslateXYZF(&self->matrixTemp, 4.0, 150.0, self->Ztrans2);67MatrixMultiplyF(&self->circle2, &self->matrixTemp);68SetRenderMatrix(&self->circle2);69RenderMesh(self->bgCircle2, MESH_COLORS, false);7071MatrixTranslateXYZF(&self->renderMatrix, 0.0, 0.0, self->ZtransRender);72}73else {74SetRenderBlendMode(RENDER_BLEND_NONE);75RenderRect(-SCREEN_CENTERX_F, SCREEN_CENTERY_F, 160.0, SCREEN_XSIZE_F, SCREEN_YSIZE_F, 248, 248, 248, 255);76SetRenderBlendMode(RENDER_BLEND_ALPHA);77SetRenderVertexColor(0xE0, 0xD0, 0xC0);78RenderImage(-64.0, 0.0, 160.0, 0.45, 0.45, 256.0, 256.0, 512.0, 512.0, 0.0, 0.0, 255, self->textureID);79SetRenderVertexColor(0xFF, 0xFF, 0xFF);80SetRenderBlendMode(RENDER_BLEND_NONE);81self->circle1Rot -= Engine.deltaTime;82if (self->circle1Rot < -M_PI_2)83self->circle1Rot += M_PI_2;84self->circle2Rot += Engine.deltaTime;85if (self->circle2Rot > M_PI_2)86self->circle2Rot -= M_PI_2;87NewRenderState();88MatrixRotateZF(&self->circle1, self->circle1Rot);89MatrixTranslateXYZF(&self->matrixTemp, 120.0, 94.0, 160.0);90MatrixMultiplyF(&self->circle1, &self->matrixTemp);91SetRenderMatrix(&self->circle1);92RenderMesh(self->bgCircle1, MESH_COLORS, false);9394MatrixRotateZF(&self->circle2, self->circle2Rot);95MatrixTranslateXYZF(&self->matrixTemp, 4.0, 150.0, 160.0);96MatrixMultiplyF(&self->circle2, &self->matrixTemp);97SetRenderMatrix(&self->circle2);98RenderMesh(self->bgCircle2, MESH_COLORS, false);99100MatrixTranslateXYZF(&self->renderMatrix, 0.0, 0.0, 160.0);101}102SetRenderMatrix(&self->renderMatrix);103self->animator.animationSpeed = 8.0 * Engine.deltaTime;104AnimateMesh(self->bgLines, &self->animator);105RenderMesh(self->bgLines, MESH_COLORS, false);106SetRenderMatrix(NULL);107}108109110