libBeatsaber/include/beatsaber-impl/beatlevelrenderhelperimpl.h

54 lines
1.4 KiB
C
Raw Normal View History

2021-06-14 14:02:42 +02:00
#pragma once
#include "beatlevelrenderhelper.h"
2021-07-09 00:56:15 +02:00
#include <map>
2021-06-14 14:02:42 +02:00
namespace Beatsaber {
class BeatLevelRenderHelperImpl : public BeatLevelRenderHelper {
public:
BeatLevelRenderHelperImpl(std::shared_ptr<const BeatLevel> level);
virtual ~BeatLevelRenderHelperImpl();
2021-07-09 00:56:15 +02:00
class LevelRenderIteratorImpl : public LevelRenderIterator {
public:
virtual bool hasNextNote() const override;
virtual const Note& getNextNote() override;
virtual const Wall& getNextWall() override;
private:
using noteIterator = std::multimap<uint32_t, Note>::const_iterator;
double pos;
uint32_t timebegin;
uint32_t timeend;
noteIterator noteit;
noteIterator noteitend;
double njs;
double bps;
2021-06-14 14:02:42 +02:00
2021-07-09 00:56:15 +02:00
float* matrix;
void setMat(double time, const Note& note);
public:
LevelRenderIteratorImpl(double pos, uint32_t begin, uint32_t end, std::multimap<uint32_t, Note> notes, double njs, double bps, float* matrix);
//friend class BeatLevelRenderHelperImpl;
};
virtual std::unique_ptr<BeatLevelRenderHelper::LevelRenderIterator> getIterator(double time, float* matrix) const override;
2021-06-14 14:02:42 +02:00
private:
std::shared_ptr<const BeatLevel> level;
2021-07-09 00:56:15 +02:00
std::multimap<uint32_t, Note> notes;
2021-06-14 14:02:42 +02:00
double bps; //beats per second
2021-07-09 00:56:15 +02:00
double njs; // note jump speed (in m/s)
double jumpDuration; // amount of seconds when a object is active
double jumpDistance; // distnce the objects travel within the jump duration
2021-06-14 14:02:42 +02:00
};
}