Compare commits
10 Commits
0.0.1
...
18312176d9
Author | SHA1 | Date | |
---|---|---|---|
18312176d9 | |||
5be6e32b03 | |||
b33e5ca223 | |||
fe4430b1bf | |||
5a48073152 | |||
41c1e6f9fd | |||
0743fa45eb | |||
7f2c0d2e23 | |||
14202714cc | |||
ce0c23805a |
@@ -1,3 +1,3 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("0.0.1")]
|
[assembly: AssemblyVersion("0.0.2")]
|
||||||
|
@@ -34,20 +34,26 @@ namespace Cryville.EEW.Unity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[JsonPolymorphic(TypeDiscriminatorPropertyName = "Type", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType)]
|
[JsonPolymorphic(TypeDiscriminatorPropertyName = "Type", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType)]
|
||||||
|
[JsonDerivedType(typeof(BMKGOpenDataEventSourceConfig), "BMKGOpenData")]
|
||||||
[JsonDerivedType(typeof(CWAOpenDataEventSourceConfig), "CWAOpenData")]
|
[JsonDerivedType(typeof(CWAOpenDataEventSourceConfig), "CWAOpenData")]
|
||||||
|
[JsonDerivedType(typeof(EMSCRealTimeEventSourceConfig), "EMSCRealTime")]
|
||||||
[JsonDerivedType(typeof(GlobalQuakeServerEventSourceConfig), "GlobalQuakeServer")]
|
[JsonDerivedType(typeof(GlobalQuakeServerEventSourceConfig), "GlobalQuakeServer")]
|
||||||
[JsonDerivedType(typeof(GlobalQuakeServer15EventSourceConfig), "GlobalQuakeServer15")]
|
[JsonDerivedType(typeof(GlobalQuakeServer15EventSourceConfig), "GlobalQuakeServer15")]
|
||||||
[JsonDerivedType(typeof(JMAAtomEventSourceConfig), "JMAAtom")]
|
[JsonDerivedType(typeof(JMAAtomEventSourceConfig), "JMAAtom")]
|
||||||
[JsonDerivedType(typeof(NOAAEventSourceConfig), "NOAA")]
|
[JsonDerivedType(typeof(NOAAEventSourceConfig), "NOAA")]
|
||||||
[JsonDerivedType(typeof(UpdateCheckerEventSourceConfig), "UpdateChecker")]
|
[JsonDerivedType(typeof(UpdateCheckerEventSourceConfig), "UpdateChecker")]
|
||||||
|
[JsonDerivedType(typeof(USGSQuakeMLEventSourceConfig), "USGSQuakeML")]
|
||||||
[JsonDerivedType(typeof(WolfxEventSourceConfig), "Wolfx")]
|
[JsonDerivedType(typeof(WolfxEventSourceConfig), "Wolfx")]
|
||||||
abstract record EventSourceConfig();
|
abstract record EventSourceConfig();
|
||||||
|
record BMKGOpenDataEventSourceConfig([property: JsonRequired] string[] Subtypes) : EventSourceConfig;
|
||||||
record CWAOpenDataEventSourceConfig([property: JsonRequired] string Subtype, [property: JsonRequired] string Token) : EventSourceConfig;
|
record CWAOpenDataEventSourceConfig([property: JsonRequired] string Subtype, [property: JsonRequired] string Token) : EventSourceConfig;
|
||||||
|
record EMSCRealTimeEventSourceConfig() : EventSourceConfig;
|
||||||
record GlobalQuakeServerEventSourceConfig([property: JsonRequired] string Host, int Port = 38000) : EventSourceConfig;
|
record GlobalQuakeServerEventSourceConfig([property: JsonRequired] string Host, int Port = 38000) : EventSourceConfig;
|
||||||
record GlobalQuakeServer15EventSourceConfig(string Host, int Port = 38000) : GlobalQuakeServerEventSourceConfig(Host, Port);
|
record GlobalQuakeServer15EventSourceConfig(string Host, int Port = 38000) : GlobalQuakeServerEventSourceConfig(Host, Port);
|
||||||
record JMAAtomEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false) : EventSourceConfig;
|
record JMAAtomEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false) : EventSourceConfig;
|
||||||
record NOAAEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
record NOAAEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
||||||
record UpdateCheckerEventSourceConfig : EventSourceConfig;
|
record UpdateCheckerEventSourceConfig : EventSourceConfig;
|
||||||
|
record USGSQuakeMLEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
||||||
record WolfxEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false) : EventSourceConfig;
|
record WolfxEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false) : EventSourceConfig;
|
||||||
|
|
||||||
[JsonSerializable(typeof(Config))]
|
[JsonSerializable(typeof(Config))]
|
||||||
|
@@ -15,14 +15,18 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
MapElementManager m_layerElementSub;
|
MapElementManager m_layerElementSub;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
GameObject m_prefabTile;
|
GameObject m_prefabTile;
|
||||||
|
[SerializeField]
|
||||||
|
GameObject m_prefabBitmapHolder;
|
||||||
|
|
||||||
readonly MapTileCacheManager _tiles = new();
|
readonly MapTileCacheManager _tiles = new();
|
||||||
float _elementLayerZ;
|
float _elementLayerZ;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
_camera = GetComponent<Camera>();
|
_camera = GetComponent<Camera>();
|
||||||
|
_tiles.ExtraCachedZoomLevel = 20;
|
||||||
_tiles.Parent = m_layerTile;
|
_tiles.Parent = m_layerTile;
|
||||||
_tiles.PrefabTile = m_prefabTile;
|
_tiles.PrefabTile = m_prefabTile;
|
||||||
|
_tiles.PrefabBitmapHolder = m_prefabBitmapHolder;
|
||||||
_tiles.CacheDir = Application.temporaryCachePath;
|
_tiles.CacheDir = Application.temporaryCachePath;
|
||||||
_camera.orthographicSize = 0.5f / MathF.Max(1, (float)_camera.pixelWidth / _camera.pixelHeight);
|
_camera.orthographicSize = 0.5f / MathF.Max(1, (float)_camera.pixelWidth / _camera.pixelHeight);
|
||||||
_elementLayerZ = m_layerElement.transform.position.z;
|
_elementLayerZ = m_layerElement.transform.position.z;
|
||||||
|
@@ -1,9 +1,12 @@
|
|||||||
|
using Cryville.EEW.BMKGOpenData.Map;
|
||||||
using Cryville.EEW.Core;
|
using Cryville.EEW.Core;
|
||||||
using Cryville.EEW.CWAOpenData.Map;
|
using Cryville.EEW.CWAOpenData.Map;
|
||||||
|
using Cryville.EEW.EMSC.Map;
|
||||||
using Cryville.EEW.GlobalQuake.Map;
|
using Cryville.EEW.GlobalQuake.Map;
|
||||||
using Cryville.EEW.JMAAtom.Map;
|
using Cryville.EEW.JMAAtom.Map;
|
||||||
using Cryville.EEW.Map;
|
using Cryville.EEW.Map;
|
||||||
using Cryville.EEW.NOAA.Map;
|
using Cryville.EEW.NOAA.Map;
|
||||||
|
using Cryville.EEW.QuakeML.Map;
|
||||||
using Cryville.EEW.Report;
|
using Cryville.EEW.Report;
|
||||||
using Cryville.EEW.Wolfx.Map;
|
using Cryville.EEW.Wolfx.Map;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -23,6 +26,7 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
readonly List<int> _displayingOrder = new();
|
readonly List<int> _displayingOrder = new();
|
||||||
|
|
||||||
public int Count => _displayingReports.Count;
|
public int Count => _displayingReports.Count;
|
||||||
|
public int OngoingCount => _displayingReports.Count - (_selected != null ? 1 : 0);
|
||||||
|
|
||||||
[SerializeField] MapElementManager m_subManager;
|
[SerializeField] MapElementManager m_subManager;
|
||||||
|
|
||||||
@@ -123,16 +127,19 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readonly ContextedGeneratorManager<IMapGeneratorContext, MapElement> _gen = new(new IContextedGenerator<IMapGeneratorContext, MapElement>[] {
|
readonly ContextedGeneratorManager<IMapGeneratorContext, MapElement> _gen = new(new IContextedGenerator<IMapGeneratorContext, MapElement>[] {
|
||||||
|
new BMKGEarthquakeMapGenerator(),
|
||||||
new CENCEarthquakeMapGenerator(),
|
new CENCEarthquakeMapGenerator(),
|
||||||
new CENCEEWMapGenerator(),
|
new CENCEEWMapGenerator(),
|
||||||
new CWAEarthquakeMapGenerator(),
|
new CWAEarthquakeMapGenerator(),
|
||||||
new CWAEEWMapGenerator(),
|
new CWAEEWMapGenerator(),
|
||||||
new CWATsunamiMapGenerator(),
|
new CWATsunamiMapGenerator(),
|
||||||
|
new EMSCRealTimeEventMapGenerator(),
|
||||||
new FujianEEWMapGenerator(),
|
new FujianEEWMapGenerator(),
|
||||||
new GlobalQuakeMapViewGenerator(),
|
new GlobalQuakeMapViewGenerator(),
|
||||||
new JMAAtomMapGenerator(),
|
new JMAAtomMapGenerator(),
|
||||||
new JMAEEWMapGenerator(),
|
new JMAEEWMapGenerator(),
|
||||||
new NOAAMapGenerator(),
|
new NOAAMapGenerator(),
|
||||||
|
new QuakeMLEventMapGenerator(),
|
||||||
new SichuanEEWMapGenerator(),
|
new SichuanEEWMapGenerator(),
|
||||||
});
|
});
|
||||||
public UnityMapElement Build(object e, out CultureInfo culture, out int order) {
|
public UnityMapElement Build(object e, out CultureInfo culture, out int order) {
|
||||||
|
@@ -1,44 +1,21 @@
|
|||||||
using Cryville.EEW.Core.Map;
|
using Cryville.EEW.Core.Map;
|
||||||
using System;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.IO;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Networking;
|
|
||||||
|
|
||||||
namespace Cryville.EEW.Unity.Map {
|
namespace Cryville.EEW.Unity.Map {
|
||||||
[RequireComponent(typeof(SpriteRenderer))]
|
[RequireComponent(typeof(SpriteRenderer))]
|
||||||
sealed class MapTile : MonoBehaviour {
|
sealed class MapTile : MonoBehaviour {
|
||||||
static readonly SemaphoreSlim _semaphore = new(2);
|
|
||||||
|
|
||||||
static readonly HttpClient _httpClient = new() { Timeout = TimeSpan.FromSeconds(10) };
|
|
||||||
|
|
||||||
[SerializeField] Transform _idView;
|
[SerializeField] Transform _idView;
|
||||||
|
|
||||||
public MapTileIndex Index { get; set; }
|
public MapTileIndex Index { get; set; }
|
||||||
public bool IsEmpty { get; private set; }
|
|
||||||
|
|
||||||
Action<MapTile> _callback;
|
|
||||||
|
|
||||||
SpriteRenderer _renderer;
|
SpriteRenderer _renderer;
|
||||||
|
|
||||||
UnityWebRequest _req;
|
|
||||||
DownloadHandlerTexture _texHandler;
|
|
||||||
Texture2D _tex;
|
|
||||||
Sprite _sprite;
|
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
_renderer = GetComponent<SpriteRenderer>();
|
_renderer = GetComponent<SpriteRenderer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
FileInfo _localFile;
|
public void Init(MapTileIndex index) {
|
||||||
bool _downloadDone;
|
|
||||||
public void Load(MapTileIndex index, string cacheDir, Action<MapTile> onUpdated) {
|
|
||||||
Index = index;
|
Index = index;
|
||||||
_callback = onUpdated;
|
|
||||||
_localFile = new(Path.Combine(cacheDir, $"map/{Index.Z}/{Index.NX}/{Index.NY}"));
|
|
||||||
float z = 1 << index.Z;
|
float z = 1 << index.Z;
|
||||||
transform.localPosition = new(index.X / z, -(index.Y + 1) / z, -index.Z / 100f);
|
transform.localPosition = new(index.X / z, -(index.Y + 1) / z, -index.Z / 100f);
|
||||||
transform.localScale = new Vector3(1 / z, 1 / z, 1);
|
transform.localScale = new Vector3(1 / z, 1 / z, 1);
|
||||||
@@ -46,71 +23,22 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
byte e = SharedSettings.Instance.IdBytes[((index.X << 2) + index.Y) & 0x1f];
|
byte e = SharedSettings.Instance.IdBytes[((index.X << 2) + index.Y) & 0x1f];
|
||||||
int ex = e >> 4, ey = e & 0xf;
|
int ex = e >> 4, ey = e & 0xf;
|
||||||
_idView.localPosition = new(ex / 16f, 1 - ey / 16f, -1 / 200f);
|
_idView.localPosition = new(ex / 16f, 1 - ey / 16f, -1 / 200f);
|
||||||
if (_localFile.Exists) {
|
|
||||||
_downloadDone = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Task.Run(() => RunAsync($"https://server.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{Index.Z}/{Index.NY}/{Index.NX}"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async Task RunAsync(string url) {
|
|
||||||
await _semaphore.WaitAsync().ConfigureAwait(true);
|
|
||||||
try {
|
|
||||||
Directory.CreateDirectory(_localFile.DirectoryName);
|
|
||||||
using var webStream = await _httpClient.GetStreamAsync(new Uri(url)).ConfigureAwait(true);
|
|
||||||
using var fileStream = new FileStream(_localFile.FullName, FileMode.Create, FileAccess.Write);
|
|
||||||
await webStream.CopyToAsync(fileStream).ConfigureAwait(true);
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
_semaphore.Release();
|
|
||||||
}
|
|
||||||
_downloadDone = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[SuppressMessage("CodeQuality", "IDE0051", Justification = "Unity message")]
|
public void Set(Sprite sprite) {
|
||||||
|
if (_renderer) {
|
||||||
|
_renderer.sprite = sprite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool _isDestroyed;
|
||||||
|
public void Destroy() {
|
||||||
|
_isDestroyed = true;
|
||||||
|
}
|
||||||
void Update() {
|
void Update() {
|
||||||
if (_downloadDone) {
|
if (_isDestroyed) {
|
||||||
try {
|
Destroy(gameObject);
|
||||||
_texHandler = new DownloadHandlerTexture();
|
|
||||||
_req = new UnityWebRequest($"file:///{_localFile}") {
|
|
||||||
downloadHandler = _texHandler,
|
|
||||||
disposeDownloadHandlerOnDispose = true,
|
|
||||||
};
|
|
||||||
_req.SendWebRequest();
|
|
||||||
}
|
|
||||||
catch (Exception ex) {
|
|
||||||
Debug.LogException(ex);
|
|
||||||
}
|
|
||||||
_downloadDone = false;
|
|
||||||
}
|
}
|
||||||
if (_req == null || !_req.isDone) return;
|
|
||||||
if (_texHandler.isDone) {
|
|
||||||
_tex = _texHandler.texture;
|
|
||||||
_tex.wrapMode = TextureWrapMode.Clamp;
|
|
||||||
_sprite = Sprite.Create(_tex, new Rect(0, 0, _tex.width, _tex.height), Vector2.zero, _tex.height, 0, SpriteMeshType.FullRect, Vector4.zero, false);
|
|
||||||
_renderer.sprite = _sprite;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Debug.LogError(_req.error);
|
|
||||||
_localFile.Delete();
|
|
||||||
IsEmpty = true;
|
|
||||||
}
|
|
||||||
_req.Dispose();
|
|
||||||
_req = null;
|
|
||||||
_callback?.Invoke(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
[SuppressMessage("CodeQuality", "IDE0051", Justification = "Unity message")]
|
|
||||||
void OnDestroy() {
|
|
||||||
if (_req != null) {
|
|
||||||
_req.Abort();
|
|
||||||
_req.Dispose();
|
|
||||||
_texHandler.Dispose();
|
|
||||||
}
|
|
||||||
if (_sprite) Destroy(_sprite);
|
|
||||||
if (_tex) Destroy(_tex);
|
|
||||||
IsEmpty = true;
|
|
||||||
_callback?.Invoke(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
35
Assets/Cryville.EEW.Unity/Map/MapTileBitmapHolder.cs
Normal file
35
Assets/Cryville.EEW.Unity/Map/MapTileBitmapHolder.cs
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
using Cryville.EEW.Core.Map;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Cryville.EEW.Unity.Map {
|
||||||
|
sealed class MapTileBitmapHolder : Core.Map.MapTileBitmapHolder {
|
||||||
|
MapTileBitmapHolderBehaviour _behaviour;
|
||||||
|
|
||||||
|
public MapTileBitmapHolder(MapTileIndex index, GameObject gameObject) : base(index) {
|
||||||
|
_behaviour = gameObject.GetComponent<MapTileBitmapHolderBehaviour>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool disposing) {
|
||||||
|
base.Dispose(disposing);
|
||||||
|
if (disposing) {
|
||||||
|
if (_behaviour) _behaviour.Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Uri GetUri() =>
|
||||||
|
new($"https://server.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{Index.Z}/{Index.NY}/{Index.NX}");
|
||||||
|
|
||||||
|
protected override Task LoadBitmap(FileInfo file, CancellationToken cancellationToken) {
|
||||||
|
_behaviour.Load(file);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Bind(MapTile tile) {
|
||||||
|
_behaviour.Bind(tile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Cryville.EEW.Unity/Map/MapTileBitmapHolder.cs.meta
Normal file
11
Assets/Cryville.EEW.Unity/Map/MapTileBitmapHolder.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f7ad3a3ac7d829249ba21987d585b07f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,79 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
namespace Cryville.EEW.Unity.Map {
|
||||||
|
sealed class MapTileBitmapHolderBehaviour : MonoBehaviour {
|
||||||
|
Action<Sprite> _callback;
|
||||||
|
public void Bind(MapTile tile) {
|
||||||
|
if (_isDone)
|
||||||
|
tile.Set(_sprite);
|
||||||
|
else
|
||||||
|
_callback += tile.Set;
|
||||||
|
}
|
||||||
|
|
||||||
|
UnityWebRequest _req;
|
||||||
|
DownloadHandlerTexture _texHandler;
|
||||||
|
Texture2D _tex;
|
||||||
|
Sprite _sprite;
|
||||||
|
|
||||||
|
FileInfo _localFile;
|
||||||
|
bool _isReady;
|
||||||
|
bool _isDone;
|
||||||
|
public void Load(FileInfo file) {
|
||||||
|
_localFile = file;
|
||||||
|
_isReady = true;
|
||||||
|
}
|
||||||
|
void Update() {
|
||||||
|
if (_isDestroyed) {
|
||||||
|
Destroy(gameObject);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_isReady) {
|
||||||
|
try {
|
||||||
|
_texHandler = new DownloadHandlerTexture();
|
||||||
|
_req = new UnityWebRequest($"file:///{_localFile}") {
|
||||||
|
downloadHandler = _texHandler,
|
||||||
|
disposeDownloadHandlerOnDispose = true,
|
||||||
|
};
|
||||||
|
_req.SendWebRequest();
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
Debug.LogException(ex);
|
||||||
|
}
|
||||||
|
_isReady = false;
|
||||||
|
}
|
||||||
|
if (_req == null || !_req.isDone) return;
|
||||||
|
if (_texHandler.isDone) {
|
||||||
|
_tex = _texHandler.texture;
|
||||||
|
_tex.wrapMode = TextureWrapMode.Clamp;
|
||||||
|
_sprite = Sprite.Create(_tex, new Rect(0, 0, _tex.width, _tex.height), Vector2.zero, _tex.height, 0, SpriteMeshType.FullRect, Vector4.zero, false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Debug.LogError(_req.error);
|
||||||
|
_localFile.Delete();
|
||||||
|
}
|
||||||
|
_req.Dispose();
|
||||||
|
_texHandler.Dispose();
|
||||||
|
_req = null;
|
||||||
|
_callback?.Invoke(_sprite);
|
||||||
|
_isDone = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool _isDestroyed;
|
||||||
|
public void Destroy() {
|
||||||
|
_isDestroyed = true;
|
||||||
|
}
|
||||||
|
void OnDestroy() {
|
||||||
|
if (_req != null) {
|
||||||
|
_req.Abort();
|
||||||
|
_req.Dispose();
|
||||||
|
_texHandler.Dispose();
|
||||||
|
}
|
||||||
|
if (_sprite) Destroy(_sprite);
|
||||||
|
if (_tex) Destroy(_tex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c17f6b26e9a6bd74e8b2d071c6951c41
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -1,165 +1,36 @@
|
|||||||
using Cryville.EEW.Core.Map;
|
using Cryville.EEW.Core.Map;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Cryville.EEW.Unity.Map {
|
namespace Cryville.EEW.Unity.Map {
|
||||||
sealed class TileZOrderComparer : IComparer<MapTileIndex>, IComparer<MapTile> {
|
sealed class MapTileCacheManager : MapTileCacheManager<MapTileBitmapHolder> {
|
||||||
public static readonly TileZOrderComparer Instance = new();
|
public GameObject PrefabTile { get; set; }
|
||||||
public int Compare(MapTileIndex a, MapTileIndex b) {
|
public GameObject PrefabBitmapHolder { get; set; }
|
||||||
var c = a.Z.CompareTo(b.Z);
|
|
||||||
if (c != 0) return c;
|
|
||||||
c = a.Y.CompareTo(b.Y);
|
|
||||||
if (c != 0) return c;
|
|
||||||
return a.X.CompareTo(b.X);
|
|
||||||
}
|
|
||||||
public int Compare(MapTile a, MapTile b) {
|
|
||||||
if (a == null) return b == null ? 0 : -1;
|
|
||||||
if (b == null) return 1;
|
|
||||||
return Compare(a.Index, b.Index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sealed class MapTileCacheManager : IDisposable {
|
|
||||||
public int ExtraCachedZoomLevel { get; set; } = 20;
|
|
||||||
|
|
||||||
GameObject m_prefabTile;
|
|
||||||
public GameObject PrefabTile {
|
|
||||||
get => m_prefabTile;
|
|
||||||
set {
|
|
||||||
m_prefabTile = value;
|
|
||||||
if (_dummyTask) GameObject.Destroy(_dummyTask.gameObject);
|
|
||||||
_dummyTask = GameObject.Instantiate(m_prefabTile, Parent, false).GetComponent<MapTile>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Transform Parent { get; set; }
|
public Transform Parent { get; set; }
|
||||||
|
|
||||||
public string CacheDir { get; set; }
|
public string CacheDir { get; set; }
|
||||||
|
|
||||||
public event Action Updated;
|
protected override MapTileBitmapHolder CreateBitmapHolder(MapTileIndex index) => new(index, GameObject.Instantiate(PrefabBitmapHolder, Parent, false));
|
||||||
void OnUpdated(MapTile tile) {
|
|
||||||
if (tile.IsEmpty) {
|
protected override string GetCacheFilePath(MapTileIndex index) => Path.Combine(CacheDir, $"map/{index.Z}/{index.NX}/{index.NY}");
|
||||||
lock (ActiveTiles) {
|
|
||||||
if (_cache.Remove(tile.Index)) {
|
readonly Dictionary<MapTile<MapTileBitmapHolder>, MapTile> _map = new();
|
||||||
ActiveTiles.RemoveAt(ActiveTiles.BinarySearch(tile, TileZOrderComparer.Instance));
|
protected override void OnTileCreated(MapTile<MapTileBitmapHolder> tile) {
|
||||||
}
|
base.OnTileCreated(tile);
|
||||||
}
|
var gameObject = GameObject.Instantiate(PrefabTile, Parent, false);
|
||||||
}
|
var uTile = gameObject.GetComponent<MapTile>();
|
||||||
Updated?.Invoke();
|
_map.Add(tile, uTile);
|
||||||
|
uTile.Init(tile.Index);
|
||||||
|
tile.BitmapHolder.Bind(uTile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
protected override void OnTileDestroyed(MapTile<MapTileBitmapHolder> tile) {
|
||||||
MonoBehaviour.Destroy(_dummyTask);
|
base.OnTileDestroyed(tile);
|
||||||
|
if (_map.TryGetValue(tile, out var uTile)) {
|
||||||
lock (ActiveTiles) {
|
uTile.Destroy();
|
||||||
foreach (var task in ActiveTiles)
|
_map.Remove(tile);
|
||||||
GameObject.Destroy(task.gameObject);
|
|
||||||
ActiveTiles.Clear();
|
|
||||||
_cache.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
readonly Dictionary<MapTileIndex, MapTile> _cache = new();
|
|
||||||
public List<MapTile> ActiveTiles { get; } = new();
|
|
||||||
|
|
||||||
MapTileIndex _a, _b;
|
|
||||||
|
|
||||||
public void MoveTo(MapTileIndex a, MapTileIndex b) {
|
|
||||||
if (a.Z != b.Z) throw new ArgumentException("Mismatched Z index.");
|
|
||||||
if (a.X >= b.X || a.Y >= b.Y) throw new ArgumentException("Incorrect relative X/Y index.");
|
|
||||||
|
|
||||||
lock (ActiveTiles) {
|
|
||||||
UnloadTiles(a, b);
|
|
||||||
_a = a; _b = b;
|
|
||||||
LoadTiles(a, b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void LoadTiles(MapTileIndex a, MapTileIndex b) {
|
|
||||||
for (int z = Math.Max(0, a.Z - ExtraCachedZoomLevel); z <= Math.Max(0, a.Z); z++) {
|
|
||||||
var ia = a.ZoomToLevel(z, Math.Floor);
|
|
||||||
var ib = b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
for (int x = ia.X; x < ib.X; x++) {
|
|
||||||
for (int y = ia.Y; y < ib.Y; y++) {
|
|
||||||
var index = new MapTileIndex(x, y, z);
|
|
||||||
if (_cache.ContainsKey(index)) continue;
|
|
||||||
var task = GameObject.Instantiate(PrefabTile, Parent, false).GetComponent<MapTile>();
|
|
||||||
task.Load(index, CacheDir, OnUpdated);
|
|
||||||
_cache.Add(index, task);
|
|
||||||
var i = ~ActiveTiles.BinarySearch(task, TileZOrderComparer.Instance);
|
|
||||||
ActiveTiles.Insert(i, task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void UnloadTiles(MapTileIndex a, MapTileIndex b) {
|
|
||||||
if (a.Z != _a.Z) {
|
|
||||||
for (int z = _a.Z - ExtraCachedZoomLevel; z < a.Z - ExtraCachedZoomLevel; z++) UnloadTilesAtZoomLevel(z);
|
|
||||||
for (int z = a.Z + 1; z <= _a.Z; z++) UnloadTilesAtZoomLevel(z);
|
|
||||||
}
|
|
||||||
if (a.X > _a.X) {
|
|
||||||
for (int z = Math.Max(0, a.Z); z >= Math.Max(0, a.Z - ExtraCachedZoomLevel); --z) {
|
|
||||||
var ia0 = _a.ZoomToLevel(z, Math.Floor);
|
|
||||||
var ib0 = _b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
var ia1 = a.ZoomToLevel(z, Math.Floor);
|
|
||||||
if (ia0.X == ia1.X) break;
|
|
||||||
UnloadTilesInRegion(ia0.X, ia0.Y, ia1.X, ib0.Y, z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (b.X < _b.X) {
|
|
||||||
for (int z = Math.Max(0, a.Z); z >= Math.Max(0, a.Z - ExtraCachedZoomLevel); --z) {
|
|
||||||
var ia0 = _a.ZoomToLevel(z, Math.Floor);
|
|
||||||
var ib0 = _b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
var ib1 = b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
if (ib0.X == ib1.X) break;
|
|
||||||
UnloadTilesInRegion(ib1.X, ia0.Y, ib0.X, ib0.Y, z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (a.Y > _a.Y) {
|
|
||||||
for (int z = Math.Max(0, a.Z); z >= Math.Max(0, a.Z - ExtraCachedZoomLevel); --z) {
|
|
||||||
var ia0 = _a.ZoomToLevel(z, Math.Floor);
|
|
||||||
var ib0 = _b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
var ia1 = a.ZoomToLevel(z, Math.Floor);
|
|
||||||
if (ia0.Y == ia1.Y) break;
|
|
||||||
UnloadTilesInRegion(ia0.X, ia0.Y, ib0.X, ia1.Y, z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (b.Y < _b.Y) {
|
|
||||||
for (int z = Math.Max(0, a.Z); z >= Math.Max(0, a.Z - ExtraCachedZoomLevel); --z) {
|
|
||||||
var ia0 = _a.ZoomToLevel(z, Math.Floor);
|
|
||||||
var ib0 = _b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
var ib1 = b.ZoomToLevel(z, Math.Ceiling);
|
|
||||||
if (ib0.Y == ib1.Y) break;
|
|
||||||
UnloadTilesInRegion(ia0.X, ib1.Y, ib0.X, ib0.Y, z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void UnloadTilesInRegion(int x1, int y1, int x2, int y2, int z) {
|
|
||||||
for (int x = x1; x < x2; x++) {
|
|
||||||
for (int y = y1; y < y2; y++) {
|
|
||||||
var index = new MapTileIndex(x, y, z);
|
|
||||||
if (!_cache.TryGetValue(index, out var task)) continue;
|
|
||||||
GameObject.Destroy(task.gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MapTile _dummyTask;
|
|
||||||
void UnloadTilesAtZoomLevel(int z) {
|
|
||||||
if (z < 0) return;
|
|
||||||
|
|
||||||
_dummyTask.Index = new(int.MinValue, int.MinValue, z);
|
|
||||||
var i0 = ActiveTiles.BinarySearch(_dummyTask, TileZOrderComparer.Instance);
|
|
||||||
if (i0 < 0) i0 = ~i0;
|
|
||||||
|
|
||||||
_dummyTask.Index = new(int.MinValue, int.MinValue, z + 1);
|
|
||||||
var i1 = ActiveTiles.BinarySearch(_dummyTask, TileZOrderComparer.Instance);
|
|
||||||
if (i1 < 0) i1 = ~i1;
|
|
||||||
|
|
||||||
for (var i = i1 - 1; i >= i0; --i) {
|
|
||||||
var index = ActiveTiles[i].Index;
|
|
||||||
if (!_cache.TryGetValue(index, out var task)) continue;
|
|
||||||
GameObject.Destroy(task.gameObject);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -77,7 +77,13 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
DTSweep.Triangulate(tcx);
|
DTSweep.Triangulate(tcx);
|
||||||
|
|
||||||
var codeToIndex = new Dictionary<uint, int>();
|
var codeToIndex = new Dictionary<uint, int>();
|
||||||
var vertices = ArrayPool<Vector3>.Shared.Rent(convertedPolygon.Points.Count);
|
int vertexCount = convertedPolygon.Points.Count;
|
||||||
|
if (convertedPolygon.Holes != null) {
|
||||||
|
foreach (var hole in convertedPolygon.Holes) {
|
||||||
|
vertexCount += hole.Points.Count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var vertices = ArrayPool<Vector3>.Shared.Rent(vertexCount);
|
||||||
var triangles = ArrayPool<int>.Shared.Rent(convertedPolygon.Triangles.Count * 3);
|
var triangles = ArrayPool<int>.Shared.Rent(convertedPolygon.Triangles.Count * 3);
|
||||||
int vi = 0, ii = 0;
|
int vi = 0, ii = 0;
|
||||||
foreach (var tri in convertedPolygon.Triangles) {
|
foreach (var tri in convertedPolygon.Triangles) {
|
||||||
|
@@ -1,21 +1,27 @@
|
|||||||
|
using Cryville.EEW.BMKGOpenData;
|
||||||
|
using Cryville.EEW.BMKGOpenData.TTS;
|
||||||
using Cryville.EEW.Core;
|
using Cryville.EEW.Core;
|
||||||
using Cryville.EEW.CWAOpenData;
|
using Cryville.EEW.CWAOpenData;
|
||||||
using Cryville.EEW.CWAOpenData.Model;
|
using Cryville.EEW.CWAOpenData.Model;
|
||||||
using Cryville.EEW.CWAOpenData.TTS;
|
using Cryville.EEW.CWAOpenData.TTS;
|
||||||
|
using Cryville.EEW.EMSC;
|
||||||
using Cryville.EEW.GlobalQuake;
|
using Cryville.EEW.GlobalQuake;
|
||||||
using Cryville.EEW.JMAAtom;
|
using Cryville.EEW.JMAAtom;
|
||||||
using Cryville.EEW.JMAAtom.TTS;
|
using Cryville.EEW.JMAAtom.TTS;
|
||||||
using Cryville.EEW.NOAA;
|
using Cryville.EEW.NOAA;
|
||||||
using Cryville.EEW.NOAA.TTS;
|
using Cryville.EEW.NOAA.TTS;
|
||||||
|
using Cryville.EEW.QuakeML;
|
||||||
using Cryville.EEW.Report;
|
using Cryville.EEW.Report;
|
||||||
using Cryville.EEW.Unity.Map;
|
using Cryville.EEW.Unity.Map;
|
||||||
using Cryville.EEW.Unity.UI;
|
using Cryville.EEW.Unity.UI;
|
||||||
using Cryville.EEW.UpdateChecker;
|
using Cryville.EEW.UpdateChecker;
|
||||||
|
using Cryville.EEW.USGS;
|
||||||
using Cryville.EEW.Wolfx;
|
using Cryville.EEW.Wolfx;
|
||||||
using Cryville.EEW.Wolfx.Model;
|
using Cryville.EEW.Wolfx.Model;
|
||||||
using Cryville.EEW.Wolfx.TTS;
|
using Cryville.EEW.Wolfx.TTS;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
@@ -33,7 +39,8 @@ namespace Cryville.EEW.Unity {
|
|||||||
[SerializeField] EventGroupListView m_historyEventGroupList;
|
[SerializeField] EventGroupListView m_historyEventGroupList;
|
||||||
[SerializeField] GameObject m_connectingHint;
|
[SerializeField] GameObject m_connectingHint;
|
||||||
|
|
||||||
GroupingCoreWorker _worker;
|
CoreWorker _worker;
|
||||||
|
ReportGrouper _grouper;
|
||||||
CancellationTokenSource _cancellationTokenSource;
|
CancellationTokenSource _cancellationTokenSource;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
@@ -46,6 +53,7 @@ namespace Cryville.EEW.Unity {
|
|||||||
App.Init();
|
App.Init();
|
||||||
|
|
||||||
_worker = new(new TTSWorker());
|
_worker = new(new TTSWorker());
|
||||||
|
_grouper = new ReportGrouper();
|
||||||
_cancellationTokenSource = new();
|
_cancellationTokenSource = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,8 +66,8 @@ namespace Cryville.EEW.Unity {
|
|||||||
_worker.TTSMessageGeneratorContext = SharedSettings.Instance;
|
_worker.TTSMessageGeneratorContext = SharedSettings.Instance;
|
||||||
_ongoingReportManager.Changed += OnOngoingReported;
|
_ongoingReportManager.Changed += OnOngoingReported;
|
||||||
_worker.Reported += OnReported;
|
_worker.Reported += OnReported;
|
||||||
_worker.GroupUpdated += OnGroupUpdated;
|
_grouper.GroupUpdated += OnGroupUpdated;
|
||||||
_worker.GroupRemoved += OnGroupRemoved;
|
_grouper.GroupRemoved += OnGroupRemoved;
|
||||||
Task.Run(() => GatewayVerify(_cancellationTokenSource.Token)).ContinueWith(task => {
|
Task.Run(() => GatewayVerify(_cancellationTokenSource.Token)).ContinueWith(task => {
|
||||||
if (task.IsFaulted) {
|
if (task.IsFaulted) {
|
||||||
OnReported(this, new() { Title = task.Exception.Message });
|
OnReported(this, new() { Title = task.Exception.Message });
|
||||||
@@ -80,20 +88,24 @@ namespace Cryville.EEW.Unity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void RegisterViewModelGenerators(CoreWorker worker) {
|
static void RegisterViewModelGenerators(CoreWorker worker) {
|
||||||
|
worker.RegisterViewModelGenerator(new BMKGEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CENCEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new CENCEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CENCEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CENCEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWAEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWAEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWAEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWAEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWATsunamiRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWATsunamiRVMGenerator());
|
||||||
|
worker.RegisterViewModelGenerator(new EMSCRealTimeEventRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new FujianEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new FujianEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new GlobalQuakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new GlobalQuakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new JMAAtomRVMGenerator());
|
worker.RegisterViewModelGenerator(new JMAAtomRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new JMAEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new JMAEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new NOAAAtomRVMGenerator());
|
worker.RegisterViewModelGenerator(new NOAAAtomRVMGenerator());
|
||||||
|
worker.RegisterViewModelGenerator(new QuakeMLEventRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new SichuanEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new SichuanEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new VersionRVMGenerator());
|
worker.RegisterViewModelGenerator(new VersionRVMGenerator());
|
||||||
}
|
}
|
||||||
static void RegisterTTSMessageGenerators(CoreWorker worker) {
|
static void RegisterTTSMessageGenerators(CoreWorker worker) {
|
||||||
|
worker.RegisterTTSMessageGenerator(new BMKGEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CENCEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CENCEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CENCEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CENCEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CWAEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CWAEarthquakeTTSMessageGenerator());
|
||||||
@@ -114,17 +126,22 @@ namespace Cryville.EEW.Unity {
|
|||||||
_worker.AddWorker(new CWAReportWorker<Tsunami>(new Uri("http://localhost:9095/E-A0014-001.json"), "1"));
|
_worker.AddWorker(new CWAReportWorker<Tsunami>(new Uri("http://localhost:9095/E-A0014-001.json"), "1"));
|
||||||
_worker.AddWorker(new CWAReportWorker<Earthquake>(new Uri("http://localhost:9095/E-A0015-001.json"), "1"));
|
_worker.AddWorker(new CWAReportWorker<Earthquake>(new Uri("http://localhost:9095/E-A0015-001.json"), "1"));
|
||||||
_worker.AddWorker(new CWAReportWorker<Earthquake>(new Uri("http://localhost:9095/E-A0016-001.json"), "1"));
|
_worker.AddWorker(new CWAReportWorker<Earthquake>(new Uri("http://localhost:9095/E-A0016-001.json"), "1"));
|
||||||
|
BMKGOpenDataWorker bmkgWorker = new(new Uri("http://localhost:9095/autogempa.json"));
|
||||||
|
bmkgWorker.SetDataUris(new Uri[] { new("http://localhost:9095/gempadirasakan.json") });
|
||||||
|
_worker.AddWorker(bmkgWorker);
|
||||||
_worker.AddWorker(new NOAAAtomWorker(new("http://localhost:9095/PAAQAtom.xml")));
|
_worker.AddWorker(new NOAAAtomWorker(new("http://localhost:9095/PAAQAtom.xml")));
|
||||||
_worker.AddWorker(new UpdateCheckerWorker(typeof(Worker).Assembly.GetName().Version?.ToString(3) ?? "", "unity"));
|
_worker.AddWorker(new UpdateCheckerWorker(typeof(Worker).Assembly.GetName().Version?.ToString(3) ?? "", "unity"));
|
||||||
#else
|
#else
|
||||||
foreach (var source in SharedSettings.Instance.EventSources) {
|
foreach (var source in SharedSettings.Instance.EventSources) {
|
||||||
_worker.AddWorker(source switch {
|
_worker.AddWorker(source switch {
|
||||||
|
BMKGOpenDataEventSourceConfig bmkgOpenData => BuildBMKGOpenDataWorkerUris(new BMKGOpenDataWorker(new("https://data.bmkg.go.id/DataMKG/TEWS/autogempa.json")), bmkgOpenData),
|
||||||
CWAOpenDataEventSourceConfig cwaOpenData => cwaOpenData.Subtype switch {
|
CWAOpenDataEventSourceConfig cwaOpenData => cwaOpenData.Subtype switch {
|
||||||
"E-A0014-001" => new CWAReportWorker<Tsunami>(new Uri("https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0014-001"), cwaOpenData.Token, 1440, 17280),
|
"E-A0014-001" => new CWAReportWorker<Tsunami>(new Uri("https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0014-001"), cwaOpenData.Token, 1440, 17280),
|
||||||
"E-A0015-001" => new CWAReportWorker<Earthquake>(new Uri("https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0015-001"), cwaOpenData.Token),
|
"E-A0015-001" => new CWAReportWorker<Earthquake>(new Uri("https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0015-001"), cwaOpenData.Token),
|
||||||
"E-A0016-001" => new CWAReportWorker<Earthquake>(new Uri("https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0016-001"), cwaOpenData.Token),
|
"E-A0016-001" => new CWAReportWorker<Earthquake>(new Uri("https://opendata.cwa.gov.tw/api/v1/rest/datastore/E-A0016-001"), cwaOpenData.Token),
|
||||||
_ => throw new InvalidOperationException("Unknown CWA open data sub-type."),
|
_ => throw new InvalidOperationException("Unknown CWA open data sub-type."),
|
||||||
},
|
},
|
||||||
|
EMSCRealTimeEventSourceConfig => new EMSCRealTimeWorker(new("wss://www.seismicportal.eu/standing_order/websocket")),
|
||||||
GlobalQuakeServer15EventSourceConfig gq => new GlobalQuakeWorker15(gq.Host, gq.Port),
|
GlobalQuakeServer15EventSourceConfig gq => new GlobalQuakeWorker15(gq.Host, gq.Port),
|
||||||
GlobalQuakeServerEventSourceConfig gq => new GlobalQuakeWorker(gq.Host, gq.Port),
|
GlobalQuakeServerEventSourceConfig gq => new GlobalQuakeWorker(gq.Host, gq.Port),
|
||||||
JMAAtomEventSourceConfig jmaAtom => BuildJMAAtomWorkerFilter(new JMAAtomWorker(new("https://www.data.jma.go.jp/developer/xml/feed/eqvol.xml")), jmaAtom),
|
JMAAtomEventSourceConfig jmaAtom => BuildJMAAtomWorkerFilter(new JMAAtomWorker(new("https://www.data.jma.go.jp/developer/xml/feed/eqvol.xml")), jmaAtom),
|
||||||
@@ -134,18 +151,19 @@ namespace Cryville.EEW.Unity {
|
|||||||
_ => throw new InvalidOperationException("Unknown NOAA sub-type."),
|
_ => throw new InvalidOperationException("Unknown NOAA sub-type."),
|
||||||
},
|
},
|
||||||
UpdateCheckerEventSourceConfig => new UpdateCheckerWorker(typeof(Worker).Assembly.GetName().Version?.ToString(3) ?? "", "unity"),
|
UpdateCheckerEventSourceConfig => new UpdateCheckerWorker(typeof(Worker).Assembly.GetName().Version?.ToString(3) ?? "", "unity"),
|
||||||
|
USGSQuakeMLEventSourceConfig usgsQuakeML => BuildUSGSQuakeMLWorkerUri(new USGSQuakeMLWorker(new Uri("https://earthquake.usgs.gov/earthquakes/feed/v1.0/quakeml.php")), usgsQuakeML),
|
||||||
WolfxEventSourceConfig wolfx => BuildWolfxWorkerFilter(new WolfxWorker(new Uri("wss://ws-api.wolfx.jp/all_eew")), wolfx),
|
WolfxEventSourceConfig wolfx => BuildWolfxWorkerFilter(new WolfxWorker(new Uri("wss://ws-api.wolfx.jp/all_eew")), wolfx),
|
||||||
_ => throw new InvalidOperationException("Unknown event source type."),
|
_ => throw new InvalidOperationException("Unknown event source type."),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
JMAAtomWorker BuildJMAAtomWorkerFilter(JMAAtomWorker worker, JMAAtomEventSourceConfig config) {
|
static JMAAtomWorker BuildJMAAtomWorkerFilter(JMAAtomWorker worker, JMAAtomEventSourceConfig config) {
|
||||||
if (config.Filter != null) worker.SetFilter(config.Filter);
|
if (config.Filter != null) worker.SetFilter(config.Filter);
|
||||||
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
WolfxWorker BuildWolfxWorkerFilter(WolfxWorker worker, WolfxEventSourceConfig config) {
|
static WolfxWorker BuildWolfxWorkerFilter(WolfxWorker worker, WolfxEventSourceConfig config) {
|
||||||
if (config.Filter != null) worker.SetFilter(config.Filter.Select(i => i switch {
|
if (config.Filter != null) worker.SetFilter(config.Filter.Select(i => i switch {
|
||||||
"cenc_eew" => typeof(CENCEEW),
|
"cenc_eew" => typeof(CENCEEW),
|
||||||
"cenc_eqlist" => typeof(WolfxEarthquakeList<CENCEarthquake>),
|
"cenc_eqlist" => typeof(WolfxEarthquakeList<CENCEarthquake>),
|
||||||
@@ -158,6 +176,14 @@ namespace Cryville.EEW.Unity {
|
|||||||
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
|
static BMKGOpenDataWorker BuildBMKGOpenDataWorkerUris(BMKGOpenDataWorker worker, BMKGOpenDataEventSourceConfig config) {
|
||||||
|
worker.SetDataUris(config.Subtypes.Select(i => new Uri(string.Format(CultureInfo.InvariantCulture, "https://data.bmkg.go.id/DataMKG/TEWS/{0}.json", i))));
|
||||||
|
return worker;
|
||||||
|
}
|
||||||
|
static USGSQuakeMLWorker BuildUSGSQuakeMLWorkerUri(USGSQuakeMLWorker worker, USGSQuakeMLEventSourceConfig config) {
|
||||||
|
worker.SetFeedRelativeUri(new(string.Format(CultureInfo.InvariantCulture, "/earthquakes/feed/v1.0/summary/{0}.quakeml", config.Subtype), UriKind.Relative));
|
||||||
|
return worker;
|
||||||
|
}
|
||||||
|
|
||||||
readonly OngoingReportManager _ongoingReportManager = new();
|
readonly OngoingReportManager _ongoingReportManager = new();
|
||||||
readonly ConcurrentQueue<Action> _uiActionQueue = new();
|
readonly ConcurrentQueue<Action> _uiActionQueue = new();
|
||||||
@@ -165,13 +191,16 @@ namespace Cryville.EEW.Unity {
|
|||||||
void OnReported(object sender, ReportViewModel e) {
|
void OnReported(object sender, ReportViewModel e) {
|
||||||
if (e.Model is Exception && e.Model is not SourceWorkerNetworkException)
|
if (e.Model is Exception && e.Model is not SourceWorkerNetworkException)
|
||||||
Debug.LogError(e);
|
Debug.LogError(e);
|
||||||
|
_grouper.Report(e);
|
||||||
_ongoingReportManager.Report(e);
|
_ongoingReportManager.Report(e);
|
||||||
_uiActionQueue.Enqueue(() => {
|
_uiActionQueue.Enqueue(() => {
|
||||||
m_mapElementManager.SetSelected(e);
|
if (m_mapElementManager.OngoingCount == 0) {
|
||||||
|
m_mapElementManager.SetSelected(e);
|
||||||
|
m_cameraController.OnMapElementUpdated();
|
||||||
|
}
|
||||||
if (e.InvalidatedTime == null && (!(e.RevisionKey?.IsCancellation ?? false))) {
|
if (e.InvalidatedTime == null && (!(e.RevisionKey?.IsCancellation ?? false))) {
|
||||||
_latestHistoryReport = e;
|
_latestHistoryReport = e;
|
||||||
}
|
}
|
||||||
m_cameraController.OnMapElementUpdated();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
void OnOngoingReported(ReportViewModel item, CollectionChangeAction action) {
|
void OnOngoingReported(ReportViewModel item, CollectionChangeAction action) {
|
||||||
@@ -181,7 +210,6 @@ namespace Cryville.EEW.Unity {
|
|||||||
m_mapElementManager.SetSelected(null);
|
m_mapElementManager.SetSelected(null);
|
||||||
}
|
}
|
||||||
m_ongoingEventList.Add(item);
|
m_ongoingEventList.Add(item);
|
||||||
m_cameraController.OnMapElementUpdated();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (action == CollectionChangeAction.Remove) {
|
else if (action == CollectionChangeAction.Remove) {
|
||||||
@@ -191,7 +219,6 @@ namespace Cryville.EEW.Unity {
|
|||||||
m_mapElementManager.SetSelected(_latestHistoryReport, true);
|
m_mapElementManager.SetSelected(_latestHistoryReport, true);
|
||||||
}
|
}
|
||||||
m_ongoingEventList.Remove(item);
|
m_ongoingEventList.Remove(item);
|
||||||
m_cameraController.OnMapElementUpdated();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -677,6 +677,7 @@ MonoBehaviour:
|
|||||||
m_layerElement: {fileID: 1602500234}
|
m_layerElement: {fileID: 1602500234}
|
||||||
m_layerElementSub: {fileID: 303098821}
|
m_layerElementSub: {fileID: 303098821}
|
||||||
m_prefabTile: {fileID: 7683017549812261837, guid: e090edd328c6750478f5849a43a9d278, type: 3}
|
m_prefabTile: {fileID: 7683017549812261837, guid: e090edd328c6750478f5849a43a9d278, type: 3}
|
||||||
|
m_prefabBitmapHolder: {fileID: 1455558857588368834, guid: 1a5cf693e0cf6b94390f72f521c151ba, type: 3}
|
||||||
--- !u!1 &408286580
|
--- !u!1 &408286580
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
BIN
Assets/Plugins/Cryville.EEW.BMKGOpenData.Map.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.BMKGOpenData.Map.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.BMKGOpenData.Map.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.BMKGOpenData.Map.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9c2c20067e0adc54c813350fd61f9a3a
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Plugins/Cryville.EEW.BMKGOpenData.TTS.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.BMKGOpenData.TTS.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.BMKGOpenData.TTS.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.BMKGOpenData.TTS.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e9164d2df3d1c03499419935666416ae
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Plugins/Cryville.EEW.BMKGOpenData.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.BMKGOpenData.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.BMKGOpenData.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.BMKGOpenData.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 152cea136489ac044b7c12c66ba72b53
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Assets/Plugins/Cryville.EEW.EMSC.Map.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.EMSC.Map.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.EMSC.Map.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.EMSC.Map.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e1ef9470a2a1d7b4da9ddd106620b665
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Plugins/Cryville.EEW.EMSC.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.EMSC.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.EMSC.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.EMSC.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 48f0c884a8a1e4043948f765ed18e4bc
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Assets/Plugins/Cryville.EEW.QuakeML.Map.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.QuakeML.Map.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.QuakeML.Map.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.QuakeML.Map.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4d3d5b78e07866347b2ba028b4bd3ef8
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Plugins/Cryville.EEW.QuakeML.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.QuakeML.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.QuakeML.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.QuakeML.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ec4fba30706c64142a5504e3f0e64620
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
BIN
Assets/Plugins/Cryville.EEW.USGS.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.USGS.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.USGS.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.USGS.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b3347ce24f73cab44a4191aa8976d88a
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -519,7 +519,7 @@
|
|||||||
<param name="Properties">The properties of the feature.</param>
|
<param name="Properties">The properties of the feature.</param>
|
||||||
<param name="BoundingBox">The bounding box.</param>
|
<param name="BoundingBox">The bounding box.</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Cryville.EEW.Models.GeoJSON.Feature.#ctor(System.Object,Cryville.EEW.Models.GeoJSON.Geometry,System.Collections.Generic.IDictionary{System.String,System.Object},System.Double[])">
|
<member name="M:Cryville.EEW.Models.GeoJSON.Feature.#ctor(System.Text.Json.JsonElement,Cryville.EEW.Models.GeoJSON.Geometry,System.Collections.Generic.IDictionary{System.String,System.Text.Json.JsonElement},System.Double[])">
|
||||||
<summary>
|
<summary>
|
||||||
Represents a spatially bounded thing.
|
Represents a spatially bounded thing.
|
||||||
</summary>
|
</summary>
|
||||||
@@ -741,143 +741,143 @@
|
|||||||
<member name="M:Cryville.EEW.Models.GeoJSON.PositionConverter.Write(System.Text.Json.Utf8JsonWriter,Cryville.EEW.Models.GeoJSON.Position,System.Text.Json.JsonSerializerOptions)">
|
<member name="M:Cryville.EEW.Models.GeoJSON.PositionConverter.Write(System.Text.Json.Utf8JsonWriter,Cryville.EEW.Models.GeoJSON.Position,System.Text.Json.JsonSerializerOptions)">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext">
|
<member name="T:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext">
|
||||||
<summary>
|
<summary>
|
||||||
<see cref="T:System.Text.Json.Serialization.JsonSerializerContext" /> for GeoJSON objects.
|
<see cref="T:System.Text.Json.Serialization.JsonSerializerContext" /> for GeoJSON objects.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Double">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Double">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.NullableDouble">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.NullableDouble">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.DoubleArray">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.DoubleArray">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Feature">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Feature">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.FeatureArray">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.FeatureArray">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.FeatureCollection">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.FeatureCollection">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.GeoJSONObject">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.GeoJSONObject">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Geometry">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Geometry">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.GeometryArray">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.GeometryArray">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.GeometryCollection">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.GeometryCollection">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.LineString">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.LineString">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.MultiLineString">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.MultiLineString">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.MultiPoint">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.MultiPoint">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.MultiPolygon">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.MultiPolygon">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Point">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Point">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Polygon">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Polygon">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Position">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Position">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.PositionArray">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.PositionArray">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.PositionArrayArray">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.PositionArrayArray">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.PositionArrayArrayArray">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.PositionArrayArrayArray">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.IDictionaryStringObject">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.IDictionaryStringJsonElement">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Object">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.JsonElement">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.String">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.String">
|
||||||
<summary>
|
<summary>
|
||||||
Defines the source generated JSON serialization contract metadata for a given type.
|
Defines the source generated JSON serialization contract metadata for a given type.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.Default">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.Default">
|
||||||
<summary>
|
<summary>
|
||||||
The default <see cref="T:System.Text.Json.Serialization.JsonSerializerContext"/> associated with a default <see cref="T:System.Text.Json.JsonSerializerOptions"/> instance.
|
The default <see cref="T:System.Text.Json.Serialization.JsonSerializerContext"/> associated with a default <see cref="T:System.Text.Json.JsonSerializerOptions"/> instance.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.GeneratedSerializerOptions">
|
<member name="P:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.GeneratedSerializerOptions">
|
||||||
<summary>
|
<summary>
|
||||||
The source-generated options associated with this context.
|
The source-generated options associated with this context.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.#ctor">
|
<member name="M:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.#ctor">
|
||||||
<inheritdoc/>
|
<inheritdoc/>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.#ctor(System.Text.Json.JsonSerializerOptions)">
|
<member name="M:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.#ctor(System.Text.Json.JsonSerializerOptions)">
|
||||||
<inheritdoc/>
|
<inheritdoc/>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Cryville.EEW.Models.GeoJSON.GeoJSONSerializationContext.GetTypeInfo(System.Type)">
|
<member name="M:Cryville.EEW.Models.GeoJSON.GeoJSONSerializerContext.GetTypeInfo(System.Type)">
|
||||||
<inheritdoc/>
|
<inheritdoc/>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.Models.XmlSerializedDateTimeOffset">
|
<member name="T:Cryville.EEW.Models.XmlSerializedDateTimeOffset">
|
||||||
@@ -1039,6 +1039,9 @@
|
|||||||
<member name="P:Cryville.EEW.Report.EmptyRVMGeneratorContext.SeverityScheme">
|
<member name="P:Cryville.EEW.Report.EmptyRVMGeneratorContext.SeverityScheme">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:Cryville.EEW.Report.EmptyRVMGeneratorContext.LocationConverter">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
<member name="T:Cryville.EEW.Report.EmptySeverityScheme">
|
<member name="T:Cryville.EEW.Report.EmptySeverityScheme">
|
||||||
<summary>
|
<summary>
|
||||||
An empty <see cref="T:Cryville.EEW.Report.ISeverityScheme" /> that always returns <c>-1</c>.
|
An empty <see cref="T:Cryville.EEW.Report.ISeverityScheme" /> that always returns <c>-1</c>.
|
||||||
@@ -1189,6 +1192,11 @@
|
|||||||
The severity scheme.
|
The severity scheme.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:Cryville.EEW.Report.IRVMGeneratorContext.LocationConverter">
|
||||||
|
<summary>
|
||||||
|
The location converter.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:Cryville.EEW.Report.ISeverityScheme">
|
<member name="T:Cryville.EEW.Report.ISeverityScheme">
|
||||||
<summary>
|
<summary>
|
||||||
Represents a severity scheme, extracting severity values from different properties.
|
Represents a severity scheme, extracting severity values from different properties.
|
||||||
@@ -1497,6 +1505,11 @@
|
|||||||
The culture <c>en-US</c>.
|
The culture <c>en-US</c>.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="F:Cryville.EEW.SharedCultures.IdIdCulture">
|
||||||
|
<summary>
|
||||||
|
The culture <c>id-ID</c>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="F:Cryville.EEW.SharedCultures.JaJpCulture">
|
<member name="F:Cryville.EEW.SharedCultures.JaJpCulture">
|
||||||
<summary>
|
<summary>
|
||||||
The culture <c>ja-JP</c>.
|
The culture <c>ja-JP</c>.
|
||||||
@@ -1549,6 +1562,11 @@
|
|||||||
China Standard Time.
|
China Standard Time.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="F:Cryville.EEW.SharedTimeZones.SEAsia">
|
||||||
|
<summary>
|
||||||
|
SE Asia Standard Time.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="F:Cryville.EEW.SharedTimeZones.Taipei">
|
<member name="F:Cryville.EEW.SharedTimeZones.Taipei">
|
||||||
<summary>
|
<summary>
|
||||||
Taipei Standard Time.
|
Taipei Standard Time.
|
||||||
|
BIN
Assets/Plugins/QuakeML.dll
Normal file
BIN
Assets/Plugins/QuakeML.dll
Normal file
Binary file not shown.
33
Assets/Plugins/QuakeML.dll.meta
Normal file
33
Assets/Plugins/QuakeML.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a5809b30a2765e54aa6f2b5d15c00a76
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
46
Assets/Prefabs/Bitmap Holder.prefab
Normal file
46
Assets/Prefabs/Bitmap Holder.prefab
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1455558857588368834
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8746876075196617235}
|
||||||
|
- component: {fileID: 122704584488816298}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Bitmap Holder
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &8746876075196617235
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1455558857588368834}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &122704584488816298
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1455558857588368834}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c17f6b26e9a6bd74e8b2d071c6951c41, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
7
Assets/Prefabs/Bitmap Holder.prefab.meta
Normal file
7
Assets/Prefabs/Bitmap Holder.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1a5cf693e0cf6b94390f72f521c151ba
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 75452b90c729a7248958090ab7acd6fd
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"Culture": "en-US",
|
||||||
|
"Strings": {
|
||||||
|
"Headline": "An earthquake{1} occurred at {0:HH:mm:ss 'on' MMM dd yyyy} Western Indonesia Time.{2}",
|
||||||
|
"HeadlineDepth": " Hypocenter depth {0}km.",
|
||||||
|
"HeadlineMagnitude": " of magnitude {0:F1}",
|
||||||
|
"MaxIntensity": "The maximum intensity observed is {0}.",
|
||||||
|
"Region": "The epicenter is in {0}.",
|
||||||
|
"Title": "Earthquake Data.",
|
||||||
|
"TitleStandAlone": "Earthquake Data"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e4420490220c6df4fb07cd0c63dec184
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"Culture": "id-ID",
|
||||||
|
"Strings": {
|
||||||
|
"Headline": "Telah terjadi gempa pada {0:dd MMMM yyyy 'pukul' H 'lewat' m 'menit' s 'detik'} Waktu Indonesia Barat{1}{2}.",
|
||||||
|
"HeadlineDepth": ", pada kedalaman {0} km",
|
||||||
|
"HeadlineMagnitude": ", dengan magnitudo {0:F1}",
|
||||||
|
"MaxIntensity": "Intensitas gempa maksimum yang dirasakan adalah {0}.",
|
||||||
|
"Region": "Pusat gempa berada di {0}.",
|
||||||
|
"Title": "Data Gempabumi.",
|
||||||
|
"TitleStandAlone": "Data Gempabumi"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76aa8016add210b489ed175d006ef35d
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"Culture": "yue-HK",
|
||||||
|
"Strings": {
|
||||||
|
"Headline": "印度尼西亞西部時間{0},發生咗一次{1}地震。{2}",
|
||||||
|
"HeadlineDepth": "震源深度{0}公里。",
|
||||||
|
"HeadlineMagnitude": "規模{0:F1}級。",
|
||||||
|
"MaxIntensity": "觀測到嘅最大烈度為{0}。",
|
||||||
|
"Region": "震中位於{0}。",
|
||||||
|
"Title": "地震數據。",
|
||||||
|
"TitleStandAlone": "地震數據"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8e3514f18dcd7b74b9b54beccc44859a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"Culture": "zh-TW",
|
||||||
|
"Strings": {
|
||||||
|
"Headline": "印度尼西亞西部時間{0},發生了一次{1}地震。{2}",
|
||||||
|
"HeadlineDepth": "震源深度{0}公里。",
|
||||||
|
"HeadlineMagnitude": "規模{0:F1}級。",
|
||||||
|
"MaxIntensity": "觀測到的最大震度為{0}。",
|
||||||
|
"Region": "震中位於{0}。",
|
||||||
|
"Title": "地震數據。",
|
||||||
|
"TitleStandAlone": "地震數據"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cfe65eab919d49d468d19f4ecc516dd8
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"Culture": "zh-CN",
|
||||||
|
"Strings": {
|
||||||
|
"Headline": "印度尼西亚西部时间{0},发生了一次{1}地震。{2}",
|
||||||
|
"HeadlineDepth": "震源深度{0}千米。",
|
||||||
|
"HeadlineMagnitude": "规模{0:F1}级",
|
||||||
|
"MaxIntensity": "观测到的最大烈度为{0}。",
|
||||||
|
"Region": "震中位于{0}。",
|
||||||
|
"Title": "地震数据。",
|
||||||
|
"TitleStandAlone": "地震数据"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 899b38f34c7628c4e936ec2bdfdd5410
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 470f88c90de9dd74387453bffdbf21f7
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "en-US",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "BMKG Open Data"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a1d44f3546003e1498cfc23e8d16942f
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "id-ID",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "Data Terbuka BMKG"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f3b9467d0b8b4054c818a5607dcc247a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "yue-HK",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "BMKG 開放數據"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a025449f2f513e14fbbd596f87d47cb3
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "zh-TW",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "BMKG 開放數據"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d7c4a0eac847b5e458d4aaead9380023
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "zh-CN",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "BMKG 开放数据"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76619ea161099bc4ab2efb2ad0802bde
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/StreamingAssets/Messages/Cryville.EEW.EMSC.meta
Normal file
8
Assets/StreamingAssets/Messages/Cryville.EEW.EMSC.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 561a1f4df4315a04f9bcc5f961a8fd60
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "en-US",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "EMSC"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 717e698cdc268a74b990d4c756f2bbda
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"Culture": "en-US",
|
||||||
|
"Parent": "und",
|
||||||
|
"Strings": {
|
||||||
|
"526": "Gulf of America"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 01d2f8da0a8c09b45a8d79163519000a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -75,7 +75,7 @@
|
|||||||
"WEHW": "Hawaii",
|
"WEHW": "Hawaii",
|
||||||
"WEPA": "non US Pacific",
|
"WEPA": "non US Pacific",
|
||||||
"WEPA41": "Alaska, British Colombia, and US West Coast",
|
"WEPA41": "Alaska, British Colombia, and US West Coast",
|
||||||
"WEXX": "US Atlantic, Gulf of Mexico, and Canada",
|
"WEXX": "US Atlantic, Gulf of America, and Canada",
|
||||||
"WEZS": "American Samoa"
|
"WEZS": "American Samoa"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -378,9 +378,9 @@
|
|||||||
"WEPA40": "Tsunami Threat Message for Non US Pacific",
|
"WEPA40": "Tsunami Threat Message for Non US Pacific",
|
||||||
"WEPA41": "Tsunami Warning, Advisory, and Watch for Alaska, British Colombia, and US West Coast",
|
"WEPA41": "Tsunami Warning, Advisory, and Watch for Alaska, British Colombia, and US West Coast",
|
||||||
"WEPA42": "Tsunami Information Statement for Non US Pacific",
|
"WEPA42": "Tsunami Information Statement for Non US Pacific",
|
||||||
"WEXX20": "Tsunami Warning, Advisory, and Watch for US Atlantic, Gulf of Mexico, and Canada",
|
"WEXX20": "Tsunami Warning, Advisory, and Watch for US Atlantic, Gulf of America, and Canada",
|
||||||
"WEXX30": "Tsunami Warning, Advisory, and Watch for US Atlantic, Gulf of Mexico, and Canada",
|
"WEXX30": "Tsunami Warning, Advisory, and Watch for US Atlantic, Gulf of America, and Canada",
|
||||||
"WEXX32": "Tsunami Information Statement for US Atlantic, Gulf of Mexico, and Canada",
|
"WEXX32": "Tsunami Information Statement for US Atlantic, Gulf of America, and Canada",
|
||||||
"WEZS40": "Tsunami Warning, Advisory, and Watch for American Samoa",
|
"WEZS40": "Tsunami Warning, Advisory, and Watch for American Samoa",
|
||||||
"WEZS42": "Tsunami Information Statement for American Samoa"
|
"WEZS42": "Tsunami Information Statement for American Samoa"
|
||||||
}
|
}
|
||||||
|
8
Assets/StreamingAssets/Messages/Cryville.EEW.USGS.meta
Normal file
8
Assets/StreamingAssets/Messages/Cryville.EEW.USGS.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 58a3af6a954cf284991d05d023df9ac8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"Culture": "en-US",
|
||||||
|
"Strings": {
|
||||||
|
"SourceName": "USGS"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8319fb6384cd5254c86e9baae6810020
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -134,7 +134,7 @@ PlayerSettings:
|
|||||||
16:10: 1
|
16:10: 1
|
||||||
16:9: 1
|
16:9: 1
|
||||||
Others: 1
|
Others: 1
|
||||||
bundleVersion: 0.0.1
|
bundleVersion: 0.0.2
|
||||||
preloadedAssets: []
|
preloadedAssets: []
|
||||||
metroInputSource: 0
|
metroInputSource: 0
|
||||||
wsaTransparentSwapchain: 0
|
wsaTransparentSwapchain: 0
|
||||||
|
Reference in New Issue
Block a user