示例#1
0
 /// <summary>
 /// Should be called after init process has finished
 /// </summary>
 /// <param name="posed"></param>
 public void AddGeoPositioned(GeoPositioned posed)
 {
     positionedObjects.Add(posed);
     posed.transform.parent = originTransform;
     DebugUI.ArTransform    = posed.transform;
     UpdatePositioned();
 }
示例#2
0
    private void UpdatePositioned(GeoPositioned posed, GeoArithmetic.GeoCoordinates currentOrigin)
    {
        double latOff = posed.GeoCoordinates.latitude - currentOrigin.latitude;
        double lonOff = posed.GeoCoordinates.longitude - currentOrigin.longitude;

        Vector3 transformPosition = posed.transform.position;

        if (Debug)
        {
            transformPosition.z = arCoreCam.transform.position.z;
            transformPosition.x = arCoreCam.transform.position.x;
        }
        else
        {
            transformPosition.z = (float)(latOff * Scale);
            transformPosition.x = (float)(lonOff * Scale);
        }

        posed.transform.position = transformPosition;

        var infoMsg = string.Format("Updated GeoPos {0},{1}) @ {2},{3}, with O={4},{5} @ {6},{7}",
                                    posed.GeoCoordinates.latitude,
                                    posed.GeoCoordinates.longitude, transformPosition.z, transformPosition.x, currentOrigin.latitude,
                                    currentOrigin.longitude, arCoreCam.transform.position.z, arCoreCam.transform.position.x);

        logger.Debug(infoMsg);
        UIManager.ShowAndroidToastMessage(infoMsg);


        if (posed.IsBearingSet())
        {
            if (Debug)
            {
                posed.transform.Rotate(Vector3.up, 180, Space.Self);
            }
            else
            {
                posed.transform.Rotate(Vector3.up, posed.Bearing, Space.Self);
            }
            logger.Debug("Bearing was: {0}, actual euler angles: {1},{2},{3}", posed.Bearing, posed.transform.eulerAngles.x, posed.transform.eulerAngles.y, posed.transform.eulerAngles.z);
        }

        DebugUI.PlacementInfo.SetPlacementInfo(posed.transform.position.x, posed.transform.position.z,
                                               posed.transform.rotation.eulerAngles.y);
        //DisplayText(string.Format("x={0},z={1}", posed.transform.position.x, posed.transform.position.z));
    }
示例#3
0
 public void RemoveGeoPositioned(GeoPositioned posed)
 {
     positionedObjects.Remove(posed);
 }