A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectId.hh
1#pragma once
2
3#include <Common.hh>
4
5namespace Field {
6
7enum class ObjectId {
8 None = 0x0,
9 Psea = 0x2,
10 Itembox = 0x65,
11 DummyPole = 0x066,
12 Woodbox = 0x70,
13 SunDS = 0x72,
14 WLWallGC = 0xcb,
15 CarA1 = 0xcc,
16 Basabasa = 0xcd,
17 HeyhoShipGBA = 0xce,
18 KoopaBall = 0xcf,
19 KartTruck = 0xd0,
20 CarBody = 0xd1,
21 W_Woodbox = 0xd3,
22 ItemboxLine = 0xd5,
23 VolcanoBall = 0xd6,
24 PenguinS = 0xd7,
25 PenguinM = 0xd8,
26 Dossunc = 0xdb,
27 DossuncSoko = 0xdc,
28 Boble = 0xdd,
29 Hanachan = 0xe2,
30 Seagull = 0xe3,
31 Crab = 0xe5,
32 BasabasaDummy = 0xe6,
33 CarA2 = 0xe7,
34 CarA3 = 0xe8,
35 Hwanwan = 0xe9,
36 HeyhoBallGBA = 0xea,
37 DokanSFC = 0x12e,
38 CastleTree1c = 0x130,
39 MarioTreeGCc = 0x134,
40 PeachTreeGCc = 0x138,
41 ObakeBlockSFCc = 0x13c,
42 WLDokanGC = 0x13f,
43 MarioGo64c = 0x140,
44 KinokoT1 = 0x142,
45 Pylon = 0x144,
46 PalmTree = 0x145,
47 Parasol = 0x146,
48 HeyhoTreeGBAc = 0x14a,
49 GardenTreeDSc = 0x151,
50 DKtreeA64c = 0x158,
51 DKTreeB64c = 0x15a,
52 TownTreeDsc = 0x15b,
53 OilSFC = 0x15d,
54 ParasolR = 0x16e,
55 ObakeBlock2SFCc = 0x16f,
56 ObakeBlock3SFCc = 0x170,
57 KoopaFigure64 = 0x18b,
58 Kuribo = 0x191,
59 Choropu = 0x192,
60 Cow = 0x193,
61 PakkunF = 0x194,
62 WLFirebarGC = 0x195,
63 Poihana = 0x197,
64 DKRockGC = 0x198,
65 Sanbo = 0x199,
66 Choropu2 = 0x19a,
67 TruckWagon = 0x19b,
68 Heyho = 0x19c,
69 Press = 0x19d,
70 PressSoko = 0x19e,
71 WLFireRingGC = 0x1a1,
72 PakkunDokan = 0x1a2,
73 FireSnake = 0x1a4,
74 KoopaFirebar = 0x1a5,
75 Propeller = 0x1a6,
76 DCPillarC = 0x1a7,
77 FireSnakeV = 0x1a8,
78 PuchiPakkun = 0x1aa,
79 KinokoUd = 0x1f5,
80 KinokoBend = 0x1f6,
81 VolcanoRock = 0x1f7,
82 BulldozerL = 0x1f8,
83 BulldozerR = 0x1f9,
84 KinokoNm = 0x1fa,
85 Crane = 0x1fb,
86 VolcanoPiece = 0x1fc,
87 FlamePole = 0x1fd,
88 TwistedWay = 0x1fe,
89 TownBridge = 0x1ff,
90 DKShip64 = 0x200,
91 Turibashi = 0x202,
92 FlamePoleEff = 0x203,
93 Aurora = 0x204,
94 DCPillar = 0x208,
95 Sandcone = 0x209,
96 FlamePoleV = 0x212,
97 FlamePoleVBig = 0x216,
98 Ami = 0x20e,
99 Mdush = 0x217,
100 BeltEasy = 0x25a,
101 BeltCrossing = 0x25b,
102 BeltCurveA = 0x25c,
103 Escalator = 0x25e,
104 EscalatorGroup = 0x260,
105};
106
107enum class BlacklistedObjectId {
108 Itembox = 0x65,
109 CastleTree2 = 0x131,
110 CastleFlower1 = 0x132,
111 MarioTreeGC = 0x133,
112 DonkyTree1GC = 0x135,
113 DonkyTree2GC = 0x136,
114 PeachTreeGC = 0x137,
115 PeachHunsuiGC = 0x141,
116 GardenTreeDS = 0x150,
117 FlagA1 = 0x152,
118 FlagA2 = 0x153,
119 FlagB1 = 0x154,
120 FlagB2 = 0x155,
121 FlagA3 = 0x156,
122 DKTreeA64 = 0x157,
123 DKTreeB64 = 0x159,
124 MiiBalloon = 0x160,
125 Windmill = 0x161,
126 TownTreeDS = 0x163,
127 Hanabi = 0x16a,
128 LightHouse = 0x16d,
129 FlagA5 = 0x180,
130 SentakuDS = 0x189,
131 FlagB3 = 0x2c4,
132 FlagB4 = 0x2c7,
133 UtsuboDokan = 0x2d6,
134 EnvSnow = 0x2ef,
135};
136
137static constexpr bool IsObjectBlacklisted(u16 id) {
138 BlacklistedObjectId objectId = static_cast<BlacklistedObjectId>(id);
139 switch (objectId) {
140 // Disabled collision
141 case BlacklistedObjectId::Itembox:
142 return true;
143
144 // No collision
145 case BlacklistedObjectId::CastleTree2:
146 case BlacklistedObjectId::CastleFlower1:
147 case BlacklistedObjectId::MarioTreeGC:
148 case BlacklistedObjectId::DonkyTree1GC:
149 case BlacklistedObjectId::DonkyTree2GC:
150 case BlacklistedObjectId::PeachTreeGC:
151 case BlacklistedObjectId::PeachHunsuiGC:
152 case BlacklistedObjectId::GardenTreeDS:
153 case BlacklistedObjectId::FlagA1:
154 case BlacklistedObjectId::FlagA2:
155 case BlacklistedObjectId::FlagB1:
156 case BlacklistedObjectId::FlagB2:
157 case BlacklistedObjectId::FlagA3:
158 case BlacklistedObjectId::DKTreeA64:
159 case BlacklistedObjectId::Windmill:
160 case BlacklistedObjectId::TownTreeDS:
161 case BlacklistedObjectId::Hanabi:
162 case BlacklistedObjectId::LightHouse:
163 case BlacklistedObjectId::FlagA5:
164 case BlacklistedObjectId::SentakuDS:
165 case BlacklistedObjectId::FlagB3:
166 case BlacklistedObjectId::FlagB4:
167 case BlacklistedObjectId::UtsuboDokan:
168 case BlacklistedObjectId::EnvSnow:
169 return true;
170
171 default:
172 return false;
173 }
174}
175
176} // namespace Field
This header houses common data types such as our integral types and enums.
Pertains to collision.