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