Remove faulty toggling of anchor "cur".
This commit is contained in:
@@ -60,44 +60,39 @@ namespace Cryville.Crtr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(ContainerState s, StampedEvent ev) {
|
public override void Update(ContainerState s, StampedEvent ev) {
|
||||||
|
base.Update(s, ev);
|
||||||
|
if (s.CloneType <= 2) {
|
||||||
|
Position = GetFramePoint(s.Parent, s.Track);
|
||||||
|
Rotation = GetFrameRotation(s.Parent, s.Track);
|
||||||
|
}
|
||||||
if (s.CloneType == 0) {
|
if (s.CloneType == 0) {
|
||||||
#if UNITY_5_6_OR_NEWER
|
#if UNITY_5_6_OR_NEWER
|
||||||
a_cur.SetPositionAndRotation(GetFramePoint(s.Parent, s.Track), GetFrameRotation(s.Parent, s.Track));
|
a_cur.SetPositionAndRotation(Position, Rotation);
|
||||||
#else
|
#else
|
||||||
a_cur.position = GetFramePoint(s.Parent, s.Track);
|
a_cur.position = Position;
|
||||||
a_cur.rotation = GetFrameRotation(s.Parent, s.Track);
|
a_cur.rotation = Rotation;
|
||||||
#endif
|
#endif
|
||||||
OpenAnchor(_a_cur);
|
|
||||||
base.Update(s, ev);
|
|
||||||
CloseAnchor(_a_cur);
|
|
||||||
}
|
}
|
||||||
else {
|
else if (s.CloneType == 2) {
|
||||||
base.Update(s, ev);
|
if (!gogroup) return;
|
||||||
if (s.CloneType <= 2) {
|
Chart.Note tev = Event;
|
||||||
Position = GetFramePoint(s.Parent, s.Track);
|
if (tev.IsLong) {
|
||||||
Rotation = GetFrameRotation(s.Parent, s.Track);
|
foreach (var i in sgos)
|
||||||
|
i.AppendPoint(Position, Rotation);
|
||||||
}
|
}
|
||||||
if (s.CloneType == 2) {
|
}
|
||||||
if (!gogroup) return;
|
else if (s.CloneType == 16) {
|
||||||
Chart.Note tev = Event;
|
if (ev == null) { }
|
||||||
if (tev.IsLong) {
|
else if (ev.Unstamped == null) { }
|
||||||
foreach (var i in sgos)
|
else if (ev.Unstamped is Chart.Judge) {
|
||||||
i.AppendPoint(Position, Rotation);
|
var tev = (Chart.Judge)ev.Unstamped;
|
||||||
}
|
Identifier name = default(Identifier);
|
||||||
}
|
ChartPlayer.etor.ContextEvent = tev;
|
||||||
else if (s.CloneType == 16) {
|
ChartPlayer.etor.ContextState = s;
|
||||||
if (ev == null) { }
|
ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => name = new Identifier(v)), ruleset.judges[tev.Id].input);
|
||||||
else if (ev.Unstamped == null) { }
|
judge.Prepare(ev.Time, ev.Time + ev.Duration, name, ruleset.judges[tev.Id], cs);
|
||||||
else if (ev.Unstamped is Chart.Judge) {
|
ChartPlayer.etor.ContextState = null;
|
||||||
var tev = (Chart.Judge)ev.Unstamped;
|
ChartPlayer.etor.ContextEvent = null;
|
||||||
Identifier name = default(Identifier);
|
|
||||||
ChartPlayer.etor.ContextEvent = tev;
|
|
||||||
ChartPlayer.etor.ContextState = s;
|
|
||||||
ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => name = new Identifier(v)), ruleset.judges[tev.Id].input);
|
|
||||||
judge.Prepare(ev.Time, ev.Time + ev.Duration, name, ruleset.judges[tev.Id], cs);
|
|
||||||
ChartPlayer.etor.ContextState = null;
|
|
||||||
ChartPlayer.etor.ContextEvent = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ namespace Cryville.Crtr {
|
|||||||
float length;
|
float length;
|
||||||
|
|
||||||
public override void Update(ContainerState s, StampedEvent ev) {
|
public override void Update(ContainerState s, StampedEvent ev) {
|
||||||
|
base.Update(s, ev);
|
||||||
if (s.CloneType == 0) {
|
if (s.CloneType == 0) {
|
||||||
pwp = Vector3.zero;
|
pwp = Vector3.zero;
|
||||||
cpt = s.ScreenPoint;
|
cpt = s.ScreenPoint;
|
||||||
@@ -70,40 +71,34 @@ namespace Cryville.Crtr {
|
|||||||
a_cur.position = s.ScreenPoint;
|
a_cur.position = s.ScreenPoint;
|
||||||
a_cur.rotation = Quaternion.Euler(s.Direction);
|
a_cur.rotation = Quaternion.Euler(s.Direction);
|
||||||
#endif
|
#endif
|
||||||
OpenAnchor(_a_cur);
|
|
||||||
base.Update(s, ev);
|
|
||||||
CloseAnchor(_a_cur);
|
|
||||||
}
|
}
|
||||||
else {
|
else if (s.CloneType == 2 || s.CloneType == 3) {
|
||||||
base.Update(s, ev);
|
var tpt = s.ScreenPoint;
|
||||||
if (s.CloneType == 2 || s.CloneType == 3) {
|
var tsv = s.ScrollVelocity;
|
||||||
var tpt = s.ScreenPoint;
|
|
||||||
var tsv = s.ScrollVelocity;
|
|
||||||
|
|
||||||
Vector3 dpt = (Vector3)tpt - ppt; // Delta 2D point
|
Vector3 dpt = (Vector3)tpt - ppt; // Delta 2D point
|
||||||
dpt.z = (float)((s.Time - ptime) * ChartPlayer.sv * tsv); // Delta Z
|
dpt.z = (float)((s.Time - ptime) * ChartPlayer.sv * tsv); // Delta Z
|
||||||
Quaternion rotq = Quaternion.Euler(s.Direction); // Rotation
|
Quaternion rotq = Quaternion.Euler(s.Direction); // Rotation
|
||||||
var dwp = rotq * dpt; // Delta world point
|
var dwp = rotq * dpt; // Delta world point
|
||||||
var nl = length + dwp.magnitude; // New length
|
var nl = length + dwp.magnitude; // New length
|
||||||
var tdist = s.Distance;
|
var tdist = s.Distance;
|
||||||
if (nl >= tdist) {
|
if (nl >= tdist) {
|
||||||
s.Break();
|
s.Break();
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
length = nl;
|
|
||||||
var wp = pwp + dwp; // World point
|
|
||||||
pwp = wp;
|
|
||||||
ppt += dpt;
|
|
||||||
|
|
||||||
ptime = s.Time;
|
|
||||||
|
|
||||||
if (!gogroup || s.CloneType == 3) return;
|
|
||||||
var p = GetCurrentWorldPoint();
|
|
||||||
foreach (var i in sgos)
|
|
||||||
i.AppendPoint(p, s.QuatDir);
|
|
||||||
}
|
}
|
||||||
else UpdatePosition(s);
|
length = nl;
|
||||||
|
var wp = pwp + dwp; // World point
|
||||||
|
pwp = wp;
|
||||||
|
ppt += dpt;
|
||||||
|
|
||||||
|
ptime = s.Time;
|
||||||
|
|
||||||
|
if (!gogroup || s.CloneType == 3) return;
|
||||||
|
var p = GetCurrentWorldPoint();
|
||||||
|
foreach (var i in sgos)
|
||||||
|
i.AppendPoint(p, s.QuatDir);
|
||||||
}
|
}
|
||||||
|
else UpdatePosition(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatePosition(ContainerState s) {
|
void UpdatePosition(ContainerState s) {
|
||||||
|
|||||||
Reference in New Issue
Block a user