From df861765c2cb2594a3a1b05652b4988b0db523cb Mon Sep 17 00:00:00 2001 From: Savya Bikram Shah Date: Wed, 27 May 2026 16:01:45 +0545 Subject: [PATCH] Implemented Drawing and coloring DTOs and capture system --- .../Core/Contracts/Features/Coloring.meta | 8 + .../Features/Coloring/IColorPalette.cs | 11 + .../Features/Coloring/IColorPalette.cs.meta | 2 + .../Code/Core/Contracts/Features/Drawing.meta | 8 + .../Features/Drawing/IDrawingTemplate.cs | 16 ++ .../Features/Drawing/IDrawingTemplate.cs.meta | 2 + .../Drawing/IDrawingTemplateCatalog.cs | 16 ++ .../Drawing/IDrawingTemplateCatalog.cs.meta | 2 + .../Services/Capture/ICaptureService.cs | 8 +- .../Code/Core/Data/Dynamic/Features.meta | 8 + .../Core/Data/Dynamic/Features/Coloring.meta | 8 + .../Features/Coloring/ColorRegionDTO.cs | 20 ++ .../Features/Coloring/ColorRegionDTO.cs.meta | 2 + .../Features/Coloring/PaintCommandDTO.cs | 18 ++ .../Features/Coloring/PaintCommandDTO.cs.meta | 2 + .../Code/Core/Data/Static/Features.meta | 8 + .../Core/Data/Static/Features/Drawing.meta | 8 + .../Data/Static/Features/Drawing/ShapeSO.cs | 11 + .../Static/Features/Drawing/ShapeSO.cs.meta | 2 + .../Core/Enums/Services/Camera/CameraType.cs | 3 +- .../Camera/Installers/CameraServiceModule.cs | 4 +- Assets/Darkmatter/Code/Services/Capture.meta | 8 + .../Code/Services/Capture/Installers.meta | 8 + .../Installers/CaptureServiceModule.cs | 15 ++ .../Installers/CaptureServiceModule.cs.meta | 3 + .../Services/Capture/Services.Capture.asmdef | 19 ++ .../Capture/Services.Capture.asmdef.meta | 7 + .../Code/Services/Capture/Systems.meta | 8 + .../Capture/Systems/CaptureService.cs | 53 ++++ .../Capture/Systems/CaptureService.cs.meta | 2 + .../Installers/GalleryServiceModule.cs | 16 +- Assets/Darkmatter/Scenes/Boot.unity | 231 +++++++++++++++++- Assets/Darkmatter/Scenes/GamePlay.unity | 48 +--- 33 files changed, 518 insertions(+), 67 deletions(-) create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Coloring.meta create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs.meta create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Drawing.meta create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs.meta create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs create mode 100644 Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Dynamic/Features.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs create mode 100644 Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs create mode 100644 Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Static/Features.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing.meta create mode 100644 Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs create mode 100644 Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs.meta create mode 100644 Assets/Darkmatter/Code/Services/Capture.meta create mode 100644 Assets/Darkmatter/Code/Services/Capture/Installers.meta create mode 100644 Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs create mode 100644 Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs.meta create mode 100644 Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef create mode 100644 Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef.meta create mode 100644 Assets/Darkmatter/Code/Services/Capture/Systems.meta create mode 100644 Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs create mode 100644 Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs.meta diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring.meta b/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring.meta new file mode 100644 index 0000000..74ae1c0 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a7bd8ae1404546e58de3fbe788c53c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs b/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs new file mode 100644 index 0000000..2972e4e --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Darkmatter.Core.Contracts.Features.Coloring +{ + public interface IColorPalette + { + string Id { get; } + IReadOnlyList Colors { get; } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs.meta b/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs.meta new file mode 100644 index 0000000..7be238a --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Coloring/IColorPalette.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9727b71700be94dd5996eae7a4643d45 \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing.meta b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing.meta new file mode 100644 index 0000000..6d8a079 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 02f4802975f1b45cca88ffc81c71b624 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs new file mode 100644 index 0000000..904f246 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Darkmatter.Core.Data.Dynamic.Features.Coloring; +using UnityEngine; + +namespace Darkmatter.Core.Contracts.Features.Drawing +{ + public interface IDrawingTemplate + { + string Id { get; } + string DisplayName { get; } + Sprite DefaultThumbnail { get; } + Sprite PaperBackground { get; } + IReadOnlyList Pieces { get; } + IReadOnlyList Regions { get; } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs.meta b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs.meta new file mode 100644 index 0000000..0c97950 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplate.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 34c3363cf5c2645bf89a6716881d637d \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs new file mode 100644 index 0000000..67b9a19 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Cysharp.Threading.Tasks; +using UnityEngine; + +namespace Darkmatter.Core.Contracts.Features.Drawing +{ + public interface IDrawingTemplateCatalog + { + UniTask InitializeAsync(); + IReadOnlyList AllTemplateIds { get; } + UniTask GetThumbnailAsync(string id); + UniTask LoadAsync(string id); + void Release(string id); + string NextUnseen(string currentId); + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs.meta b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs.meta new file mode 100644 index 0000000..e311daf --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Contracts/Features/Drawing/IDrawingTemplateCatalog.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7932dbf9ea8724ec0962fb38ce70c69a \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Contracts/Services/Capture/ICaptureService.cs b/Assets/Darkmatter/Code/Core/Contracts/Services/Capture/ICaptureService.cs index 009ea65..fafd5f9 100644 --- a/Assets/Darkmatter/Code/Core/Contracts/Services/Capture/ICaptureService.cs +++ b/Assets/Darkmatter/Code/Core/Contracts/Services/Capture/ICaptureService.cs @@ -1,12 +1,12 @@ using System.Threading; using Cysharp.Threading.Tasks; +using UnityEngine; namespace Darkmatter.Core.Contracts.Services.Capture { public interface ICaptureService { - UniTask CapturePngAsync(CancellationToken cancellationToken = default); - - UniTask CaptureThumbnailPngAsync(int size, CancellationToken cancellationToken = default); + UniTask CapturePngAsync(GameObject captureObject, float captureSize, + CancellationToken cancellationToken = default); } -} +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Data/Dynamic/Features.meta b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features.meta new file mode 100644 index 0000000..aeee322 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44c0419b9655e43c5afdf89318ed6c5f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring.meta b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring.meta new file mode 100644 index 0000000..745f05f --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 743e19d2ea5974219a29de329a1b1558 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs new file mode 100644 index 0000000..94a4d91 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +namespace Darkmatter.Core.Data.Dynamic.Features.Coloring +{ + public readonly struct ColorRegionDTO + { + public string RegionId { get; } + public Sprite Sprite { get; } + public Vector2 AnchoredPosition { get; } + public Color InitialColor { get; } + + public ColorRegionDTO(string regionId, Sprite sprite, Vector2 anchoredPosition, Color initialColor) + { + RegionId = regionId; + Sprite = sprite; + AnchoredPosition = anchoredPosition; + InitialColor = initialColor; + } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs.meta b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs.meta new file mode 100644 index 0000000..5afa0eb --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/ColorRegionDTO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e1e7ce71b41d94e4085ab76ec3901c9b \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs new file mode 100644 index 0000000..1048396 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs @@ -0,0 +1,18 @@ +using UnityEngine; + +namespace Darkmatter.Core.Data.Dynamic.Features.Coloring +{ + public readonly struct PaintCommandDTO + { + public string RegionId { get; } + public Color FromColor { get; } + public Color ToColor { get; } + + public PaintCommandDTO(string regionId, Color fromColor, Color toColor) + { + RegionId = regionId; + FromColor = fromColor; + ToColor = toColor; + } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs.meta b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs.meta new file mode 100644 index 0000000..3fb7d7d --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Dynamic/Features/Coloring/PaintCommandDTO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1705bbb970da44af7b0cdf6c2fe90cfb \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Data/Static/Features.meta b/Assets/Darkmatter/Code/Core/Data/Static/Features.meta new file mode 100644 index 0000000..8388539 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Static/Features.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 064db7ec7e054459584db0e034cb8b6f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing.meta b/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing.meta new file mode 100644 index 0000000..3740659 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 168f5fe0aa08d4912813b586b93d5229 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs b/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs new file mode 100644 index 0000000..c824689 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace Darkmatter.Core +{ + [CreateAssetMenu(fileName = "ShapeSO", menuName = "Darkmatter/Drawing/New Shape")] + public class ShapeSO : ScriptableObject + { + [field: SerializeField] public string Id { get; private set; } + [field: SerializeField] public Sprite Sprite { get; private set; } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs.meta b/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs.meta new file mode 100644 index 0000000..432d535 --- /dev/null +++ b/Assets/Darkmatter/Code/Core/Data/Static/Features/Drawing/ShapeSO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fd4d7742f1ae94c31b7592503ec2bc2f \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Core/Enums/Services/Camera/CameraType.cs b/Assets/Darkmatter/Code/Core/Enums/Services/Camera/CameraType.cs index 172ddc7..ae8b65c 100644 --- a/Assets/Darkmatter/Code/Core/Enums/Services/Camera/CameraType.cs +++ b/Assets/Darkmatter/Code/Core/Enums/Services/Camera/CameraType.cs @@ -3,6 +3,7 @@ namespace Darkmatter.Core.Enums.Services.Camera public enum CameraType { MainCamera, - UICamera + UICamera, + CaptureCamera } } diff --git a/Assets/Darkmatter/Code/Services/Camera/Installers/CameraServiceModule.cs b/Assets/Darkmatter/Code/Services/Camera/Installers/CameraServiceModule.cs index 3500248..8a0c48c 100644 --- a/Assets/Darkmatter/Code/Services/Camera/Installers/CameraServiceModule.cs +++ b/Assets/Darkmatter/Code/Services/Camera/Installers/CameraServiceModule.cs @@ -11,13 +11,15 @@ namespace Darkmatter.Services.Camera.Installers { [SerializeField] private UnityEngine.Camera mainCamera; [SerializeField] private UnityEngine.Camera uiCamera; + [SerializeField] private UnityEngine.Camera captureCamera; public void Register(IContainerBuilder builder) { var cameras = new Dictionary { { CameraType.MainCamera, mainCamera }, - { CameraType.UICamera, uiCamera } + { CameraType.UICamera, uiCamera }, + { CameraType.CaptureCamera, captureCamera } }; builder.Register(Lifetime.Singleton).WithParameter(cameras); } diff --git a/Assets/Darkmatter/Code/Services/Capture.meta b/Assets/Darkmatter/Code/Services/Capture.meta new file mode 100644 index 0000000..7d81a28 --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfe101c06a10441b082df8d013705b5a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Services/Capture/Installers.meta b/Assets/Darkmatter/Code/Services/Capture/Installers.meta new file mode 100644 index 0000000..fdb0502 --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Installers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 726f6016537e648efbf32dbf5f1aa3f7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs b/Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs new file mode 100644 index 0000000..84a0b56 --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs @@ -0,0 +1,15 @@ +using Darkmatter.Core.Contracts.Services.Capture; +using Darkmatter.Libs.Installers; +using UnityEngine; +using VContainer; + +namespace Darkmatter.Services.Capture.Installers +{ + public class CaptureServiceModule : MonoBehaviour, IServiceModule + { + public void Register(IContainerBuilder builder) + { + builder.Register(Lifetime.Singleton); + } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs.meta b/Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs.meta new file mode 100644 index 0000000..e4e86f3 --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Installers/CaptureServiceModule.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e14e6746c7bb4b57808b4d3020dc7bbb +timeCreated: 1779876898 \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef b/Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef new file mode 100644 index 0000000..96179aa --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef @@ -0,0 +1,19 @@ +{ + "name": "Services.Capture", + "rootNamespace": "Darkmatter.Services.Capture", + "references": [ + "GUID:6a0a834eb41764f12ba55c3fb04a40cb", + "GUID:c1c03c0e5b2f4412b9f2be1c20d6a9b1", + "GUID:b0214a6008ed146ff8f122a6a9c2f6cc", + "GUID:f51ebe6a0ceec4240a699833d6309b23" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef.meta b/Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef.meta new file mode 100644 index 0000000..ac6cae7 --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Services.Capture.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 84edfab748bc54037bf370551f172e4f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Services/Capture/Systems.meta b/Assets/Darkmatter/Code/Services/Capture/Systems.meta new file mode 100644 index 0000000..931679d --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Systems.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16df33345840c4107a9b86892641ed13 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs b/Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs new file mode 100644 index 0000000..1341f4d --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs @@ -0,0 +1,53 @@ +using System.Threading; +using Cysharp.Threading.Tasks; +using Darkmatter.Core.Contracts.Services.Camera; +using Darkmatter.Core.Contracts.Services.Capture; +using UnityEngine; +using CameraType = Darkmatter.Core.Enums.Services.Camera.CameraType; + +namespace Darkmatter.Services.Capture +{ + public class CaptureService : ICaptureService + { + private readonly ICameraService _cameraService; + + public CaptureService(ICameraService cameraService) + { + _cameraService = cameraService; + } + + public async UniTask CapturePngAsync(GameObject captureObject, float captureSize, + CancellationToken cancellationToken = default) + { + var captureCamera = _cameraService.GetCamera(CameraType.CaptureCamera); + + await UniTask.Yield(PlayerLoopTiming.Update, cancellationToken); + + int size = Mathf.RoundToInt(captureSize); + var renderTexture = RenderTexture.GetTemporary(size, size, 24); + var previousTarget = captureCamera.targetTexture; + var previousActive = RenderTexture.active; + + try + { + captureCamera.targetTexture = renderTexture; + + captureCamera.Render(); + + RenderTexture.active = renderTexture; + + var texture = new Texture2D(size, size, TextureFormat.RGBA32, false); + texture.ReadPixels(new Rect(0, 0, size, size), 0, 0); + texture.Apply(); + + return Sprite.Create(texture, new Rect(0, 0, size, size), new Vector2(0.5f, 0.5f)); + } + finally + { + captureCamera.targetTexture = previousTarget; + RenderTexture.active = previousActive; + RenderTexture.ReleaseTemporary(renderTexture); + } + } + } +} \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs.meta b/Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs.meta new file mode 100644 index 0000000..f56e408 --- /dev/null +++ b/Assets/Darkmatter/Code/Services/Capture/Systems/CaptureService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6f5c8d288050e471d9d3d0ffc5e14799 \ No newline at end of file diff --git a/Assets/Darkmatter/Code/Services/Gallery/Installers/GalleryServiceModule.cs b/Assets/Darkmatter/Code/Services/Gallery/Installers/GalleryServiceModule.cs index 749a376..b3eb7e0 100644 --- a/Assets/Darkmatter/Code/Services/Gallery/Installers/GalleryServiceModule.cs +++ b/Assets/Darkmatter/Code/Services/Gallery/Installers/GalleryServiceModule.cs @@ -1,19 +1,15 @@ +using Darkmatter.Core.Contracts.Services.Gallery; +using Darkmatter.Libs.Installers; using UnityEngine; +using VContainer; namespace Darkmatter.Services.Gallery { - public class GalleryServiceModule : MonoBehaviour + public class GalleryServiceModule : MonoBehaviour,IServiceModule { - // Start is called once before the first execution of Update after the MonoBehaviour is created - void Start() + public void Register(IContainerBuilder builder) { - - } - - // Update is called once per frame - void Update() - { - + builder.Register(Lifetime.Singleton); } } } diff --git a/Assets/Darkmatter/Scenes/Boot.unity b/Assets/Darkmatter/Scenes/Boot.unity index 24bc884..9bf3c30 100644 --- a/Assets/Darkmatter/Scenes/Boot.unity +++ b/Assets/Darkmatter/Scenes/Boot.unity @@ -149,7 +149,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} m_Name: m_EditorClassIdentifier: - m_RenderShadows: 1 + m_RenderShadows: 0 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 m_CameraType: 1 @@ -247,6 +247,179 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &94039063 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 94039067} + - component: {fileID: 94039066} + - component: {fileID: 94039064} + m_Layer: 0 + m_Name: Capture Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &94039064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94039063} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 0 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: + - {fileID: 82022334} + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 1 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!20 &94039066 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94039063} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 34 + orthographic: 1 + orthographic size: 1 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 0 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &94039067 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 94039063} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + 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 &137105223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 137105224} + - component: {fileID: 137105225} + m_Layer: 0 + m_Name: CaptureServiceModule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &137105224 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137105223} + serializedVersion: 2 + 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: 274737044} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &137105225 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137105223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e14e6746c7bb4b57808b4d3020dc7bbb, type: 3} + m_Name: + m_EditorClassIdentifier: Services.Capture::Darkmatter.Services.Capture.Installers.CaptureServiceModule --- !u!1 &274737043 GameObject: m_ObjectHideFlags: 0 @@ -277,6 +450,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 292698384} + - {fileID: 137105224} m_Father: {fileID: 329578012} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &292698383 @@ -325,6 +499,7 @@ MonoBehaviour: m_EditorClassIdentifier: Services.Camera::Darkmatter.Services.Camera.Installers.CameraServiceModule mainCamera: {fileID: 519420031} uiCamera: {fileID: 82022334} + captureCamera: {fileID: 94039066} --- !u!1 &329578011 GameObject: m_ObjectHideFlags: 0 @@ -376,6 +551,7 @@ MonoBehaviour: autoInjectGameObjects: [] serviceModules: - {fileID: 292698385} + - {fileID: 137105225} --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -415,7 +591,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} m_Name: m_EditorClassIdentifier: - m_RenderShadows: 1 + m_RenderShadows: 0 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 m_CameraType: 0 @@ -542,9 +718,54 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1239449675} m_Father: {fileID: 1798580248} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1239449674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1239449675} + - component: {fileID: 1239449676} + m_Layer: 0 + m_Name: GalleryServiceModule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1239449675 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239449674} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -16.30939, y: -8.32207, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1050564725} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1239449676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1239449674} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f03c84255756e497f96c3baa7f6abe16, type: 3} + m_Name: + m_EditorClassIdentifier: Services.Gallery::Darkmatter.Services.Gallery.GalleryServiceModule --- !u!1 &1798580247 GameObject: m_ObjectHideFlags: 0 @@ -594,12 +815,14 @@ MonoBehaviour: TypeName: autoRun: 1 autoInjectGameObjects: [] - serviceModules: [] + serviceModules: + - {fileID: 1239449676} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 519420032} + - {fileID: 94039067} - {fileID: 82022335} - {fileID: 1798580248} - {fileID: 329578012} diff --git a/Assets/Darkmatter/Scenes/GamePlay.unity b/Assets/Darkmatter/Scenes/GamePlay.unity index b5a4c23..438594f 100644 --- a/Assets/Darkmatter/Scenes/GamePlay.unity +++ b/Assets/Darkmatter/Scenes/GamePlay.unity @@ -248,7 +248,7 @@ MonoBehaviour: autoRun: 1 autoInjectGameObjects: [] serviceModules: - - {fileID: 1594774441} + - {fileID: 0} - {fileID: 1551649429} --- !u!1 &1551649427 GameObject: @@ -294,51 +294,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 45c42e41a28d34b01a364a3c2631ba73, type: 3} m_Name: m_EditorClassIdentifier: Features.History::Darkmatter.Features.History.HistoryServiceModule ---- !u!1 &1594774439 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1594774440} - - component: {fileID: 1594774441} - m_Layer: 0 - m_Name: PaperRigServiceModule - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1594774440 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1594774439} - serializedVersion: 2 - 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: 1965442263} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1594774441 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1594774439} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ef7eaa67fc66d48c88c8ec12d27f9b14, type: 3} - m_Name: - m_EditorClassIdentifier: Features.PaperRig::Darkmatter.Features.PaperRig.PaperRigServiceModule - paperRig: {artCamera: {fileID: 0}, displayRect: {fileID: 0}} --- !u!1 &1965442262 GameObject: m_ObjectHideFlags: 0 @@ -368,7 +323,6 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1594774440} - {fileID: 1551649428} m_Father: {fileID: 1224714932} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}