15 Commits

18 changed files with 321 additions and 54 deletions

View File

@@ -1,7 +1,7 @@
using System; using System;
using UnityEngine; using UnityEngine;
namespace Utils { namespace Cryville.Common.Unity {
public class PropertyTweener<T> { public class PropertyTweener<T> {
readonly Func<T> _getter; readonly Func<T> _getter;
readonly Action<T> _setter; readonly Action<T> _setter;

View File

@@ -0,0 +1,3 @@
using System.Reflection;
[assembly: AssemblyVersion("0.0.1")]

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c468580e7742d414e96822c2dfe6e4b4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
namespace Cryville.EEW.Unity { namespace Cryville.EEW.Unity {
record Config( record Config(
string SeverityScheme, string SeverityScheme,
string SeverityColorMapping,
float SeverityColorMappingLuminanceMultiplier, float SeverityColorMappingLuminanceMultiplier,
bool UseContinuousColor, bool UseContinuousColor,
string ColorScheme, string ColorScheme,
@@ -16,7 +16,6 @@ namespace Cryville.EEW.Unity {
IReadOnlyCollection<EventSourceConfig> EventSources IReadOnlyCollection<EventSourceConfig> EventSources
) { ) {
public static Config Default => new( public static Config Default => new(
"Default",
"Default", "Default",
1f, 1f,
false, false,
@@ -27,9 +26,9 @@ namespace Cryville.EEW.Unity {
true, true,
new List<EventSourceConfig> { new List<EventSourceConfig> {
new JMAAtomEventSourceConfig(), new JMAAtomEventSourceConfig(Array.Empty<string>()),
new UpdateCheckerEventSourceConfig(), new UpdateCheckerEventSourceConfig(),
new WolfxEventSourceConfig(), new WolfxEventSourceConfig(Array.Empty<string>()),
} }
); );
} }

View File

@@ -26,7 +26,7 @@ namespace Cryville.EEW.Unity.Map {
_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;
UpdateTransform(); _mapElementUpdated = true;
} }
void OnDestroy() { void OnDestroy() {
_tiles.Dispose(); _tiles.Dispose();
@@ -39,7 +39,9 @@ namespace Cryville.EEW.Unity.Map {
static readonly Rect _viewportRect = new(0, 0, 1, 1); static readonly Rect _viewportRect = new(0, 0, 1, 1);
Vector3? ppos; Vector3? ppos;
bool _mapElementUpdated;
void Update() { void Update() {
bool flag = false;
var cpos = Input.mousePosition; var cpos = Input.mousePosition;
bool isMouseInViewport = _viewportRect.Contains(_camera.ScreenToViewportPoint(Input.mousePosition)); bool isMouseInViewport = _viewportRect.Contains(_camera.ScreenToViewportPoint(Input.mousePosition));
if (Input.GetMouseButtonDown(0) && isMouseInViewport) { if (Input.GetMouseButtonDown(0) && isMouseInViewport) {
@@ -49,18 +51,25 @@ namespace Cryville.EEW.Unity.Map {
var delta = _camera.ScreenToWorldPoint(pos0) - _camera.ScreenToWorldPoint(cpos); var delta = _camera.ScreenToWorldPoint(pos0) - _camera.ScreenToWorldPoint(cpos);
transform.position += delta; transform.position += delta;
ppos = cpos; ppos = cpos;
UpdateTransform(); flag = true;
} }
if (Input.GetMouseButtonUp(0)) { if (Input.GetMouseButtonUp(0)) {
ppos = null; ppos = null;
} }
if (Input.mouseScrollDelta.y != 0 && isMouseInViewport) { if (Input.mouseScrollDelta.y != 0 && isMouseInViewport) {
Scale *= Mathf.Pow(2, -Input.mouseScrollDelta.y / 8); Scale *= Mathf.Pow(2, -Input.mouseScrollDelta.y / 8);
UpdateTransform(); flag = true;
}
if (_mapElementUpdated) {
_mapElementUpdated = false;
ZoomToMapElement();
flag = true;
}
if (flag) {
UpdateTransform(); // Ensure UpdateTransform is called at most once per frame for tiles to unload correctly
} }
} }
void ZoomToMapElement() {
public void OnMapElementUpdated() {
var aabb = m_layerElement.AABB; var aabb = m_layerElement.AABB;
if (aabb is not RectangleF b) return; if (aabb is not RectangleF b) return;
if (b.Width * _camera.pixelHeight < _camera.pixelWidth * b.Height) if (b.Width * _camera.pixelHeight < _camera.pixelWidth * b.Height)
@@ -70,7 +79,9 @@ namespace Cryville.EEW.Unity.Map {
Scale *= 0.6f; Scale *= 0.6f;
if (Scale < 0.01f) Scale = 0.01f; if (Scale < 0.01f) Scale = 0.01f;
transform.localPosition = new PointF(b.X + b.Width / 2, b.Y + b.Height / 2).ToVector2(); transform.localPosition = new PointF(b.X + b.Width / 2, b.Y + b.Height / 2).ToVector2();
UpdateTransform(); }
public void OnMapElementUpdated() {
_mapElementUpdated = true;
} }
void UpdateTransform() { void UpdateTransform() {

View File

@@ -4,7 +4,7 @@ MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2
defaultReferences: [] defaultReferences: []
executionOrder: 0 executionOrder: 5
icon: {instanceID: 0} icon: {instanceID: 0}
userData: userData:
assetBundleName: assetBundleName:

View File

@@ -13,11 +13,16 @@ namespace Cryville.EEW.Unity.Map {
[RequireComponent(typeof(MeshFilter))] [RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))] [RequireComponent(typeof(MeshRenderer))]
class LineRenderer : MonoBehaviour { class LineRenderer : MonoBehaviour {
Material _sharedMaterial;
public Material Material { public Material Material {
get => _meshRenderer.material; get => _meshRenderer.sharedMaterial;
set { set {
_meshRenderer.material = value; if (value == _sharedMaterial) return;
_meshRenderer.material.color = m_color; if (_sharedMaterial != null) Destroy(_meshRenderer.sharedMaterial);
_sharedMaterial = value;
if (_sharedMaterial == null) return;
_meshRenderer.sharedMaterial = Instantiate(_sharedMaterial);
_meshRenderer.sharedMaterial.color = m_color;
} }
} }
@@ -28,7 +33,7 @@ namespace Cryville.EEW.Unity.Map {
set { set {
if (m_color == value) return; if (m_color == value) return;
m_color = value; m_color = value;
_meshRenderer.material.color = value; _meshRenderer.sharedMaterial.color = value;
} }
} }
@@ -126,12 +131,17 @@ namespace Cryville.EEW.Unity.Map {
_meshFilter.mesh = new(); _meshFilter.mesh = new();
} }
_mesh = _meshFilter.mesh; _mesh = _meshFilter.mesh;
_meshRenderer.material.color = m_color; if (_sharedMaterial == null && _meshRenderer.sharedMaterial != null) {
_sharedMaterial = _meshRenderer.sharedMaterial;
_meshRenderer.sharedMaterial = Instantiate(_sharedMaterial);
_meshRenderer.sharedMaterial.color = m_color;
}
} }
void OnDestroy() { void OnDestroy() {
if (_positions is not null) if (_positions is not null)
ArrayPool<Vector2>.Shared.Return(_positions); ArrayPool<Vector2>.Shared.Return(_positions);
Destroy(_mesh); Destroy(_mesh);
Destroy(Material);
} }
void LateUpdate() { void LateUpdate() {
if (_valid) return; if (_valid) return;

View File

@@ -22,6 +22,8 @@ namespace Cryville.EEW.Unity.Map {
readonly List<ReportViewModel> _displayingReports = new(); readonly List<ReportViewModel> _displayingReports = new();
readonly List<int> _displayingOrder = new(); readonly List<int> _displayingOrder = new();
public int Count => _displayingReports.Count;
[SerializeField] MapElementManager m_subManager; [SerializeField] MapElementManager m_subManager;
public RectangleF? AABB { public RectangleF? AABB {
@@ -37,25 +39,44 @@ namespace Cryville.EEW.Unity.Map {
return _displayingElements[index].AABB; return _displayingElements[index].AABB;
} }
public void AddOngoing(ReportViewModel e) => Add(e); public void SetSelected(ReportViewModel e, bool forced = false) {
public void RemoveOngoing(ReportViewModel e) => Remove(e); if (e == null) {
public void SetSelected(ReportViewModel e) {
if (_selected is not null)
Remove(_selected); Remove(_selected);
if (e == null || _displayingReports.Contains(e)) {
_selected = null; _selected = null;
return; return;
} }
Add(e); if (_displayingReports.Contains(e)) {
if (forced) return;
Remove(_selected);
_selected = null;
return;
}
if (e.IsExcludedFromHistory)
return;
if (!Add(e))
return;
if (_selected is not null)
Remove(_selected);
_selected = e; _selected = e;
} }
public void SetCurrent(ReportViewModel e) { public bool SetCurrent(ReportViewModel e) {
if (e == null) {
_current = null;
return true;
}
if (!_displayingReports.Contains(e)) {
_current = null;
return false;
}
if (_current == e)
return false;
_current = e; _current = e;
return true;
} }
void Add(ReportViewModel e) { public bool Add(ReportViewModel e) {
var element = Build(e.Model, out _, out int order); var element = Build(e.Model, out _, out int order);
if (element == null) return; if (element == null) return false;
var pos = element.transform.localPosition; var pos = element.transform.localPosition;
pos.z = OrderToZ(_displayingOrder.Sum()); pos.z = OrderToZ(_displayingOrder.Sum());
element.transform.localPosition = pos; element.transform.localPosition = pos;
@@ -64,8 +85,10 @@ namespace Cryville.EEW.Unity.Map {
_displayingOrder.Add(order); _displayingOrder.Add(order);
element.transform.SetParent(transform, false); element.transform.SetParent(transform, false);
if (m_subManager != null) m_subManager.Add(e); if (m_subManager != null) m_subManager.Add(e);
return true;
} }
void Remove(ReportViewModel e) { public void Remove(ReportViewModel e) {
if (_current == e) _current = null;
int index = _displayingReports.IndexOf(e); int index = _displayingReports.IndexOf(e);
if (index == -1) return; if (index == -1) return;
_displayingElements.RemoveAt(index); _displayingElements.RemoveAt(index);

View File

@@ -87,7 +87,7 @@ namespace Cryville.EEW.Unity.Map {
if (_texHandler.isDone) { if (_texHandler.isDone) {
_tex = _texHandler.texture; _tex = _texHandler.texture;
_tex.wrapMode = TextureWrapMode.Clamp; _tex.wrapMode = TextureWrapMode.Clamp;
_sprite = Sprite.Create(_tex, new Rect(0, 0, _tex.width, _tex.height), Vector2.zero, _tex.height); _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; _renderer.sprite = _sprite;
} }
else { else {
@@ -105,6 +105,7 @@ namespace Cryville.EEW.Unity.Map {
if (_req != null) { if (_req != null) {
_req.Abort(); _req.Abort();
_req.Dispose(); _req.Dispose();
_texHandler.Dispose();
} }
if (_sprite) Destroy(_sprite); if (_sprite) Destroy(_sprite);
if (_tex) Destroy(_tex); if (_tex) Destroy(_tex);

View File

@@ -48,11 +48,13 @@ namespace Cryville.EEW.Unity.Map {
_segments.Add(segment = Instantiate(m_lineRendererPrefab, transform, false).GetComponent<LineRenderer>()); _segments.Add(segment = Instantiate(m_lineRendererPrefab, transform, false).GetComponent<LineRenderer>());
} }
else { else {
segment = _segments[_segmentIndex++]; segment = _segments[_segmentIndex];
segment.gameObject.SetActive(true); segment.gameObject.SetActive(true);
} }
_segmentIndex++;
segment.SetPositions(positions, index, length); segment.SetPositions(positions, index, length);
segment.Width = m_width; segment.Width = m_width;
segment.TilingScale = m_tilingScale;
} }
public void Clear() { public void Clear() {
for (int i = 0; i < _segmentIndex; i++) { for (int i = 0; i < _segmentIndex; i++) {

View File

@@ -11,11 +11,16 @@ namespace Cryville.EEW.Unity.Map {
[RequireComponent(typeof(MeshFilter))] [RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))] [RequireComponent(typeof(MeshRenderer))]
class PolygonRenderer : MonoBehaviour { class PolygonRenderer : MonoBehaviour {
Material _sharedMaterial;
public Material Material { public Material Material {
get => _meshRenderer.material; get => _meshRenderer.sharedMaterial;
set { set {
_meshRenderer.material = value; if (value == _sharedMaterial) return;
_meshRenderer.material.color = m_color; if (_sharedMaterial != null) Destroy(_meshRenderer.sharedMaterial);
_sharedMaterial = value;
if (_sharedMaterial == null) return;
_meshRenderer.sharedMaterial = Instantiate(_sharedMaterial);
_meshRenderer.sharedMaterial.color = m_color;
} }
} }
@@ -40,10 +45,15 @@ namespace Cryville.EEW.Unity.Map {
_meshFilter.mesh = new(); _meshFilter.mesh = new();
} }
_mesh = _meshFilter.mesh; _mesh = _meshFilter.mesh;
_meshRenderer.material.color = m_color; if (_sharedMaterial == null && _meshRenderer.sharedMaterial != null) {
_sharedMaterial = _meshRenderer.sharedMaterial;
_meshRenderer.sharedMaterial = Instantiate(_sharedMaterial);
_meshRenderer.sharedMaterial.color = m_color;
}
} }
void OnDestroy() { void OnDestroy() {
Destroy(_mesh); Destroy(_mesh);
Destroy(Material);
} }
public void SetPolygon(IEnumerable<IEnumerable<PointF>> polygon) { public void SetPolygon(IEnumerable<IEnumerable<PointF>> polygon) {
_mesh.Clear(); _mesh.Clear();

View File

@@ -69,11 +69,14 @@ namespace Cryville.EEW.Unity {
"Legacy" => new LegacySeverityScheme(), "Legacy" => new LegacySeverityScheme(),
_ => throw new InvalidOperationException("Unknown severity scheme."), _ => throw new InvalidOperationException("Unknown severity scheme."),
}; };
SeverityColorMapping = config.SeverityColorMapping switch { SeverityColorMapping = config.ColorScheme switch {
"Default" => new DefaultSeverityColorMapping(config.SeverityColorMappingLuminanceMultiplier), "Default" => new DefaultSeverityColorMapping(config.SeverityColorMappingLuminanceMultiplier),
"SREV" => new SREVSeverityColorMapping(config.SeverityColorMappingLuminanceMultiplier), "SREV" => new SREVSeverityColorMapping(config.SeverityColorMappingLuminanceMultiplier),
"SREVBorder" => new SREVBorderSeverityColorMapping(config.SeverityColorMappingLuminanceMultiplier), "DichromaticYB" => new DichromaticSeverityColorMapping(0.62f, 0.20f, 90, config.SeverityColorMappingLuminanceMultiplier),
_ => throw new InvalidOperationException("Unknown severity color mapping."), "DichromaticRC" => new DichromaticSeverityColorMapping(0.62f, 0.25f, 30, config.SeverityColorMappingLuminanceMultiplier),
"DichromaticPG" => new DichromaticSeverityColorMapping(0.62f, 0.30f, -30, config.SeverityColorMappingLuminanceMultiplier),
"Monochromatic" => new MonochromaticSeverityColorMapping(config.SeverityColorMappingLuminanceMultiplier),
_ => throw new InvalidOperationException("Unknown color scheme."),
}; };
UseContinuousColor = config.UseContinuousColor; UseContinuousColor = config.UseContinuousColor;
ColorScheme = config.ColorScheme switch { ColorScheme = config.ColorScheme switch {

View File

@@ -16,8 +16,6 @@ namespace Cryville.EEW.Unity.UI {
readonly List<ReportViewModel> _displayingReports = new(); readonly List<ReportViewModel> _displayingReports = new();
readonly List<EventOngoingView> _displayingViews = new(); readonly List<EventOngoingView> _displayingViews = new();
public int Count => _displayingReports.Count;
public void Add(ReportViewModel e) { public void Add(ReportViewModel e) {
_displayingReports.Add(e); _displayingReports.Add(e);
@@ -81,14 +79,15 @@ namespace Cryville.EEW.Unity.UI {
m_currentView.SetViewModel(e, true); m_currentView.SetViewModel(e, true);
var keyProp = e.Properties.FirstOrDefault(); var keyProp = e.Properties.FirstOrDefault();
_displayingViews[_index].SetCurrent(true); _displayingViews[_index].SetCurrent(true);
_tickDown = Math.Max(0, keyProp?.Severity ?? 0) * 4 + 4; _tickDown = MathF.Exp(Math.Max(-1f, keyProp?.Severity ?? -1f) + 1);
m_currentView.gameObject.SetActive(true); m_currentView.gameObject.SetActive(true);
Worker.Instance.SetCurrent(e); Worker.Instance.SetCurrent(e);
} }
public void SetCurrent(ReportViewModel viewModel) { public void OnItemClicked(ReportViewModel viewModel) {
int index = _displayingReports.IndexOf(viewModel); int index = _displayingReports.IndexOf(viewModel);
if (index == -1) return; if (index == -1) return;
SwitchTo(index); SwitchTo(index);
Worker.Instance.SetSelected(null);
} }
} }
} }

View File

@@ -1,10 +1,10 @@
using Cryville.Common.Unity;
using Cryville.Common.Unity.UI; using Cryville.Common.Unity.UI;
using Cryville.EEW.Report; using Cryville.EEW.Report;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using Utils;
namespace Cryville.EEW.Unity.UI { namespace Cryville.EEW.Unity.UI {
class EventOngoingView : MonoBehaviour { class EventOngoingView : MonoBehaviour {
@@ -51,7 +51,7 @@ namespace Cryville.EEW.Unity.UI {
m_button.onClick.AddListener(OnViewClicked); m_button.onClick.AddListener(OnViewClicked);
} }
void OnViewClicked() { void OnViewClicked() {
EventOngoingListView.Instance.SetCurrent(_viewModel); EventOngoingListView.Instance.OnItemClicked(_viewModel);
} }
void Update() { void Update() {
_dockRatioTweener.Advance(Time.deltaTime); _dockRatioTweener.Advance(Time.deltaTime);

View File

@@ -0,0 +1,27 @@
using System.Globalization;
using TMPro;
using UnityEngine;
namespace Cryville.EEW.Unity.UI {
[RequireComponent(typeof(TMP_Text))]
class StatusView : MonoBehaviour {
TMP_Text _textView;
void Awake() {
_textView = GetComponent<TMP_Text>();
}
void Update() {
_textView.text = string.Format(
CultureInfo.InvariantCulture,
"FPS: i{0:0} / s{1:0}\nSMem: {2:N0} / {3:N0}\nIMem: {4:N0} / {5:N0}",
1 / Time.deltaTime,
1 / Time.smoothDeltaTime,
UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong(),
UnityEngine.Profiling.Profiler.GetMonoHeapSizeLong(),
UnityEngine.Profiling.Profiler.GetTotalAllocatedMemoryLong(),
UnityEngine.Profiling.Profiler.GetTotalReservedMemoryLong()
);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4e142baf0f0bd70439133e17e7185611
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -12,9 +12,11 @@ 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.Wolfx; using Cryville.EEW.Wolfx;
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.Linq;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Threading; using System.Threading;
@@ -138,7 +140,6 @@ namespace Cryville.EEW.Unity {
} }
#endif #endif
} }
#if !UNITY_EDITOR
JMAAtomWorker BuildJMAAtomWorkerFilter(JMAAtomWorker worker, JMAAtomEventSourceConfig config) { 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;
@@ -157,13 +158,13 @@ namespace Cryville.EEW.Unity {
worker.IsFilterWhitelist = config.IsFilterWhitelist; worker.IsFilterWhitelist = config.IsFilterWhitelist;
return worker; return worker;
} }
#endif
readonly OngoingReportManager _ongoingReportManager = new(); readonly OngoingReportManager _ongoingReportManager = new();
readonly ConcurrentQueue<Action> _uiActionQueue = new(); readonly ConcurrentQueue<Action> _uiActionQueue = new();
ReportViewModel _latestHistoryReport; ReportViewModel _latestHistoryReport;
void OnReported(object sender, ReportViewModel e) { void OnReported(object sender, ReportViewModel e) {
Debug.Log(e); if (e.Model is Exception && e.Model is not SourceWorkerNetworkException)
Debug.LogError(e);
_ongoingReportManager.Report(e); _ongoingReportManager.Report(e);
_uiActionQueue.Enqueue(() => { _uiActionQueue.Enqueue(() => {
m_mapElementManager.SetSelected(e); m_mapElementManager.SetSelected(e);
@@ -176,18 +177,20 @@ namespace Cryville.EEW.Unity {
void OnOngoingReported(ReportViewModel item, CollectionChangeAction action) { void OnOngoingReported(ReportViewModel item, CollectionChangeAction action) {
if (action == CollectionChangeAction.Add) { if (action == CollectionChangeAction.Add) {
_uiActionQueue.Enqueue(() => { _uiActionQueue.Enqueue(() => {
m_mapElementManager.AddOngoing(item); if (m_mapElementManager.Add(item)) {
m_mapElementManager.SetSelected(null);
}
m_ongoingEventList.Add(item); m_ongoingEventList.Add(item);
m_cameraController.OnMapElementUpdated(); m_cameraController.OnMapElementUpdated();
}); });
} }
else if (action == CollectionChangeAction.Remove) { else if (action == CollectionChangeAction.Remove) {
_uiActionQueue.Enqueue(() => { _uiActionQueue.Enqueue(() => {
m_mapElementManager.RemoveOngoing(item); m_mapElementManager.Remove(item);
m_ongoingEventList.Remove(item); if (m_mapElementManager.Count == 0 && SharedSettings.Instance.DoSwitchBackToHistory && _latestHistoryReport is not null) {
if (m_ongoingEventList.Count == 0 && SharedSettings.Instance.DoSwitchBackToHistory && _latestHistoryReport is not null) { m_mapElementManager.SetSelected(_latestHistoryReport, true);
m_mapElementManager.SetSelected(_latestHistoryReport);
} }
m_ongoingEventList.Remove(item);
m_cameraController.OnMapElementUpdated(); m_cameraController.OnMapElementUpdated();
}); });
} }
@@ -203,8 +206,9 @@ namespace Cryville.EEW.Unity {
m_cameraController.OnMapElementUpdated(); m_cameraController.OnMapElementUpdated();
} }
public void SetCurrent(ReportViewModel e) { public void SetCurrent(ReportViewModel e) {
m_mapElementManager.SetCurrent(e); if (m_mapElementManager.SetCurrent(e)) {
m_cameraController.OnMapElementUpdated(); m_cameraController.OnMapElementUpdated();
}
} }
void Update() { void Update() {

View File

@@ -706,6 +706,7 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 123805241} - {fileID: 123805241}
- {fileID: 2039723256}
- {fileID: 1925427751} - {fileID: 1925427751}
m_Father: {fileID: 1431650511} m_Father: {fileID: 1431650511}
m_RootOrder: 2 m_RootOrder: 2
@@ -1362,12 +1363,12 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 408286581} m_Father: {fileID: 408286581}
m_RootOrder: 1 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 1180, y: 620} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1925427753 --- !u!114 &1925427753
MonoBehaviour: MonoBehaviour:
@@ -1466,6 +1467,158 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1925427750} m_GameObject: {fileID: 1925427750}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &2039723255
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2039723256}
- component: {fileID: 2039723259}
- component: {fileID: 2039723258}
- component: {fileID: 2039723257}
m_Layer: 5
m_Name: Status
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2039723256
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039723255}
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: 408286581}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2039723257
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039723255}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e142baf0f0bd70439133e17e7185611, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &2039723258
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039723255}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 83e7715acbfae1d4b84414c13d03ed3f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 'FPS: i60 / s60
SMem: 0 / 0
IMem: 0 / 0'
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 2b12354fb2d86744887c3e4bfee63986, type: 2}
m_sharedMaterial: {fileID: -3021868053195457599, guid: 2b12354fb2d86744887c3e4bfee63986, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4279769379
m_fontColor: {r: 0.13725491, g: 0.09803922, b: 0.09411765, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 12
m_fontSizeBase: 12
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 0
m_fontSizeMax: 0
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 1024
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 0
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 8, y: 4, z: 8, w: 4}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &2039723259
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2039723255}
m_CullTransparentMesh: 1
--- !u!114 &79416137231161493 --- !u!114 &79416137231161493
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0