Add "cur" anchor.
This commit is contained in:
@@ -39,7 +39,6 @@ namespace Cryville.Crtr {
|
||||
#endif
|
||||
}
|
||||
else if (s.CloneType == 3) {
|
||||
spos = Vector3.zero;
|
||||
bpos = cpt;
|
||||
brot = Quaternion.Euler(s.Direction);
|
||||
}
|
||||
@@ -61,34 +60,50 @@ namespace Cryville.Crtr {
|
||||
float length;
|
||||
|
||||
public override void Update(ContainerState s, StampedEvent ev) {
|
||||
base.Update(s, ev);
|
||||
if (s.CloneType == 2 || s.CloneType == 3) {
|
||||
var tpt = s.ScreenPoint;
|
||||
var tsv = s.ScrollVelocity;
|
||||
|
||||
Vector3 dpt = (Vector3)tpt - ppt; // Delta 2D point
|
||||
dpt.z = (float)((s.Time - ptime) * ChartPlayer.sv * tsv); // Delta Z
|
||||
Quaternion rotq = Quaternion.Euler(s.Direction); // Rotation
|
||||
var dwp = rotq * dpt; // Delta world point
|
||||
var nl = length + dwp.magnitude; // New length
|
||||
var tdist = s.Distance;
|
||||
if (nl >= tdist) {
|
||||
s.Break();
|
||||
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);
|
||||
if (s.CloneType == 0) {
|
||||
pwp = Vector3.zero;
|
||||
cpt = s.ScreenPoint;
|
||||
spos = Vector3.zero;
|
||||
#if UNITY_5_6_OR_NEWER
|
||||
a_cur.SetPositionAndRotation(s.ScreenPoint, Quaternion.Euler(s.Direction));
|
||||
#else
|
||||
a_cur.position = s.ScreenPoint;
|
||||
a_cur.rotation = Quaternion.Euler(s.Direction);
|
||||
#endif
|
||||
OpenAnchor(_a_cur);
|
||||
base.Update(s, ev);
|
||||
CloseAnchor(_a_cur);
|
||||
}
|
||||
else {
|
||||
base.Update(s, ev);
|
||||
if (s.CloneType == 2 || s.CloneType == 3) {
|
||||
var tpt = s.ScreenPoint;
|
||||
var tsv = s.ScrollVelocity;
|
||||
|
||||
Vector3 dpt = (Vector3)tpt - ppt; // Delta 2D point
|
||||
dpt.z = (float)((s.Time - ptime) * ChartPlayer.sv * tsv); // Delta Z
|
||||
Quaternion rotq = Quaternion.Euler(s.Direction); // Rotation
|
||||
var dwp = rotq * dpt; // Delta world point
|
||||
var nl = length + dwp.magnitude; // New length
|
||||
var tdist = s.Distance;
|
||||
if (nl >= tdist) {
|
||||
s.Break();
|
||||
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);
|
||||
}
|
||||
else UpdatePosition(s);
|
||||
}
|
||||
|
||||
void UpdatePosition(ContainerState s) {
|
||||
|
Reference in New Issue
Block a user