protected TileController(IMapDataStore dataStore, Stylesheet stylesheet, ElevationDataType elevationType, Transform pivot, Range <int> lodRange) { _dataStore = dataStore; _stylesheet = stylesheet; _elevationType = elevationType; Pivot = pivot; LodRange = lodRange; }
public void Setup() { // initialize services _compositionRoot = TestHelper.GetCompositionRoot(_worldZeroPoint); _stylesheet = _compositionRoot.GetService <Stylesheet>(); _projection = _compositionRoot.GetService <IProjection>(); // get local references _mapDataStore = _compositionRoot.GetService <IMapDataStore>(); _isCalled = false; }
void Start() { // init utymap library _compositionRoot = InitTask.Run((container, config) => { container .Register(Component.For <Stylesheet>().Use <Stylesheet>(@"mapcss/default/index.mapcss")) .Register(Component.For <MaterialProvider>().Use <MaterialProvider>()) .Register(Component.For <GameObjectBuilder>().Use <GameObjectBuilder>()) .RegisterInstance <IEnumerable <IElementBuilder> >(new List <IElementBuilder>()); }); // store map data store reference to member variable _mapDataStore = _compositionRoot.GetService <IMapDataStore>(); // for demo purpose, disable mesh caching to force import data into memory for every run _compositionRoot.GetService <IMapDataLibrary>().DisableCache(); // get reference for active stylesheet. var stylesheet = _compositionRoot.GetService <Stylesheet>(); // get reference to trace. var trace = _compositionRoot.GetService <ITrace>(); // create tile which represents target region to load. var tile = new Tile( // create quadkey using coordinate and choose proper LOD GeoUtils.CreateQuadKey(_coordinate, Scene == SceneType.Bird ? 14 : 16), // provide stylesheet (used to be the same as for import) stylesheet, // use cartesian projection as we want to build flat world new CartesianProjection(_coordinate), // use flat elevation (all vertices have zero meters elevation) ElevationDataType.Flat, // parent for built game objects gameObject); // import data into memory _mapDataStore.AddTo( // define where geoindex is created (in memory, not persistent) MapDataStorages.TransientStorageKey, // path to map data String.Format(MapDataPathFormat, Scene == SceneType.Bird ? "json" : "xml"), // stylesheet is used to import only used data and skip unused stylesheet, // level of detail (zoom) for which map data should be imported new Range <int>(16, 16), new CancellationToken()) // start import and listen for events. .Subscribe( // NOTE progress callback is ignored (progress) => { }, // exception is reported (exception) => trace.Error("import", exception, "Cannot import map data"), // once completed, load the corresponding tile () => _mapDataStore.OnNext(tile)); }
public LoadMapCommand(LoadMapCommandData data, IMapDataStore mapStore, ICommandFactory commandFactory, ZenjectSceneLoader sceneLoader, IModalViewController modalViewController) { _data = data; _mapStore = mapStore; _commandFactory = commandFactory; _sceneLoader = sceneLoader; _modalViewController = modalViewController; }
public SurfaceTileController(IMapDataStore dataStore, Stylesheet stylesheet, ElevationDataType elevationType, Transform pivot, Range <int> lodRange, GeoCoordinate origin, float scale, float maxDistance) : base(dataStore, stylesheet, elevationType, pivot, lodRange) { _scale = scale; _geoOrigin = origin; LodTree = GetLodTree(pivot.Find("Camera").GetComponent <Camera>().aspect, maxDistance); Projection = CreateProjection(); HeightRange = new Range <float>(LodTree.Min, LodTree.Max); ResetToDefaults(); }
public SphereTileController(IMapDataStore dataStore, Stylesheet stylesheet, ElevationDataType elevationType, Transform pivot, Range <int> lodRange, float radius) : base(dataStore, stylesheet, elevationType, pivot, lodRange) { _radius = radius; LodTree = GetLodTree(); FieldOfView = 60; Projection = new SphericalProjection(radius); _camera = pivot.Find("Camera").transform; HeightRange = new Range <float>(LodTree.Min, LodTree.Max); ResetToDefaults(); }
void Start() { // init utymap library _compositionRoot = InitTask.Run((container, config) => { container .Register(Component.For <Stylesheet>().Use <Stylesheet>(@"mapcss/default/index.mapcss")) .Register(Component.For <MaterialProvider>().Use <MaterialProvider>()) .Register(Component.For <GameObjectBuilder>().Use <GameObjectBuilder>()) .RegisterInstance <IEnumerable <IElementBuilder> >(new List <IElementBuilder>()); }); // store map data store reference to member variable _mapDataStore = _compositionRoot.GetService <IMapDataStore>(); // get reference for active stylesheet var stylesheet = _compositionRoot.GetService <Stylesheet>(); // define level of detail const int levelOfDetail = 14; // create center coordinate; var coordinate = (new GeoCoordinate(Latitude, Longitude)); // create "center" tile var center = GeoUtils.CreateQuadKey(coordinate, levelOfDetail); // load multiply tiles at once for (var tileX = center.TileX - 1; tileX <= center.TileX + 1; ++tileX) { for (var tileY = center.TileY - 1; tileY <= center.TileY + 1; ++tileY) { var quadKey = new QuadKey(tileX, tileY, levelOfDetail); var parent = new GameObject(quadKey.ToString()); parent.transform.SetParent(gameObject.transform); _mapDataStore.OnNext(new Tile( // quadkey to load. quadKey, // provide stylesheet stylesheet, // use cartesian projection as we want to build flat world new CartesianProjection(coordinate), // use grid elevation: uses mapzen servers by default, // stores elevation in simple NxN grid format. ElevationDataType.Grid, // parent for built game objects parent)); } } }
public static MapData GetResultSync(this IMapDataStore store, Tile tile, int waitTimeInSeconds = 10) { MapData mapData = null; var manualResetEvent = new ManualResetEvent(false); store .ObserveOn <Tile>(Scheduler.CurrentThread) .SubscribeOn(Scheduler.CurrentThread) .Subscribe(_ => manualResetEvent.Set()); store .ObserveOn <MapData>(Scheduler.CurrentThread) .SubscribeOn(Scheduler.CurrentThread) .Subscribe(r => mapData = r); store.OnNext(tile); manualResetEvent.WaitOne(TimeSpan.FromSeconds(waitTimeInSeconds)); return(mapData); }
public static Element GetResultSync(this IMapDataStore store, MapQuery query, int waitTimeInSeconds = 10) { Element element = null; var manualResetEvent = new ManualResetEvent(false); store .ObserveOn <Element>(Scheduler.CurrentThread) .SubscribeOn(Scheduler.CurrentThread) .Subscribe(r => { element = r; manualResetEvent.Set(); }); store.OnNext(query); manualResetEvent.WaitOne(TimeSpan.FromSeconds(waitTimeInSeconds)); return(element); }
void Start() { // init utymap library _compositionRoot = InitTask.Run((container, config) => { container // NOTE use another mapcss style .Register(Component.For <Stylesheet>().Use <Stylesheet>(@"mapcss/customization/customization.mapcss")) .Register(Component.For <MaterialProvider>().Use <MaterialProvider>()) .Register(Component.For <GameObjectBuilder>().Use <GameObjectBuilder>()) // NOTE for use case 1: put cubes for POI .Register(Component.For <IElementBuilder>().Use <PlaceElementBuilder>().Named("place")) // NOTE for use case 2: search for capsule object in scene which replaces specific tree .Register(Component.For <IElementBuilder>().Use <ImportElementBuilder>().Named("import")); }); // store map data store reference to member variable _mapDataStore = _compositionRoot.GetService <IMapDataStore>(); // disable mesh caching to force import data into memory for every run _compositionRoot.GetService <IMapDataLibrary>().DisableCache(); // import data into memory _mapDataStore.AddTo( // define where geoindex is created (in memory, not persistent) MapDataStorages.TransientStorageKey, // path to map data MapDataPath, // stylesheet is used to import only used data and skip unused _compositionRoot.GetService <Stylesheet>(), // level of detail (zoom) for which map data should be imported new Range <int>(16, 16), new CancellationToken()) // start import and listen for events. .Subscribe( // NOTE progress callback is ignored (progress) => { }, // exception is reported (exception) => _compositionRoot.GetService <ITrace>().Error("import", exception, "Cannot import map data"), // once completed, load the corresponding tile OnDataImported); }
void Start() { // init utymap library _compositionRoot = InitTask.Run((container, config) => { container // NOTE use another mapcss style .Register(Component.For <Stylesheet>().Use <Stylesheet>(@"mapcss/default/index.mapcss")) .Register(Component.For <MaterialProvider>().Use <MaterialProvider>()) .Register(Component.For <GameObjectBuilder>().Use <GameObjectBuilder>()) .RegisterInstance <IEnumerable <IElementBuilder> >(new List <IElementBuilder>()); }); // get trace for logging. _trace = _compositionRoot.GetService <ITrace>(); // store map data store reference to member variable _mapDataStore = _compositionRoot.GetService <IMapDataStore>(); // disable mesh caching to force import data into memory for every run _compositionRoot.GetService <IMapDataLibrary>().DisableCache(); // import data into memory _mapDataStore.AddTo( // define where geoindex is created (in memory, not persistent) MapDataStorages.TransientStorageKey, // path to map data MapDataPath, // stylesheet is used to import only used data and skip unused _compositionRoot.GetService <Stylesheet>(), // level of detail (zoom) for which map data should be imported _range, new CancellationToken()) // start import and listen for events. .Subscribe( // NOTE progress callback is ignored (progress) => { }, // exception is reported (exception) => _trace.Error("search", exception, "Cannot import map data"), // once completed, load the corresponding tile OnDataImported); }
public void Construct(MapStoreId mapStoreId, [Inject(Id = MapEditorInstaller.SECTION_TILE_EDITOR_ID)] IMapEditorTool sectionTileEditor, [Inject(Id = MapEditorInstaller.UNIT_TILE_EDITOR_ID)] IMapEditorTool unitTileEditor, [Inject(Id = MapEditorInstaller.PLAYER_UNITS_TILE_EDITOR_ID)] IMapEditorTool playerUnitsTileEditor, IMapDataStore mapDataStore, IInputLock inputLock, IInputEvents inputEvents, ILogger logger) { _mapStoreId = mapStoreId; _sectionTileEditor = sectionTileEditor; _playerUnitsTileEditor = playerUnitsTileEditor; _unitTileEditor = unitTileEditor; _mapDataStore = mapDataStore; _inputLock = inputLock; _inputEvents = inputEvents; _logger = logger; }
public void Construct(IMapDataStore mapDataStore) { _mapDataStore = mapDataStore; }