public override void AddWorldObject(LocationARWorldObject worldObject, bool attach) { var state = new TrackedWorldObjectState(); var parent = new GameObject("AR Object"); state.WorldObjectParent = parent; worldObject.GameObject.transform.SetParent(state.WorldObjectParent.transform); worldObject.GameObject.transform.localPosition = Vector2.zero; worldObject.GameObject.transform.localScale = Vector3.one; worldObject.GameObject.transform.rotation = Quaternion.identity; m_objStates.Add(worldObject, state); // Leave the object inactive until we parent it to the correct anchor. state.WorldObjectParent.SetActive(false); base.AddWorldObject(worldObject, false); }
protected void AdjustTrackedObject(ARWorldObject obj, TrackedWorldObjectState state) { ApplyOptions(state.WorldObjectParent.transform, WorldCamera, obj.Options); }
protected void AdjustObject(LocationARWorldObject worldObject, bool isCameraTracking, TrackedWorldObjectState state) { state.WorldObjectParent.SetActive(true); bool isTracking = UsingTracking && isCameraTracking; if (!isTracking) { // Use the default rendering. We do this if ARKit stopped tracking. if (state.TrackingState != ObjectTrackingState.NotTracking) { state.TrackingState = ObjectTrackingState.NotTracking; state.WorldObjectParent.SetActive(false); worldObject.GameObject.transform.SetParent(DefaultAnchor.transform); worldObject.GameObject.transform.localRotation = Quaternion.identity; worldObject.GameObject.transform.localScale = Vector3.one; } SetPosition(worldObject); } else { if (state.TrackingState != ObjectTrackingState.Tracking) { state.WorldObjectParent.transform.SetParent(TrackingAnchor.transform); worldObject.GameObject.transform.SetParent(state.WorldObjectParent.transform); worldObject.GameObject.transform.localPosition = Vector3.zero; worldObject.GameObject.transform.localScale = Vector3.one; worldObject.GameObject.transform.localRotation = Quaternion.identity; SetObjectPosition(worldObject, state, m_gpsAnchorCoords); state.TrackingState = ObjectTrackingState.Tracking; } AdjustTrackedObject(worldObject, state); } }
protected void SetObjectPosition(LocationARWorldObject worldObject, TrackedWorldObjectState state, Coordinates coords) { SetObjectPosition(worldObject, state.WorldObjectParent, coords); }