public Junction(string id, SplitTrack branchDefault, SplitTrack branchAlternate, JunctionDirection direction) { Id = id; NextBranchType = BranchType.BranchDefault; Direction = direction; BranchDefault = GetFirstGroup(branchDefault); BranchAlternate = GetFirstGroup(branchAlternate); }
public SubTrack(string id, SplittedRegion splitRegion, SubTrackGroup[] trackGroups) { SplittedRegion = splitRegion; TrackGroups = trackGroups; Id = id; foreach (SubTrackGroup trackGroup in trackGroups) { trackGroup.OnAttachToSubTrack(this); } }
public bool AllowPrevious(SubTrackGroup stGroup) { if(_junction.Direction == Junction.JunctionDirection.ManyToOne) { return stGroup == _junction.NextBranch; } return true; }
public bool AllowNext(SubTrackGroup stGroup) { if(_junction.Direction == Junction.JunctionDirection.OneToMany) { return stGroup == _junction.NextBranch; } return true; }
public TrackRunner(TrackConnectionResolver connectionResolver, SubTrackGroup initialTrackGroup, bool initialReverse) { ConnectionResolver = connectionResolver; Setup(initialTrackGroup, initialReverse); }
private void Setup(SubTrackGroup initialTrackGroup, bool initialReverse) { NextConnection = true; _connectionCtx = ConnectionResolver.FirstContext(initialTrackGroup, initialReverse); _interpolator = new BezierSpline.LinearInterpolator(initialTrackGroup.Spline, initialReverse); _interpolator.Step(0); _currentPt = _interpolator.Value(); SetStartingValues(); }
private Vector3 DirectionFromTrackGroup(SubTrackGroup trackGroup) { return trackGroup.NumTrackNodes > 1 ? trackGroup.Nodes[1].Forward : trackGroup.Nodes[0].Forward; }
public bool ReferencesGroup(SubTrackGroup group) { return BranchDefault == group || BranchAlternate == group; }