Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/SSZ/EggTower.c
338 views
1
// ---------------------------------------------------------------------
2
// RSDK Project: Sonic Mania
3
// Object Description: EggTower Object
4
// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges
5
// Decompiled by: Rubberduckycooly & RMGRich
6
// ---------------------------------------------------------------------
7
8
#include "Game.h"
9
10
ObjectEggTower *EggTower;
11
12
void EggTower_Update(void) {}
13
14
void EggTower_LateUpdate(void) {}
15
16
void EggTower_StaticUpdate(void) {}
17
18
void EggTower_Draw(void)
19
{
20
RSDK_THIS(EggTower);
21
22
int32 y = self->position.y - 160 * ((self->position.y - ((ScreenInfo->position.y + ScreenInfo->center.y) << 16)) >> 8);
23
if (y > (ScreenInfo->position.y + 288) << 16)
24
y -= (y - (ScreenInfo->position.y << 16) - 0x1200000) >> 1;
25
26
RSDK.MatrixScaleXYZ(&self->matWorld, self->scale.x, -self->scale.x, self->scale.x);
27
RSDK.MatrixTranslateXYZ(&self->matWorld, (ScreenInfo->position.x + ScreenInfo->center.x) << 16, y, 0, false);
28
RSDK.MatrixRotateY(&self->matTemp, (self->rotationX + ScreenInfo->position.x) / -6);
29
RSDK.MatrixMultiply(&self->matWorld, &self->matTemp, &self->matWorld);
30
31
RSDK.Prepare3DScene(EggTower->sceneIndex);
32
33
RSDK.AddModelTo3DScene(EggTower->modelIndex, EggTower->sceneIndex, S3D_SOLIDCOLOR_SHADED_BLENDED, &self->matWorld, NULL, 0x000000);
34
35
RSDK.Draw3DScene(EggTower->sceneIndex);
36
}
37
38
void EggTower_Create(void *data)
39
{
40
RSDK_THIS(EggTower);
41
42
if (!SceneInfo->inEditor) {
43
self->visible = true;
44
self->drawGroup = 1;
45
self->scale.x = 0x37C;
46
self->active = ACTIVE_NORMAL;
47
self->updateRange.x = 0x800000;
48
self->updateRange.y = 0x800000;
49
}
50
}
51
52
void EggTower_StageLoad(void)
53
{
54
EggTower->modelIndex = RSDK.LoadMesh("SSZ/EggTower.bin", SCOPE_STAGE);
55
EggTower->sceneIndex = RSDK.Create3DScene("View:EggTower", 0x2000, SCOPE_STAGE);
56
57
RSDK.SetDiffuseColor(EggTower->sceneIndex, 0xC0, 0xC0, 0xC0);
58
RSDK.SetDiffuseIntensity(EggTower->sceneIndex, 8, 8, 8);
59
RSDK.SetSpecularIntensity(EggTower->sceneIndex, 16, 16, 16);
60
}
61
62
#if GAME_INCLUDE_EDITOR
63
void EggTower_EditorDraw(void) {}
64
65
void EggTower_EditorLoad(void) {}
66
#endif
67
68
void EggTower_Serialize(void) {}
69
70