Path: blob/master/SonicMania/Objects/MMZ/ConveyorBelt.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: ConveyorBelt Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectConveyorBelt *ConveyorBelt;1011void ConveyorBelt_Update(void)12{13RSDK_THIS(ConveyorBelt);1415foreach_active(Player, player)16{17if (Player_CheckCollisionTouch(player, self, &self->hitbox)) {18if (player->onGround)19player->position.x += self->speed << 14;20}21}22}2324void ConveyorBelt_LateUpdate(void) {}2526void ConveyorBelt_StaticUpdate(void) {}2728void ConveyorBelt_Draw(void) {}2930void ConveyorBelt_Create(void *data)31{32RSDK_THIS(ConveyorBelt);3334self->active = ACTIVE_BOUNDS;35self->visible = false;36self->updateRange.x = 0x400000;37self->updateRange.y = 0x400000;38self->drawGroup = Zone->objectDrawGroup[1];3940if (SceneInfo->inEditor) {41if (!self->speed)42self->speed = -8;4344if (!self->size.x)45self->size.x = 0xC00000;4647if (!self->size.y)48self->size.y = 0x200000;49}5051self->hitbox.left = -(self->size.x >> 17) - 16;52self->hitbox.top = -(self->size.y >> 17) - 16;53self->hitbox.right = (self->size.x >> 17) + 16;54self->hitbox.bottom = (self->size.y >> 17) + 16;5556RSDK.SetSpriteAnimation(ConveyorBelt->aniFrames, 0, &self->animator, true, 0);57}5859void ConveyorBelt_StageLoad(void)60{61if (RSDK.CheckSceneFolder("MMZ"))62ConveyorBelt->aniFrames = RSDK.LoadSpriteAnimation("MMZ/ConveyorWheel.bin", SCOPE_STAGE);63}6465#if GAME_INCLUDE_EDITOR66void ConveyorBelt_EditorDraw(void)67{68RSDK_THIS(ConveyorBelt);6970ConveyorBelt_Create(NULL);7172RSDK.DrawSprite(&self->animator, NULL, false);7374if (showGizmos()) {75RSDK_DRAWING_OVERLAY(true);7677DrawHelpers_DrawHitboxOutline(self->position.x, self->position.y, &self->hitbox, FLIP_NONE, 0xFFFF00);7879RSDK_DRAWING_OVERLAY(false);80}81}8283void ConveyorBelt_EditorLoad(void) { ConveyorBelt->aniFrames = RSDK.LoadSpriteAnimation("MMZ/ConveyorWheel.bin", SCOPE_STAGE); }84#endif8586void ConveyorBelt_Serialize(void)87{88RSDK_EDITABLE_VAR(ConveyorBelt, VAR_VECTOR2, size);89RSDK_EDITABLE_VAR(ConveyorBelt, VAR_INT32, speed);90}919293