Prune and clean up code.

This commit is contained in:
2023-04-04 20:48:17 +08:00
parent a013d59379
commit c98536e8ab
12 changed files with 23 additions and 377 deletions

View File

@@ -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) {