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 Wanwan = 0x196,
64 Poihana = 0x197,
65 DKRockGC = 0x198,
66 Sanbo = 0x199,
67 Choropu2 = 0x19a,
68 TruckWagon = 0x19b,
69 Heyho = 0x19c,
70 Press = 0x19d,
71 PressSoko = 0x19e,
72 WLFireRingGC = 0x1a1,
73 PakkunDokan = 0x1a2,
74 FireSnake = 0x1a4,
75 KoopaFirebar = 0x1a5,
76 Propeller = 0x1a6,
77 DCPillarC = 0x1a7,
78 FireSnakeV = 0x1a8,
79 PuchiPakkun = 0x1aa,
80 KinokoUd = 0x1f5,
81 KinokoBend = 0x1f6,
82 VolcanoRock = 0x1f7,
83 BulldozerL = 0x1f8,
84 BulldozerR = 0x1f9,
85 KinokoNm = 0x1fa,
86 Crane = 0x1fb,
87 VolcanoPiece = 0x1fc,
88 FlamePole = 0x1fd,
89 TwistedWay = 0x1fe,
90 TownBridge = 0x1ff,
91 DKShip64 = 0x200,
92 Turibashi = 0x202,
93 FlamePoleEff = 0x203,
94 Aurora = 0x204,
95 DCPillar = 0x208,
96 Sandcone = 0x209,
97 FlamePoleV = 0x212,
98 FlamePoleVBig = 0x216,
99 Ami = 0x20e,
100 Mdush = 0x217,
101 BeltEasy = 0x25a,
102 BeltCrossing = 0x25b,
103 BeltCurveA = 0x25c,
104 Escalator = 0x25e,
105 EscalatorGroup = 0x260,
106};
107
108enum class BlacklistedObjectId {
109 Itembox = 0x65,
110 CastleTree2 = 0x131,
111 CastleFlower1 = 0x132,
112 MarioTreeGC = 0x133,
113 DonkyTree1GC = 0x135,
114 DonkyTree2GC = 0x136,
115 PeachTreeGC = 0x137,
116 PeachHunsuiGC = 0x141,
117 GardenTreeDS = 0x150,
118 FlagA1 = 0x152,
119 FlagA2 = 0x153,
120 FlagB1 = 0x154,
121 FlagB2 = 0x155,
122 FlagA3 = 0x156,
123 DKTreeA64 = 0x157,
124 DKTreeB64 = 0x159,
125 MiiBalloon = 0x160,
126 Windmill = 0x161,
127 TownTreeDS = 0x163,
128 Hanabi = 0x16a,
129 LightHouse = 0x16d,
130 FlagA5 = 0x180,
131 SentakuDS = 0x189,
132 FlagB3 = 0x2c4,
133 FlagB4 = 0x2c7,
134 UtsuboDokan = 0x2d6,
135 EnvSnow = 0x2ef,
136};
137
138static constexpr bool IsObjectBlacklisted(u16 id) {
139 BlacklistedObjectId objectId = static_cast<BlacklistedObjectId>(id);
140 switch (objectId) {
141 // Disabled collision
142 case BlacklistedObjectId::Itembox:
143 return true;
144
145 // No collision
146 case BlacklistedObjectId::CastleTree2:
147 case BlacklistedObjectId::CastleFlower1:
148 case BlacklistedObjectId::MarioTreeGC:
149 case BlacklistedObjectId::DonkyTree1GC:
150 case BlacklistedObjectId::DonkyTree2GC:
151 case BlacklistedObjectId::PeachTreeGC:
152 case BlacklistedObjectId::PeachHunsuiGC:
153 case BlacklistedObjectId::GardenTreeDS:
154 case BlacklistedObjectId::FlagA1:
155 case BlacklistedObjectId::FlagA2:
156 case BlacklistedObjectId::FlagB1:
157 case BlacklistedObjectId::FlagB2:
158 case BlacklistedObjectId::FlagA3:
159 case BlacklistedObjectId::DKTreeA64:
160 case BlacklistedObjectId::Windmill:
161 case BlacklistedObjectId::TownTreeDS:
162 case BlacklistedObjectId::Hanabi:
163 case BlacklistedObjectId::LightHouse:
164 case BlacklistedObjectId::FlagA5:
165 case BlacklistedObjectId::SentakuDS:
166 case BlacklistedObjectId::FlagB3:
167 case BlacklistedObjectId::FlagB4:
168 case BlacklistedObjectId::UtsuboDokan:
169 case BlacklistedObjectId::EnvSnow:
170 return true;
171
172 default:
173 return false;
174 }
175}
176
177} // namespace Field
This header houses common data types such as our integral types and enums.
Pertains to collision.