Prune and clean up code.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using Cryville.Common;
|
||||
using Cryville.Common.Math;
|
||||
using Cryville.Crtr.Components;
|
||||
using Cryville.Crtr.Event;
|
||||
using System;
|
||||
@@ -50,7 +49,6 @@ namespace Cryville.Crtr {
|
||||
|
||||
public override void PreInit() {
|
||||
base.PreInit();
|
||||
coeffs = new ColumnVector<float>(gh.TrackCount);
|
||||
foreach (var j in Event.judges) {
|
||||
judges.Add(j, new JudgeState(this, j.Id.Key));
|
||||
}
|
||||
@@ -143,47 +141,13 @@ namespace Cryville.Crtr {
|
||||
return Quaternion.LookRotation(r, state.Normal);
|
||||
}
|
||||
|
||||
readonly List<Vector3> ctrl = new List<Vector3>(2);
|
||||
ColumnVector<float> coeffs;
|
||||
Vector3 GetFrame(ContainerState state, float track, Func<ContainerState, Vector3> func) {
|
||||
// TODO
|
||||
int id = Mathf.FloorToInt(track);
|
||||
var ts0 = state.GetChild(id, typeof(Chart.Track));
|
||||
var p1 = func(ts0);
|
||||
if (track == id)
|
||||
return p1;
|
||||
var ts1 = state.GetChild(id + 1, typeof(Chart.Track));
|
||||
var p2 = func(ts1);
|
||||
bool c0 = ts0.Corner;
|
||||
bool c1 = ts1.Corner;
|
||||
float t = track - id;
|
||||
float deltaz = p2.z - p1.z;
|
||||
float nt = 1 - t;
|
||||
if (c0 && c1)
|
||||
return (1 - t) * p1 + t * p2;
|
||||
else {
|
||||
ctrl.Clear();
|
||||
if (!c0) {
|
||||
var tp = ts0.GetControlPoint(true, deltaz);
|
||||
if (tp != Vector3.zero) ctrl.Add(tp);
|
||||
}
|
||||
if (!c1) {
|
||||
var tp = ts1.GetControlPoint(false, -deltaz);
|
||||
if (tp != Vector3.zero) ctrl.Add(tp);
|
||||
}
|
||||
if (ctrl.Count == 0) {
|
||||
var frame = gh.GetCurrentFrame(func);
|
||||
ColumnVector<float>.FillWithPolynomialCoefficients(coeffs, track);
|
||||
return frame.Dot(coeffs, Vector3Operator.Instance);
|
||||
}
|
||||
else if (ctrl.Count == 1) {
|
||||
return nt * (nt * p1 + t * (ctrl[0] + p1)) + t * t * p2;
|
||||
}
|
||||
else {
|
||||
var t2 = t * t;
|
||||
return nt * (nt * (nt * p1 + t * (ctrl[0] + p1)) + t2 * (ctrl[1] + p1)) + t2 * t * p2;
|
||||
}
|
||||
}
|
||||
if (track == id) return p1;
|
||||
return gh.GetCurrentFrame(func, track);
|
||||
}
|
||||
|
||||
public void ReportJudge(Judge.JudgeEvent ev, float time, Identifier result) {
|
||||
|
Reference in New Issue
Block a user