private void _UpdateAnchorTrackingState(AnchorTrackingState trackingState, List <AnchorRecord> anchorRecords) { for (int i = 0; i < anchorRecords.Count; i++) { anchorRecords[i].m_updateTrackingState(trackingState); } }
private void Update() { if (Anchor.isLocated) { TrackingState = AnchorTrackingState.Located; anchorVisual.transform.position = Anchor.transform.position; anchorVisual.transform.rotation = Anchor.transform.rotation; } else { DeducePosition(); } UpdateColor(); }
private void DeducePosition() { List <Tuple <string, SerializableVector3> > offsetList = GameMaster.Instance.GetOffsetList(AnchorId); if (offsetList == null) { TrackingState = AnchorTrackingState.Lost; return; } int count = Math.Min(offsetList.Count, offsetDeductionLimit); Vector3 average = Vector3.zero; int otherAnchorNumber = 0; for (int index = 0; index < count; index++) { string otherId = offsetList[index].Item1; AnchorHandler otherAnchorHandler = GameMaster.Instance.GetAnchorHandler(otherId); if (otherAnchorHandler.TrackingState != AnchorTrackingState.Lost) { Vector3 offset = offsetList[index].Item2.ToVector3(); average += otherAnchorHandler.AnchorVisualTransform.position + offset; otherAnchorNumber++; } } if (otherAnchorNumber > 0) { average /= otherAnchorNumber; anchorVisual.transform.position = average; TrackingState = AnchorTrackingState.LocationDeduced; } else { TrackingState = AnchorTrackingState.Lost; } }
private void _UpdateTrackingState(AnchorTrackingState trackingState) { TrackingState = trackingState; gameObject.SetActive(TrackingState == AnchorTrackingState.Tracking); }