Path: blob/master/SonicMania/Objects/Title/Title3DSprite.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: Title3DSprite Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectTitle3DSprite *Title3DSprite;1011void Title3DSprite_Update(void)12{13RSDK_THIS(Title3DSprite);1415self->relativePos.x = (-((self->position.y >> 8) * RSDK.Sin1024(TitleBG->angle)) - (self->position.x >> 8) * RSDK.Cos1024(TitleBG->angle)) >> 10;16self->relativePos.y = (+((self->position.y >> 8) * RSDK.Cos1024(TitleBG->angle)) - (self->position.x >> 8) * RSDK.Sin1024(TitleBG->angle)) >> 10;1718self->zdepth = self->relativePos.y;19}2021void Title3DSprite_LateUpdate(void) {}2223void Title3DSprite_StaticUpdate(void) {}2425void Title3DSprite_Draw(void)26{27RSDK_THIS(Title3DSprite);2829int32 depth = self->zdepth + Title3DSprite->baseDepth;30if (depth && depth >= 0x100) {31self->scale.x = MIN(0x18000 * Title3DSprite->islandSize / depth, 0x200);32self->scale.y = self->scale.x;3334Vector2 drawPos;35drawPos.x = (Title3DSprite->islandSize * self->relativePos.x / depth + ScreenInfo->center.x) << 16;36drawPos.y = (Title3DSprite->islandSize * Title3DSprite->height / depth + 152) << 16;37RSDK.DrawSprite(&self->animator, &drawPos, true);38}39}4041void Title3DSprite_Create(void *data)42{43RSDK_THIS(Title3DSprite);4445if (!SceneInfo->inEditor) {46RSDK.SetSpriteAnimation(Title3DSprite->aniFrames, 5, &self->animator, true, self->frame);47self->position.x -= 0x2000000;48self->position.y -= 0x2000000;49self->active = ACTIVE_NORMAL;50self->visible = false;51self->drawGroup = 2;52self->drawFX = FX_NONE;53}54}5556void Title3DSprite_StageLoad(void)57{58Title3DSprite->aniFrames = RSDK.LoadSpriteAnimation("Title/Background.bin", SCOPE_STAGE);5960Title3DSprite->islandSize = 0x90;61Title3DSprite->height = 0x2800;62Title3DSprite->baseDepth = 0xA000;63}6465#if GAME_INCLUDE_EDITOR66void Title3DSprite_EditorDraw(void)67{68RSDK_THIS(Title3DSprite);6970RSDK.SetSpriteAnimation(Title3DSprite->aniFrames, 5, &self->animator, true, self->frame);7172RSDK.DrawSprite(&self->animator, NULL, false);73}7475void Title3DSprite_EditorLoad(void)76{77Title3DSprite->aniFrames = RSDK.LoadSpriteAnimation("Title/Background.bin", SCOPE_STAGE);7879RSDK_ACTIVE_VAR(Title3DSprite, frame);80RSDK_ENUM_VAR("Mountain (Large)", TITLE3DSPRITE_MOUNTAIN_L);81RSDK_ENUM_VAR("Mountain (Medium)", TITLE3DSPRITE_MOUNTAIN_M);82RSDK_ENUM_VAR("Mountain (Small)", TITLE3DSPRITE_MOUNTAIN_S);83RSDK_ENUM_VAR("Tree", TITLE3DSPRITE_TREE);84RSDK_ENUM_VAR("Bush", TITLE3DSPRITE_BUSH);85}86#endif8788void Title3DSprite_Serialize(void) { RSDK_EDITABLE_VAR(Title3DSprite, VAR_ENUM, frame); }899091