27 virtual f32 getPathLength()
const = 0;
28 virtual std::span<const RailLineTransition> getLinearTransitions()
const = 0;
29 virtual std::span<const RailSplineTransition> getSplineTransitions()
const = 0;
30 virtual s32 getEstimatorSampleCount()
const = 0;
31 virtual f32 getEstimatorStep()
const = 0;
32 virtual std::span<const f32> getPathPercentages()
const = 0;
35 void checkSphereFull();
37 [[nodiscard]]
u16 pointCount()
const {
41 [[nodiscard]]
bool isOscillating()
const {
42 return m_isOscillating;
45 [[nodiscard]] std::span<const System::MapdataPointInfo::Point> points()
const {
46 return m_points.view();
50 [[nodiscard]]
const EGG::Vector3f &pointPos(u16 idx)
const {
51 ASSERT(idx < m_pointCount);
52 return m_points[idx].pos;
55 [[nodiscard]]
const EGG::Vector3f &floorNrm(u16 idx)
const {
56 ASSERT(!m_floorNrms.empty() && idx < m_floorNrms.size());
57 return m_floorNrms[idx];
61 virtual void onPointsChanged() = 0;
62 virtual void onPointAdded() = 0;
66 owning_span<System::MapdataPointInfo::Point> m_points;
73 owning_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]] std::span<const f32> getPathPercentages()
const override {
141 return m_pathPercentages.
view();
146 [[nodiscard]] f32 getPathLength()
const override {
151 [[nodiscard]] std::span<const RailLineTransition> getLinearTransitions()
const override {
153 return EMPTY_TRANSITIONS.
view();
157 [[nodiscard]] std::span<const RailSplineTransition> getSplineTransitions()
const override {
158 return m_transitions.view();
161 void onPointsChanged()
override;
162 void onPointAdded()
override;
164 void invalidateTransitions(
bool lastOnly);
175 u16 m_transitionCount;
177 u32 m_estimatorSampleCount;
182 bool m_doNotAllocatePathPercentages;