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