public float GetTrackPosition(Token token, float longitudinal) { Asserts.Assert(this == token.TrackBranch); BranchToken branchToken = branchTokens[token.TrackBranchIndex]; return(startLength + (branchToken.startLength + token.Length * longitudinal) * lenScale); }
public Token EvaluateAt(float offset, float trasversal, out SBSVector3 pos, out SBSVector3 tang) #endif { BranchToken dummy = new BranchToken(null, (offset - startLength) * invLenScale); #if UNITY_FLASH int index = AS3Utils.BinarySearchList(branchTokens, dummy); #else int index = branchTokens.BinarySearch(dummy); #endif index = (index < 0 ? ~index : index); BranchToken branchToken = branchTokens[Mathf.Clamp(index - 1, 0, branchTokens.Count - 1)]; float l = (dummy.startLength - branchToken.startLength) / branchToken.token.Length; l = Mathf.Clamp01(l); #if UNITY_FLASH branchToken.token.TokenToWorld(l, trasversal, pos, tang); #else branchToken.token.TokenToWorld(l, trasversal, out pos, out tang); #endif return(branchToken.token); }