mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-12-23 03:40:05 +00:00
Please.... please take the slider....
This commit is contained in:
parent
e3561e9d15
commit
2f44243abb
@ -11,6 +11,7 @@
|
||||
#include "contrib/JSON.hpp"
|
||||
|
||||
#include <fstream>
|
||||
#include <cmath>
|
||||
|
||||
std::map<int32_t, std::vector<WarpLocation>> TableData::RunningSkywayRoutes;
|
||||
std::map<int32_t, int> TableData::RunningNPCRotations;
|
||||
@ -358,18 +359,22 @@ void TableData::loadPaths(int* nextId) {
|
||||
} else if (point["stop"]) { // point B is a stop
|
||||
curve = 0.375f;//0.35f;
|
||||
}
|
||||
int preLerp = route.size();
|
||||
TransportManager::lerp(&route, from, to, SLIDER_SPEED * curve, 1); // lerp from A to B (arbitrary speed)
|
||||
int postLerp = route.size() - preLerp;
|
||||
from = to; // update point A
|
||||
stopTime = point["stop"] ? SLIDER_STOP_TICKS : 0; // set stop ticks for next point A
|
||||
}
|
||||
//
|
||||
int l = route.size();
|
||||
int numSlidersApprox = 16; // maybe add a config option for this?
|
||||
for (int pos = 0; pos < l; pos++) {
|
||||
// Uniform distance calculation
|
||||
int passedDistance = 0;
|
||||
// initial point
|
||||
int pos = 0;
|
||||
WarpLocation lastPoint = route.front();
|
||||
route.pop();
|
||||
route.push(lastPoint);
|
||||
for (pos = 1; pos < route.size(); pos++) {
|
||||
WarpLocation point = route.front();
|
||||
if (pos % (l / numSlidersApprox) == 0) { // space them out uniformaly
|
||||
passedDistance += hypot(point.x - lastPoint.x, point.y - lastPoint.y);
|
||||
if (passedDistance >= SLIDER_GAP_SIZE) { // space them out uniformaly
|
||||
passedDistance -= SLIDER_GAP_SIZE; // step down
|
||||
// spawn a slider
|
||||
BaseNPC* slider = new BaseNPC(point.x, point.y, point.z, 0, INSTANCE_OVERWORLD, 1, (*nextId)++, NPC_BUS);
|
||||
NPCManager::NPCs[slider->appearanceData.iNPC_ID] = slider;
|
||||
@ -379,6 +384,7 @@ void TableData::loadPaths(int* nextId) {
|
||||
// rotate
|
||||
route.pop();
|
||||
route.push(point);
|
||||
lastPoint = point;
|
||||
}
|
||||
|
||||
// npc paths
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
const int SLIDER_SPEED = 1200;
|
||||
const int SLIDER_STOP_TICKS = 16;
|
||||
const int SLIDER_GAP_SIZE = 45000;
|
||||
|
||||
struct WarpLocation;
|
||||
|
||||
|
2
tdata
2
tdata
@ -1 +1 @@
|
||||
Subproject commit a36aca30c9ff69b39a1b128227a6e69c77e3c00e
|
||||
Subproject commit a6a3841ff219ed57bbfda008782220ac4c111664
|
Loading…
Reference in New Issue
Block a user