Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
MapdataPointInfo.hh
1
#pragma once
2
3
#include "game/system/map/MapdataAccessorBase.hh"
4
5
#include <egg/math/Vector.hh>
6
#include <egg/util/Stream.hh>
7
8
#include <span>
9
10
namespace
Kinoko::System
{
11
12
class
MapdataPointInfo
{
13
public
:
14
struct
Point
{
15
EGG::Vector3f
pos;
16
u16
setting[2];
17
};
18
19
struct
SData
{
20
u16
pointCount;
21
u8 settings[2];
22
Point
points[];
23
};
24
STATIC_ASSERT(
sizeof
(
SData
) == 0x4);
25
26
MapdataPointInfo
(
const
SData
*data);
27
~MapdataPointInfo
();
28
29
void
read(
EGG::RamStream
&stream);
30
31
[[nodiscard]]
size_t
pointCount()
const
{
32
return
m_points.size();
33
}
34
35
[[nodiscard]] u8 setting(
size_t
idx)
const
{
36
ASSERT(idx < m_settings.size());
37
return
m_settings[idx];
38
}
39
40
[[nodiscard]]
const
owning_span<Point>
&points()
const
{
41
return
m_points;
42
}
43
44
private
:
45
[[maybe_unused]]
const
SData *m_rawData;
46
std::array<u8, 2> m_settings;
47
owning_span<Point> m_points;
48
};
49
50
class
MapdataPointInfoAccessor
51
:
public
MapdataAccessorBase
<MapdataPointInfo, MapdataPointInfo::SData> {
52
public
:
53
MapdataPointInfoAccessor
(
const
MapSectionHeader
*header);
54
~MapdataPointInfoAccessor
()
override
;
55
56
void
init(
const
MapdataPointInfo::SData
*start,
u16
count);
57
};
58
59
}
// namespace Kinoko::System
Kinoko::EGG::RamStream
A stream of data stored in memory.
Definition
Stream.hh:83
Kinoko::System::MapdataAccessorBase
Definition
MapdataAccessorBase.hh:13
Kinoko::System::MapdataPointInfoAccessor
Definition
MapdataPointInfo.hh:51
Kinoko::System::MapdataPointInfo
Definition
MapdataPointInfo.hh:12
Kinoko::owning_span
A contiguous storage container that manages the lifecycle of a buffer of a given size.
Definition
Types.hh:29
uint16_t
Kinoko::System
High-level handling for generic system operations, such as input reading, race configuration,...
Definition
CourseMap.cc:5
Kinoko::EGG::Vector3f
A 3D float vector.
Definition
Vector.hh:107
Kinoko::System::MapSectionHeader
Definition
MapdataAccessorBase.hh:7
Kinoko::System::MapdataPointInfo::Point
Definition
MapdataPointInfo.hh:14
Kinoko::System::MapdataPointInfo::SData
Definition
MapdataPointInfo.hh:19
game
system
map
MapdataPointInfo.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.12.0