示例#1
0
    void Start()
    {
        camapi = Api.Instance.CameraApi;
        cam    = transform.GetComponentInChildren <Camera>();
        float latitude  = PlayerPrefs.GetFloat("latitude");
        float longitude = PlayerPrefs.GetFloat("longitude");

        GameObject.Find("WrldMap").GetComponentInChildren <WrldMap>().m_latitudeDegrees  = latitude;
        GameObject.Find("WrldMap").GetComponentInChildren <WrldMap>().m_longitudeDegrees = longitude;
        Api.Instance.SetOriginPoint(LatLongAltitude.FromDegrees(latitude, longitude, 500));
        cam.farClipPlane = cam.farClipPlane * 2 / 5;
        Input.simulateMouseWithTouches = false;
        spawn();
    }
        public ApiImplementation(string apiKey, CoordinateSystem coordinateSystem, Transform parentTransformForStreamedObjects, ConfigParams configParams)
        {
            m_nativePluginRunner = new NativePluginRunner(apiKey, parentTransformForStreamedObjects, configParams);
            m_coordinateSystem   = coordinateSystem;
            var defaultStartingLocation = LatLongAltitude.FromDegrees(
                configParams.LatitudeDegrees,
                configParams.LongitudeDegrees,
                coordinateSystem == CoordinateSystem.ECEF ? configParams.DistanceToInterest : 0.0);

            if (coordinateSystem == CoordinateSystem.ECEF)
            {
                m_originECEF = defaultStartingLocation.ToECEF();
            }
            else
            {
                m_frame = new UnityWorldSpaceCoordinateFrame(defaultStartingLocation);
            }

            m_cameraController = new CameraApi(this);
        }
示例#3
0
    void PlayTransitionNum(int num)
    {
        var api = Api.Instance;

        switch (num)
        {
        case 0:
            var transamericaPyramidSanFrancisco = LatLong.FromDegrees(37.7951572, -122.4028915);
            api.CameraApi.AnimateTo(transamericaPyramidSanFrancisco, distanceFromInterest: 1500, headingDegrees: 90, pitchDegrees: 45);
            break;

        case 1:
            var ferryBuildingSanfrancisco = LatLong.FromDegrees(37.7955683, -122.3935391);
            api.CameraApi.AnimateTo(ferryBuildingSanfrancisco, headingDegrees: 270, pitchDegrees: 0);
            break;

        case 2:
            var rinconParkSanFrancisco = LatLong.FromDegrees(37.791542, -122.3902725);
            var cameraPosition         = LatLongAltitude.FromDegrees(37.791542 + 0.005, -122.3902725, 500.0);
            api.CameraApi.AnimateTo(rinconParkSanFrancisco, cameraPosition);
            break;
        }
    }
示例#4
0
        public ApiImplementation(string apiKey, CoordinateSystem coordinateSystem, Transform parentTransformForStreamedObjects, ConfigParams configParams)
        {
            var textureLoadHandler = new TextureLoadHandler();
            var materialRepository = new MaterialRepository(configParams.MaterialsDirectory, configParams.OverrideLandmarkMaterial, textureLoadHandler);

            var terrainCollision  = (configParams.Collisions.TerrainCollision) ? CollisionStreamingType.SingleSidedCollision : CollisionStreamingType.NoCollision;
            var roadCollision     = (configParams.Collisions.RoadCollision) ? CollisionStreamingType.DoubleSidedCollision : CollisionStreamingType.NoCollision;
            var buildingCollision = (configParams.Collisions.BuildingCollision) ? CollisionStreamingType.SingleSidedCollision : CollisionStreamingType.NoCollision;

            m_terrainStreamer   = new GameObjectStreamer("Terrain", materialRepository, parentTransformForStreamedObjects, terrainCollision);
            m_roadStreamer      = new GameObjectStreamer("Roads", materialRepository, parentTransformForStreamedObjects, roadCollision);
            m_buildingStreamer  = new GameObjectStreamer("Buildings", materialRepository, parentTransformForStreamedObjects, buildingCollision);
            m_highlightStreamer = new GameObjectStreamer("Highlights", materialRepository, parentTransformForStreamedObjects, CollisionStreamingType.NoCollision);

            m_mapGameObjectScene = new MapGameObjectScene(m_terrainStreamer, m_roadStreamer, m_buildingStreamer, m_highlightStreamer);

            m_nativePluginRunner = new NativePluginRunner(apiKey, textureLoadHandler, materialRepository, m_mapGameObjectScene, configParams);
            m_coordinateSystem   = coordinateSystem;
            var defaultStartingLocation = LatLongAltitude.FromDegrees(
                configParams.LatitudeDegrees,
                configParams.LongitudeDegrees,
                coordinateSystem == CoordinateSystem.ECEF ? configParams.DistanceToInterest : 0.0);

            if (coordinateSystem == CoordinateSystem.ECEF)
            {
                m_originECEF = defaultStartingLocation.ToECEF();
            }
            else
            {
                m_frame = new UnityWorldSpaceCoordinateFrame(defaultStartingLocation);
            }

            m_cameraController = new CameraApi(this);
            m_buildingsApi     = new BuildingsApi(m_highlightStreamer);
            m_geographicApi    = new GeographicApi();
        }
示例#5
0
        public ApiImplementation(string apiKey, CoordinateSystem coordinateSystem, Transform parentTransformForStreamedObjects, ConfigParams configParams)
        {
            var textureLoadHandler = new TextureLoadHandler();
            var materialRepository = new MaterialRepository(configParams.MaterialsDirectory, configParams.OverrideLandmarkMaterial, textureLoadHandler);

            var terrainCollision  = (configParams.Collisions.TerrainCollision) ? CollisionStreamingType.SingleSidedCollision : CollisionStreamingType.NoCollision;
            var roadCollision     = (configParams.Collisions.RoadCollision) ? CollisionStreamingType.DoubleSidedCollision : CollisionStreamingType.NoCollision;
            var buildingCollision = (configParams.Collisions.BuildingCollision) ? CollisionStreamingType.SingleSidedCollision : CollisionStreamingType.NoCollision;

            m_root = CreateRootObject(parentTransformForStreamedObjects);

            m_interestPointProvider = new InterestPointProvider(m_root.transform);

            m_terrainStreamer   = new GameObjectStreamer("Terrain", materialRepository, m_root.transform, terrainCollision, true);
            m_roadStreamer      = new GameObjectStreamer("Roads", materialRepository, m_root.transform, roadCollision, true);
            m_buildingStreamer  = new GameObjectStreamer("Buildings", materialRepository, m_root.transform, buildingCollision, true);
            m_highlightStreamer = new GameObjectStreamer("Highlights", materialRepository, m_root.transform, CollisionStreamingType.NoCollision, false);
            m_indoorMapStreamer = new GameObjectStreamer("IndoorMaps", materialRepository, m_root.transform, CollisionStreamingType.NoCollision, false);

            var indoorMapMaterialRepository = new IndoorMapMaterialRepository();

            var indoorMapStreamedTextureObserver = new IndoorMapStreamedTextureObserver(indoorMapMaterialRepository);
            var indoorMapTextureStreamingService = new IndoorMapTextureStreamingService(textureLoadHandler, indoorMapStreamedTextureObserver);

            m_indoorMapsApiInternal = new IndoorMapsApiInternal(indoorMapTextureStreamingService);
            var indoorMapMaterialService = new IndoorMapMaterialService(indoorMapMaterialRepository, m_indoorMapsApiInternal);

            m_indoorMapsApi = new IndoorMapsApi(m_indoorMapsApiInternal);

            var meshUploader   = new MeshUploader();
            var indoorMapScene = new IndoorMapScene(m_indoorMapStreamer, meshUploader, indoorMapMaterialService, m_indoorMapsApiInternal);

            m_mapGameObjectScene   = new MapGameObjectScene(m_terrainStreamer, m_roadStreamer, m_buildingStreamer, m_highlightStreamer, m_indoorMapStreamer, meshUploader, indoorMapScene);
            m_labelServiceInternal = new LabelServiceInternal(UnityEngine.GameObject.Find("Canvas"), configParams.EnableLabels);

            m_positionerApiInternal = new PositionerApiInternal();
            m_positionerApi         = new PositionerApi(m_positionerApiInternal);

            m_cameraApiInternal = new CameraApiInternal();

            m_buildingsApiInternal = new BuildingsApiInternal(materialRepository);
            m_buildingsApi         = new BuildingsApi(m_buildingsApiInternal);

            m_precacheApiInternal = new PrecacheApiInternal();
            m_precacheApi         = new PrecacheApi(m_precacheApiInternal);

            m_nativePluginRunner = new NativePluginRunner(
                apiKey,
                textureLoadHandler,
                materialRepository,
                m_mapGameObjectScene,
                configParams,
                indoorMapScene,
                m_indoorMapsApiInternal,
                indoorMapMaterialService,
                m_labelServiceInternal,
                m_positionerApiInternal,
                m_cameraApiInternal,
                m_buildingsApiInternal,
                m_precacheApiInternal
                );

            m_cameraController = new CameraApi(this, m_cameraApiInternal);

            m_coordinateSystem = coordinateSystem;
            var defaultStartingLocation = LatLongAltitude.FromDegrees(
                configParams.LatitudeDegrees,
                configParams.LongitudeDegrees,
                coordinateSystem == CoordinateSystem.ECEF ? configParams.DistanceToInterest : 0.0);

            m_originECEF = defaultStartingLocation.ToECEF();

            if (coordinateSystem == CoordinateSystem.UnityWorld)
            {
                m_frame = new UnityWorldSpaceCoordinateFrame(defaultStartingLocation);
            }

            m_geographicApi = new GeographicApi(m_root.transform);

            m_environmentFlatteningApiInternal = new EnvironmentFlatteningApiInternal();
            m_environmentFlatteningApi         = new EnvironmentFlatteningApi(m_environmentFlatteningApiInternal);

            m_spacesApi = new SpacesApi(this);

            if (m_coordinateSystem == CoordinateSystem.UnityWorld)
            {
                m_transformUpdateStrategy = new UnityWorldSpaceTransformUpdateStrategy(m_frame, m_environmentFlatteningApi.GetCurrentScale());
            }
            else
            {
                var cameraPosition = m_originECEF;
                m_transformUpdateStrategy = new ECEFTransformUpdateStrategy(
                    cameraPosition,
                    cameraPosition.normalized.ToSingleVector(),
                    m_environmentFlatteningApi.GetCurrentScale());
            }
        }
        /// <summary>
        /// Highlights a building at a given location and returns the highlight geometry as a GameObject through the callback. This can only generate highlight geometry for buildings which have streamed in.
        /// </summary>
        /// <param name="location">The geographic point which intersects with the building to be highlighted.</param>
        /// <param name="material">The material to assign the highlight geometry.</param>
        /// <param name="callback">The callback where the highlight will be received.</param>
        public void HighlightBuildingAtLocation(LatLong location, Material material, HighlightReceivedCallback callback)
        {
            var latLongAlt = LatLongAltitude.FromDegrees(location.GetLatitude(), location.GetLongitude(), -1.0);

            HighlightBuildingAtLocation(latLongAlt, material, callback);
        }
        /// <summary>
        /// Gets the building at a given location and returns it through the callback. This will only retrieve a building that has streamed in.
        /// </summary>
        /// <param name="location">The geographic point which intersects with the building to be returned.</param>
        /// <param name="callback">The callback where the building will be received.</param>
        public void GetBuildingAtLocation(LatLong location, BuildingReceivedCallback callback)
        {
            var latLongAlt = LatLongAltitude.FromDegrees(location.GetLatitude(), location.GetLongitude(), -1.0);

            GetBuildingAtLocation(latLongAlt, callback);
        }