zooming for easy coloring
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
@@ -20,6 +21,7 @@ public interface IColoringController
|
|||||||
bool IsPlayingCompletionAnimation { get; }
|
bool IsPlayingCompletionAnimation { get; }
|
||||||
|
|
||||||
bool HasNonAuthoredColors { get; }
|
bool HasNonAuthoredColors { get; }
|
||||||
|
IDisposable UseNonZoomedView();
|
||||||
void ResetAll();
|
void ResetAll();
|
||||||
void Clear();
|
void Clear();
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,12 @@ namespace Darkmatter.Features.Capture
|
|||||||
// A null result keeps the existing thumbnail and skips the gallery write (both no-op on null).
|
// A null result keeps the existing thumbnail and skips the gallery write (both no-op on null).
|
||||||
if (_coloring.IsPlayingCompletionAnimation) return null;
|
if (_coloring.IsPlayingCompletionAnimation) return null;
|
||||||
|
|
||||||
var png = await _captureService.CapturePngAsync(_refs.PaperRoot.gameObject, _config.CaptureScale, ct);
|
byte[] png;
|
||||||
|
using (_coloring.UseNonZoomedView())
|
||||||
|
{
|
||||||
|
png = await _captureService.CapturePngAsync(_refs.PaperRoot.gameObject, _config.CaptureScale, ct);
|
||||||
|
}
|
||||||
|
|
||||||
if (!saveToGallery || png == null || png.Length == 0) return png;
|
if (!saveToGallery || png == null || png.Length == 0) return png;
|
||||||
|
|
||||||
var tex = new Texture2D(2, 2, TextureFormat.RGBA32, mipChain: false);
|
var tex = new Texture2D(2, 2, TextureFormat.RGBA32, mipChain: false);
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
"GUID:b4c9f7fbf1e144933a1797dc208ece5f",
|
"GUID:b4c9f7fbf1e144933a1797dc208ece5f",
|
||||||
"GUID:b0214a6008ed146ff8f122a6a9c2f6cc",
|
"GUID:b0214a6008ed146ff8f122a6a9c2f6cc",
|
||||||
"GUID:f51ebe6a0ceec4240a699833d6309b23",
|
"GUID:f51ebe6a0ceec4240a699833d6309b23",
|
||||||
"GUID:80ecb87cae9c44d19824e70ea7229748"
|
"GUID:80ecb87cae9c44d19824e70ea7229748",
|
||||||
|
"GUID:75469ad4d38634e559750d17036d5f7c"
|
||||||
],
|
],
|
||||||
"includePlatforms": [],
|
"includePlatforms": [],
|
||||||
"excludePlatforms": [],
|
"excludePlatforms": [],
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace Darkmatter.Features.Coloring
|
|||||||
public class ColoringFeatureModule : MonoBehaviour, IModule
|
public class ColoringFeatureModule : MonoBehaviour, IModule
|
||||||
{
|
{
|
||||||
[SerializeField] private ColorPaletteHolderView paletteHolderView;
|
[SerializeField] private ColorPaletteHolderView paletteHolderView;
|
||||||
|
[SerializeField] private ColoringPinchZoomController pinchZoomController;
|
||||||
|
|
||||||
public void Register(IContainerBuilder builder)
|
public void Register(IContainerBuilder builder)
|
||||||
{
|
{
|
||||||
@@ -20,6 +21,7 @@ namespace Darkmatter.Features.Coloring
|
|||||||
builder.RegisterEntryPoint<ColorPaletteHolderPresenter>().WithParameter(paletteHolderView);
|
builder.RegisterEntryPoint<ColorPaletteHolderPresenter>().WithParameter(paletteHolderView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder.RegisterComponent(pinchZoomController);
|
||||||
builder.Register<IColorButtonFactory, ColorButtonFactory>(Lifetime.Singleton);
|
builder.Register<IColorButtonFactory, ColorButtonFactory>(Lifetime.Singleton);
|
||||||
builder.Register<ColoringStateRepository>(Lifetime.Singleton);
|
builder.Register<ColoringStateRepository>(Lifetime.Singleton);
|
||||||
builder.Register<IColoringController, ColoringController>(Lifetime.Singleton);
|
builder.Register<IColoringController, ColoringController>(Lifetime.Singleton);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
private GameObject _colorButtonPrefab;
|
private GameObject _colorButtonPrefab;
|
||||||
private GameObject _completionAnimationInstance;
|
private GameObject _completionAnimationInstance;
|
||||||
private CompletionAnimationView _completionAnimationView;
|
private CompletionAnimationView _completionAnimationView;
|
||||||
|
private readonly ColoringPinchZoomController _pinchZoom;
|
||||||
private bool _isPlayingCompletionAnimation;
|
private bool _isPlayingCompletionAnimation;
|
||||||
private readonly List<ColorRegionView> _regions = new();
|
private readonly List<ColorRegionView> _regions = new();
|
||||||
private readonly List<ColorButton> _buttons = new();
|
private readonly List<ColorButton> _buttons = new();
|
||||||
@@ -41,6 +42,7 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
public ColoringController(
|
public ColoringController(
|
||||||
ColoringStateRepository repository,
|
ColoringStateRepository repository,
|
||||||
IColorButtonFactory buttonFactory,
|
IColorButtonFactory buttonFactory,
|
||||||
|
ColoringPinchZoomController pinchZoom,
|
||||||
IEventBus bus,
|
IEventBus bus,
|
||||||
IAssetProviderService assetProviderService,
|
IAssetProviderService assetProviderService,
|
||||||
IUndoStack history,
|
IUndoStack history,
|
||||||
@@ -52,6 +54,7 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
_bus = bus;
|
_bus = bus;
|
||||||
_assetProviderService = assetProviderService;
|
_assetProviderService = assetProviderService;
|
||||||
_history = history;
|
_history = history;
|
||||||
|
_pinchZoom = pinchZoom;
|
||||||
_refs = refs;
|
_refs = refs;
|
||||||
_paletteHolder = paletteHolder;
|
_paletteHolder = paletteHolder;
|
||||||
}
|
}
|
||||||
@@ -60,7 +63,7 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
IReadOnlyDictionary<string, Color> savedColors, CancellationToken ct)
|
IReadOnlyDictionary<string, Color> savedColors, CancellationToken ct)
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
_paletteHolder.Show();
|
_ = _paletteHolder.Show();
|
||||||
await TryLoadColorButtonPrefabAsync(ct);
|
await TryLoadColorButtonPrefabAsync(ct);
|
||||||
ct.ThrowIfCancellationRequested();
|
ct.ThrowIfCancellationRequested();
|
||||||
await TryLoadColorPaletteAsync(template, ct);
|
await TryLoadColorPaletteAsync(template, ct);
|
||||||
@@ -110,6 +113,8 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
{
|
{
|
||||||
if (_completionAnimationInstance == null || _completionAnimationView == null) return;
|
if (_completionAnimationInstance == null || _completionAnimationView == null) return;
|
||||||
if (_colorInstance != null) _colorInstance.SetActive(false);
|
if (_colorInstance != null) _colorInstance.SetActive(false);
|
||||||
|
if (_pinchZoom != null)
|
||||||
|
_pinchZoom.ResetZoom();
|
||||||
_completionAnimationInstance.SetActive(true);
|
_completionAnimationInstance.SetActive(true);
|
||||||
_isPlayingCompletionAnimation = true;
|
_isPlayingCompletionAnimation = true;
|
||||||
try
|
try
|
||||||
@@ -138,6 +143,14 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IDisposable UseNonZoomedView()
|
||||||
|
{
|
||||||
|
if (_pinchZoom == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return _pinchZoom.UseNonZoomedView();
|
||||||
|
}
|
||||||
|
|
||||||
public void ResetAll()
|
public void ResetAll()
|
||||||
{
|
{
|
||||||
if (_regions.Count == 0) return;
|
if (_regions.Count == 0) return;
|
||||||
@@ -175,6 +188,9 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
UnityEngine.Object.Destroy(_colorInstance);
|
UnityEngine.Object.Destroy(_colorInstance);
|
||||||
_colorInstance = null;
|
_colorInstance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_pinchZoom != null)
|
||||||
|
_pinchZoom.SetTarget(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() => Clear();
|
public void Dispose() => Clear();
|
||||||
@@ -182,6 +198,7 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
private void InitializeColorRegions(IDrawingTemplate template, IReadOnlyDictionary<string, Color> savedColors)
|
private void InitializeColorRegions(IDrawingTemplate template, IReadOnlyDictionary<string, Color> savedColors)
|
||||||
{
|
{
|
||||||
_colorInstance = UnityEngine.Object.Instantiate(template.ColoringPrefab, _refs.PaperRoot);
|
_colorInstance = UnityEngine.Object.Instantiate(template.ColoringPrefab, _refs.PaperRoot);
|
||||||
|
InitializePinchZoom(_refs.PaperRoot);
|
||||||
if (template.CompletionAnimationPrefab != null)
|
if (template.CompletionAnimationPrefab != null)
|
||||||
{
|
{
|
||||||
_completionAnimationInstance = UnityEngine.Object.Instantiate(template.CompletionAnimationPrefab, _refs.PaperRoot);
|
_completionAnimationInstance = UnityEngine.Object.Instantiate(template.CompletionAnimationPrefab, _refs.PaperRoot);
|
||||||
@@ -207,6 +224,17 @@ public class ColoringController : IColoringController, IDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitializePinchZoom(RectTransform target)
|
||||||
|
{
|
||||||
|
if (target == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_pinchZoom != null)
|
||||||
|
_pinchZoom.SetTarget(target);
|
||||||
|
}
|
||||||
|
|
||||||
private async UniTask TryLoadColorButtonPrefabAsync(CancellationToken ct)
|
private async UniTask TryLoadColorButtonPrefabAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
if (_colorButtonPrefab != null) return;
|
if (_colorButtonPrefab != null) return;
|
||||||
|
|||||||
@@ -0,0 +1,289 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.InputSystem;
|
||||||
|
|
||||||
|
namespace Darkmatter.Features.Coloring.Systems
|
||||||
|
{
|
||||||
|
|
||||||
|
public sealed class ColoringPinchZoomController : MonoBehaviour
|
||||||
|
{
|
||||||
|
private const float MinimumPinchDistance = 8f;
|
||||||
|
|
||||||
|
[SerializeField] private float minZoom = 1f;
|
||||||
|
[SerializeField] private float maxZoom = 3f;
|
||||||
|
[SerializeField] private float scrollZoomSensitivity = 0.0015f;
|
||||||
|
|
||||||
|
private RectTransform _target;
|
||||||
|
private RectTransform _parent;
|
||||||
|
private Canvas _canvas;
|
||||||
|
private Camera _eventCamera;
|
||||||
|
|
||||||
|
private bool _isPinching;
|
||||||
|
private float _currentZoom = 1f;
|
||||||
|
private Vector3 _baseScale = Vector3.one;
|
||||||
|
private Vector2 _baseAnchoredPosition;
|
||||||
|
|
||||||
|
public void SetTarget(RectTransform target)
|
||||||
|
{
|
||||||
|
ResetZoom();
|
||||||
|
_target = target;
|
||||||
|
_parent = target != null ? target.parent as RectTransform : null;
|
||||||
|
_canvas = target != null ? target.GetComponentInParent<Canvas>() : null;
|
||||||
|
_eventCamera = ResolveEventCamera(_canvas);
|
||||||
|
_baseScale = target != null ? target.localScale : Vector3.one;
|
||||||
|
_baseAnchoredPosition = target != null ? target.anchoredPosition : Vector2.zero;
|
||||||
|
_currentZoom = 1f;
|
||||||
|
enabled = _target != null && _parent != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetZoom()
|
||||||
|
{
|
||||||
|
if (_target != null)
|
||||||
|
{
|
||||||
|
_target.localScale = _baseScale;
|
||||||
|
_target.anchoredPosition = _baseAnchoredPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentZoom = 1f;
|
||||||
|
_isPinching = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDisposable UseNonZoomedView()
|
||||||
|
{
|
||||||
|
if (_target == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var state = new ViewState(_target.localScale, _target.anchoredPosition, _currentZoom);
|
||||||
|
ResetZoom();
|
||||||
|
return new NonZoomedViewScope(this, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (_target == null || _parent == null)
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TryApplyPinchZoom())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_isPinching = false;
|
||||||
|
TryApplyScrollZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool TryApplyPinchZoom()
|
||||||
|
{
|
||||||
|
if (!TryGetTouchSamples(out TouchSample firstTouch, out TouchSample secondTouch))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
float distance = Vector2.Distance(firstTouch.Position, secondTouch.Position);
|
||||||
|
if (distance < MinimumPinchDistance)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 midpoint = (firstTouch.Position + secondTouch.Position) * 0.5f;
|
||||||
|
if (!TryGetParentLocalPoint(midpoint, out Vector2 midpointLocal))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_isPinching)
|
||||||
|
{
|
||||||
|
_isPinching = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
float previousDistance = Vector2.Distance(firstTouch.PreviousPosition, secondTouch.PreviousPosition);
|
||||||
|
if (previousDistance < MinimumPinchDistance)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
float targetZoom = Mathf.Clamp(_currentZoom * (distance / previousDistance), minZoom, maxZoom);
|
||||||
|
ZoomTowards(midpointLocal, targetZoom);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TryApplyScrollZoom()
|
||||||
|
{
|
||||||
|
Mouse mouse = Mouse.current;
|
||||||
|
if (mouse == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float scroll = mouse.scroll.ReadValue().y;
|
||||||
|
if (Mathf.Approximately(scroll, 0f))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 screenPosition = mouse.position.ReadValue();
|
||||||
|
if (!IsInputPointAllowed(screenPosition))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TryGetParentLocalPoint(screenPosition, out Vector2 localPoint))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float targetZoom = Mathf.Clamp(_currentZoom * (1f + scroll * scrollZoomSensitivity), minZoom, maxZoom);
|
||||||
|
ZoomTowards(localPoint, targetZoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ZoomTowards(Vector2 parentLocalPoint, float targetZoom)
|
||||||
|
{
|
||||||
|
if (Mathf.Approximately(targetZoom, _currentZoom))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 contentPoint = (parentLocalPoint - _target.anchoredPosition) / _currentZoom;
|
||||||
|
_currentZoom = targetZoom;
|
||||||
|
_target.localScale = _baseScale * _currentZoom;
|
||||||
|
_target.anchoredPosition = Mathf.Approximately(_currentZoom, minZoom)
|
||||||
|
? _baseAnchoredPosition
|
||||||
|
: parentLocalPoint - contentPoint * _currentZoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool TryGetParentLocalPoint(Vector2 screenPoint, out Vector2 localPoint)
|
||||||
|
{
|
||||||
|
return RectTransformUtility.ScreenPointToLocalPointInRectangle(_parent, screenPoint, _eventCamera,
|
||||||
|
out localPoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool TryGetTouchSamples(out TouchSample firstTouch, out TouchSample secondTouch)
|
||||||
|
{
|
||||||
|
firstTouch = default;
|
||||||
|
secondTouch = default;
|
||||||
|
|
||||||
|
Touchscreen touchscreen = Touchscreen.current;
|
||||||
|
if (touchscreen == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
foreach (var touchControl in touchscreen.touches)
|
||||||
|
{
|
||||||
|
if (!touchControl.press.isPressed)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 position = touchControl.position.ReadValue();
|
||||||
|
if (!IsInputPointAllowed(position))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sample = new TouchSample(position, touchControl.delta.ReadValue());
|
||||||
|
if (count == 0)
|
||||||
|
{
|
||||||
|
firstTouch = sample;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
secondTouch = sample;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsInputPointAllowed(Vector2 screenPoint)
|
||||||
|
{
|
||||||
|
return _target != null &&
|
||||||
|
RectTransformUtility.RectangleContainsScreenPoint(_target, screenPoint, _eventCamera);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Camera ResolveEventCamera(Canvas canvas)
|
||||||
|
{
|
||||||
|
if (canvas == null || canvas.renderMode == RenderMode.ScreenSpaceOverlay)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return canvas.worldCamera;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RestoreView(ViewState state)
|
||||||
|
{
|
||||||
|
if (_target == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_target.localScale = state.Scale;
|
||||||
|
_target.anchoredPosition = state.AnchoredPosition;
|
||||||
|
_currentZoom = state.CurrentZoom;
|
||||||
|
_isPinching = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly struct ViewState
|
||||||
|
{
|
||||||
|
public readonly Vector3 Scale;
|
||||||
|
public readonly Vector2 AnchoredPosition;
|
||||||
|
public readonly float CurrentZoom;
|
||||||
|
|
||||||
|
public ViewState(Vector3 scale, Vector2 anchoredPosition, float currentZoom)
|
||||||
|
{
|
||||||
|
Scale = scale;
|
||||||
|
AnchoredPosition = anchoredPosition;
|
||||||
|
CurrentZoom = currentZoom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private sealed class NonZoomedViewScope : IDisposable
|
||||||
|
{
|
||||||
|
private ColoringPinchZoomController _controller;
|
||||||
|
private readonly ViewState _state;
|
||||||
|
|
||||||
|
public NonZoomedViewScope(ColoringPinchZoomController controller, ViewState state)
|
||||||
|
{
|
||||||
|
_controller = controller;
|
||||||
|
_state = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
if (_controller == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_controller != null)
|
||||||
|
_controller.RestoreView(_state);
|
||||||
|
|
||||||
|
_controller = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly struct TouchSample
|
||||||
|
{
|
||||||
|
public readonly Vector2 Position;
|
||||||
|
public readonly Vector2 PreviousPosition;
|
||||||
|
public readonly Vector2 Delta;
|
||||||
|
|
||||||
|
public TouchSample(Vector2 position, Vector2 delta)
|
||||||
|
{
|
||||||
|
Position = position;
|
||||||
|
PreviousPosition = position - delta;
|
||||||
|
Delta = delta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ddf9e0ad8b4b4ee59470410f7cf40689
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -74,7 +74,6 @@ MonoBehaviour:
|
|||||||
m_MixedLightingSupported: 1
|
m_MixedLightingSupported: 1
|
||||||
m_SupportsLightCookies: 1
|
m_SupportsLightCookies: 1
|
||||||
m_SupportsLightLayers: 0
|
m_SupportsLightLayers: 0
|
||||||
m_DebugLevel: 0
|
|
||||||
m_StoreActionsOptimization: 0
|
m_StoreActionsOptimization: 0
|
||||||
m_UseAdaptivePerformance: 1
|
m_UseAdaptivePerformance: 1
|
||||||
m_ColorGradingMode: 0
|
m_ColorGradingMode: 0
|
||||||
@@ -136,6 +135,7 @@ MonoBehaviour:
|
|||||||
m_PrefilterReflectionProbeBlending: 1
|
m_PrefilterReflectionProbeBlending: 1
|
||||||
m_PrefilterReflectionProbeBoxProjection: 1
|
m_PrefilterReflectionProbeBoxProjection: 1
|
||||||
m_PrefilterReflectionProbeAtlas: 1
|
m_PrefilterReflectionProbeAtlas: 1
|
||||||
|
m_PrefilterPointSamplingUpsampling: 1
|
||||||
m_ShaderVariantLogLevel: 0
|
m_ShaderVariantLogLevel: 0
|
||||||
m_ShadowCascades: 0
|
m_ShadowCascades: 0
|
||||||
m_Textures:
|
m_Textures:
|
||||||
|
|||||||
@@ -68,7 +68,20 @@ MonoBehaviour:
|
|||||||
- rid: 570818657416118287
|
- rid: 570818657416118287
|
||||||
- rid: 570818657416118288
|
- rid: 570818657416118288
|
||||||
m_RuntimeSettings:
|
m_RuntimeSettings:
|
||||||
m_List: []
|
m_List:
|
||||||
|
- rid: 7752762179098771456
|
||||||
|
- rid: 7752762179098771457
|
||||||
|
- rid: 7752762179098771459
|
||||||
|
- rid: 7752762179098771462
|
||||||
|
- rid: 7752762179098771464
|
||||||
|
- rid: 7752762179098771466
|
||||||
|
- rid: 7752762179098771468
|
||||||
|
- rid: 7752762179098771472
|
||||||
|
- rid: 7752762179098771476
|
||||||
|
- rid: 3114554777721110529
|
||||||
|
- rid: 3114554777721110530
|
||||||
|
- rid: 570818657416118282
|
||||||
|
- rid: 570818657416118283
|
||||||
m_AssetVersion: 10
|
m_AssetVersion: 10
|
||||||
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||||
m_RenderingLayerNames:
|
m_RenderingLayerNames:
|
||||||
|
|||||||
@@ -274,8 +274,8 @@ RectTransform:
|
|||||||
- {fileID: 259035378}
|
- {fileID: 259035378}
|
||||||
- {fileID: 1310839949}
|
- {fileID: 1310839949}
|
||||||
- {fileID: 376589367}
|
- {fileID: 376589367}
|
||||||
- {fileID: 1143672390}
|
|
||||||
- {fileID: 1340226039}
|
- {fileID: 1340226039}
|
||||||
|
- {fileID: 1427434780}
|
||||||
m_Father: {fileID: 1950265412}
|
m_Father: {fileID: 1950265412}
|
||||||
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}
|
||||||
@@ -2013,16 +2013,16 @@ RectTransform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1143672389}
|
m_GameObject: {fileID: 1143672389}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 153461769}
|
m_Father: {fileID: 1427434780}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -139.443, y: 163.666}
|
m_AnchoredPosition: {x: -83.744095, y: -9.064926}
|
||||||
m_SizeDelta: {x: 2439.04, y: 1377.741}
|
m_SizeDelta: {x: 2439.04, y: 1377.741}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &1143672392
|
--- !u!222 &1143672392
|
||||||
@@ -2636,6 +2636,96 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1351490753}
|
m_GameObject: {fileID: 1351490753}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!1 &1427434779
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1427434780}
|
||||||
|
- component: {fileID: 1427434782}
|
||||||
|
- component: {fileID: 1427434781}
|
||||||
|
- component: {fileID: 1427434783}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Mask
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1427434780
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1427434779}
|
||||||
|
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:
|
||||||
|
- {fileID: 1143672390}
|
||||||
|
m_Father: {fileID: 153461769}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: -55.698975, y: 172.73102}
|
||||||
|
m_SizeDelta: {x: -462.3999, y: -487.479}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1427434781
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1427434779}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 0}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!222 &1427434782
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1427434779}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1427434783
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1427434779}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Mask
|
||||||
|
m_ShowMaskGraphic: 0
|
||||||
--- !u!1 &1518670450
|
--- !u!1 &1518670450
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -2790,6 +2880,53 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Features.History::Darkmatter.Features.History.HistoryServiceModule
|
m_EditorClassIdentifier: Features.History::Darkmatter.Features.History.HistoryServiceModule
|
||||||
historyButtonsView: {fileID: 1310839950}
|
historyButtonsView: {fileID: 1310839950}
|
||||||
|
--- !u!1 &1794655486
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1794655488}
|
||||||
|
- component: {fileID: 1794655487}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Coloring Pinch Zoom Controller
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1794655487
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1794655486}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ddf9e0ad8b4b4ee59470410f7cf40689, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Features.Coloring::Darkmatter.Features.Coloring.Systems.ColoringPinchZoomController
|
||||||
|
minZoom: 1
|
||||||
|
maxZoom: 3
|
||||||
|
scrollZoomSensitivity: 0.0015
|
||||||
|
--- !u!4 &1794655488
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1794655486}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 393.77545, y: 435.62915, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &1867428028
|
--- !u!1 &1867428028
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -2835,6 +2972,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Features.Coloring::Darkmatter.Features.Coloring.ColoringFeatureModule
|
m_EditorClassIdentifier: Features.Coloring::Darkmatter.Features.Coloring.ColoringFeatureModule
|
||||||
paletteHolderView: {fileID: 1518670454}
|
paletteHolderView: {fileID: 1518670454}
|
||||||
|
pinchZoomController: {fileID: 1794655487}
|
||||||
--- !u!1 &1950265411
|
--- !u!1 &1950265411
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -3897,3 +4035,4 @@ SceneRoots:
|
|||||||
- {fileID: 2069155641}
|
- {fileID: 2069155641}
|
||||||
- {fileID: 396806866}
|
- {fileID: 396806866}
|
||||||
- {fileID: 1224714932}
|
- {fileID: 1224714932}
|
||||||
|
- {fileID: 1794655488}
|
||||||
|
|||||||
@@ -36,6 +36,15 @@ GraphicsSettings:
|
|||||||
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
|
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_PreloadedShaders: []
|
m_PreloadedShaders: []
|
||||||
m_PreloadShadersBatchTimeLimit: -1
|
m_PreloadShadersBatchTimeLimit: -1
|
||||||
|
m_GraphicsStateCollection: {fileID: 0}
|
||||||
|
m_CollectionStartupAction: 0
|
||||||
|
m_TraceSavePath: TracedCollection
|
||||||
|
m_TraceSendToEditor: 1
|
||||||
|
m_AdditionalWarmupCollections: []
|
||||||
|
m_WarmupAsync: 1
|
||||||
|
m_EnableCacheMissTracing: 0
|
||||||
|
m_WarmupProgressivelyLimit: -1
|
||||||
|
m_CacheMissCollectionPath: CacheMissCollection
|
||||||
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
|
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_CustomRenderPipeline: {fileID: 0}
|
m_CustomRenderPipeline: {fileID: 0}
|
||||||
m_TransparencySortMode: 0
|
m_TransparencySortMode: 0
|
||||||
@@ -61,6 +70,8 @@ GraphicsSettings:
|
|||||||
UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 93b439a37f63240aca3dd4e01d978a9f, type: 2}
|
UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 93b439a37f63240aca3dd4e01d978a9f, type: 2}
|
||||||
m_ShaderBuildSettings:
|
m_ShaderBuildSettings:
|
||||||
keywordDeclarationOverrides: []
|
keywordDeclarationOverrides: []
|
||||||
|
numInternalDefines: 0
|
||||||
|
defines: []
|
||||||
m_LightsUseLinearIntensity: 1
|
m_LightsUseLinearIntensity: 1
|
||||||
m_LightsUseColorTemperature: 1
|
m_LightsUseColorTemperature: 1
|
||||||
m_LogWhenShaderIsCompiled: 0
|
m_LogWhenShaderIsCompiled: 0
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ PlayerSettings:
|
|||||||
loadStoreDebugModeEnabled: 0
|
loadStoreDebugModeEnabled: 0
|
||||||
visionOSBundleVersion: 1.0
|
visionOSBundleVersion: 1.0
|
||||||
tvOSBundleVersion: 1.0
|
tvOSBundleVersion: 1.0
|
||||||
bundleVersion: 1.7
|
bundleVersion: 1.8
|
||||||
preloadedAssets:
|
preloadedAssets:
|
||||||
- {fileID: 11400000, guid: cc969dbecb228fa49b16da9273753a8f, type: 2}
|
- {fileID: 11400000, guid: cc969dbecb228fa49b16da9273753a8f, type: 2}
|
||||||
- {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
|
- {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
|
||||||
@@ -180,7 +180,7 @@ PlayerSettings:
|
|||||||
iPhone: 1
|
iPhone: 1
|
||||||
tvOS: 0
|
tvOS: 0
|
||||||
overrideDefaultApplicationIdentifier: 1
|
overrideDefaultApplicationIdentifier: 1
|
||||||
AndroidBundleVersionCode: 7
|
AndroidBundleVersionCode: 8
|
||||||
AndroidMinSdkVersion: 26
|
AndroidMinSdkVersion: 26
|
||||||
AndroidTargetSdkVersion: 0
|
AndroidTargetSdkVersion: 0
|
||||||
AndroidPreferredInstallLocation: 1
|
AndroidPreferredInstallLocation: 1
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
m_EditorVersion: 6000.5.0f1
|
m_EditorVersion: 6000.5.1f1
|
||||||
m_EditorVersionWithRevision: 6000.5.0f1 (88b47c5e7076)
|
m_EditorVersionWithRevision: 6000.5.1f1 (0d9463e84828)
|
||||||
|
|||||||
Reference in New Issue
Block a user