Path: blob/master/SonicMania/Objects/Common/BGSwitch.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: BGSwitch Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectBGSwitch *BGSwitch;1011void BGSwitch_Update(void)12{13RSDK_THIS(BGSwitch);1415for (BGSwitch->screenID = 0; BGSwitch->screenID < SCREEN_COUNT; BGSwitch->screenID++) {16EntityCamera *camera = RSDK_GET_ENTITY(SLOT_CAMERA1 + BGSwitch->screenID, Camera);17if (!camera->classID)18break;1920if (abs(camera->position.x - self->position.x) < self->size.x && abs(camera->position.y - self->position.y) < self->size.y) {21if (self->bgID < LAYER_COUNT)22BGSwitch->layerIDs[BGSwitch->screenID] = self->bgID;23}2425int32 id = BGSwitch->layerIDs[BGSwitch->screenID];26if (id != BGSwitch->layerIDs[BGSwitch->screenID + 4]) {27BGSwitch->layerIDs[BGSwitch->screenID + 4] = id;28StateMachine_Run(BGSwitch->switchCallback[id]);29}30}31}3233void BGSwitch_LateUpdate(void) {}3435void BGSwitch_StaticUpdate(void) {}3637void BGSwitch_Draw(void) {}3839void BGSwitch_Create(void *data)40{41RSDK_THIS(BGSwitch);4243if (!SceneInfo->inEditor) {44self->updateRange.x = self->size.x;45self->updateRange.y = self->size.y;46self->active = ACTIVE_BOUNDS;47}48}4950void BGSwitch_StageLoad(void)51{52BGSwitch->layerIDs[4] = -1;53BGSwitch->layerIDs[5] = -1;54BGSwitch->layerIDs[6] = -1;55BGSwitch->layerIDs[7] = -1;56}5758#if GAME_INCLUDE_EDITOR59void BGSwitch_EditorDraw(void)60{61RSDK_THIS(BGSwitch);6263self->updateRange.x = self->size.x;64self->updateRange.y = self->size.y;6566RSDK.SetSpriteAnimation(BGSwitch->aniFrames, 0, &self->animator, true, 5);67RSDK.DrawSprite(&self->animator, NULL, false);6869if (showGizmos()) {70// Bounds71RSDK_DRAWING_OVERLAY(true);72DrawHelpers_DrawRectOutline(self->position.x, self->position.y, self->size.x, self->size.y, 0xFFFF00);73RSDK_DRAWING_OVERLAY(false);74}75}7677void BGSwitch_EditorLoad(void) { BGSwitch->aniFrames = RSDK.LoadSpriteAnimation("Editor/EditorIcons.bin", SCOPE_STAGE); }78#endif7980void BGSwitch_Serialize(void)81{82RSDK_EDITABLE_VAR(BGSwitch, VAR_VECTOR2, size);83RSDK_EDITABLE_VAR(BGSwitch, VAR_UINT8, bgID);84}858687