27 virtual f32 getPathLength()
const = 0;
28 virtual const std::span<RailLineTransition> &getLinearTransitions()
const = 0;
29 virtual const std::span<RailSplineTransition> &getSplineTransitions()
const = 0;
30 virtual s32 getEstimatorSampleCount()
const = 0;
31 virtual f32 getEstimatorStep()
const = 0;
32 virtual const std::span<f32> &getPathPercentages()
const = 0;
35 void checkSphereFull();
37 [[nodiscard]]
u16 pointCount()
const {
41 [[nodiscard]]
bool isOscillating()
const {
42 return m_isOscillating;
45 [[nodiscard]]
const std::span<System::MapdataPointInfo::Point> &points()
const {
51 ASSERT(idx < m_pointCount);
52 return m_points[idx].pos;
56 ASSERT(m_floorNrms.data() && idx < m_floorNrms.size());
57 return m_floorNrms[idx];
61 virtual void onPointsChanged() = 0;
62 virtual void onPointAdded() = 0;
66 std::span<System::MapdataPointInfo::Point> m_points;
73 std::span<EGG::Vector3f> m_floorNrms;
130 [[nodiscard]] s32 getEstimatorSampleCount()
const override {
131 return m_estimatorSampleCount;
135 [[nodiscard]] f32 getEstimatorStep()
const override {
136 return m_estimatorStep;
140 [[nodiscard]]
const std::span<f32> &getPathPercentages()
const override {
141 return m_pathPercentages;
146 [[nodiscard]] f32 getPathLength()
const override {
151 [[nodiscard]]
const std::span<RailLineTransition> &getLinearTransitions()
const override {
152 static std::span<RailLineTransition> EMPTY_TRANSITIONS;
153 return EMPTY_TRANSITIONS;
157 [[nodiscard]]
const std::span<RailSplineTransition> &getSplineTransitions()
const override {
158 return m_transitions;
161 void onPointsChanged()
override;
162 void onPointAdded()
override;
164 void invalidateTransitions(
bool lastOnly);
175 u16 m_transitionCount;
176 std::span<RailSplineTransition> m_transitions;
177 u32 m_estimatorSampleCount;
179 std::span<f32> m_pathPercentages;
182 bool m_doNotAllocatePathPercentages;