void TryRebuild()
{
if (!Application.isEditor)
return;
// safeguard if it's deleted from the editor
if (GetComponent<MeshFilter>().sharedMesh == null)
Awake();
// go through child nodes and check if checksum matches
float newChecksum = 0;
CachedNodes = GetComponentsInChildren<SplineNode>().OrderBy(x => x.name).ToArray();
foreach (var node in CachedNodes)
newChecksum += Vector3.Dot(node.transform.position, Vector3.one);
cacheChecksum += Width;
cacheChecksum += SegmentRate;
if (cacheChecksum != newChecksum)
{
// only rebuild mesh if checksum changed
Rebuild();
//Debug.Log("Rebuilt!");
cacheChecksum = newChecksum;
}
}