com.wallstop-studios.unity-helpers 2.0.0-rc49 → 2.0.0-rc51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/Runtime/Core/Extension/UnityExtensions.cs +8 -0
  2. package/Runtime/Core/Helper/SceneHelper.cs +216 -0
  3. package/Runtime/Core/Helper/SceneHelper.cs.meta +3 -0
  4. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +32 -0
  5. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs.meta +3 -0
  6. package/Runtime/Core/Random/AbstractRandom.cs +27 -4
  7. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs +88 -0
  8. package/Runtime/Core/Serialization/JsonConverters/ColorConverter.cs.meta +3 -0
  9. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +37 -0
  10. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs.meta +3 -0
  11. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs +218 -0
  12. package/Runtime/Core/Serialization/JsonConverters/Matrix4x4Converter.cs.meta +3 -0
  13. package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +2 -2
  14. package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +3 -3
  15. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs +88 -0
  16. package/Runtime/Core/Serialization/JsonConverters/Vector4Converter.cs.meta +3 -0
  17. package/Runtime/Core/Serialization/Serializer.cs +8 -0
  18. package/Runtime/Utils/DeferredDisposalResult.cs +19 -0
  19. package/Runtime/Utils/DeferredDisposalResult.cs.meta +3 -0
  20. package/Tests/Runtime/Helper/SceneHelperTests.cs +92 -0
  21. package/Tests/Runtime/Helper/SceneHelperTests.cs.meta +3 -0
  22. package/Tests/Runtime/Scenes/Test1.unity +723 -0
  23. package/Tests/Runtime/Scenes/Test1.unity.meta +7 -0
  24. package/Tests/Runtime/Scenes/Test2.unity +723 -0
  25. package/Tests/Runtime/Scenes/Test2.unity.meta +7 -0
  26. package/Tests/Runtime/Scenes.meta +3 -0
  27. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +64 -1
  28. package/package.json +1 -1
@@ -22,8 +22,8 @@
22
22
  throw new JsonException($"Invalid token type {reader.TokenType}");
23
23
  }
24
24
 
25
- float x = 0,
26
- y = 0;
25
+ float x = 0;
26
+ float y = 0;
27
27
 
28
28
  while (reader.Read())
29
29
  {
@@ -22,9 +22,9 @@
22
22
  throw new JsonException($"Invalid token type {reader.TokenType}");
23
23
  }
24
24
 
25
- float x = 0,
26
- y = 0,
27
- z = 0;
25
+ float x = 0;
26
+ float y = 0;
27
+ float z = 0;
28
28
 
29
29
  while (reader.Read())
30
30
  {
@@ -0,0 +1,88 @@
1
+ namespace UnityHelpers.Core.Serialization.JsonConverters
2
+ {
3
+ using System;
4
+ using System.Text.Json;
5
+ using System.Text.Json.Serialization;
6
+ using UnityEngine;
7
+
8
+ public sealed class Vector4Converter : JsonConverter<Vector4>
9
+ {
10
+ public static readonly Vector4Converter Instance = new();
11
+
12
+ private Vector4Converter() { }
13
+
14
+ public override Vector4 Read(
15
+ ref Utf8JsonReader reader,
16
+ Type typeToConvert,
17
+ JsonSerializerOptions options
18
+ )
19
+ {
20
+ if (reader.TokenType != JsonTokenType.StartObject)
21
+ {
22
+ throw new JsonException($"Invalid token type {reader.TokenType}");
23
+ }
24
+
25
+ float x = 0;
26
+ float y = 0;
27
+ float z = 0;
28
+ float w = 0;
29
+
30
+ while (reader.Read())
31
+ {
32
+ if (reader.TokenType == JsonTokenType.EndObject)
33
+ {
34
+ return new Vector4(x, y, z, w);
35
+ }
36
+
37
+ if (reader.TokenType == JsonTokenType.PropertyName)
38
+ {
39
+ string propertyName = reader.GetString();
40
+ reader.Read();
41
+ switch (propertyName)
42
+ {
43
+ case "x":
44
+ {
45
+ x = reader.GetSingle();
46
+ break;
47
+ }
48
+ case "y":
49
+ {
50
+ y = reader.GetSingle();
51
+ break;
52
+ }
53
+ case "z":
54
+ {
55
+ z = reader.GetSingle();
56
+ break;
57
+ }
58
+ case "w":
59
+ {
60
+ w = reader.GetSingle();
61
+ break;
62
+ }
63
+ default:
64
+ {
65
+ throw new JsonException($"Unknown property: {propertyName}");
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ throw new JsonException("Incomplete JSON for Vector4");
72
+ }
73
+
74
+ public override void Write(
75
+ Utf8JsonWriter writer,
76
+ Vector4 value,
77
+ JsonSerializerOptions options
78
+ )
79
+ {
80
+ writer.WriteStartObject();
81
+ writer.WriteNumber("x", value.x);
82
+ writer.WriteNumber("y", value.y);
83
+ writer.WriteNumber("z", value.z);
84
+ writer.WriteNumber("w", value.w);
85
+ writer.WriteEndObject();
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 89ed188581124a3abc07f3645220ef56
3
+ timeCreated: 1743568183
@@ -32,7 +32,11 @@
32
32
  new JsonStringEnumConverter(),
33
33
  Vector3Converter.Instance,
34
34
  Vector2Converter.Instance,
35
+ Vector4Converter.Instance,
36
+ Matrix4x4Converter.Instance,
35
37
  TypeConverter.Instance,
38
+ GameObjectConverter.Instance,
39
+ ColorConverter.Instance,
36
40
  },
37
41
  };
38
42
 
@@ -48,7 +52,11 @@
48
52
  new JsonStringEnumConverter(),
49
53
  Vector3Converter.Instance,
50
54
  Vector2Converter.Instance,
55
+ Vector4Converter.Instance,
56
+ Matrix4x4Converter.Instance,
51
57
  TypeConverter.Instance,
58
+ GameObjectConverter.Instance,
59
+ ColorConverter.Instance,
52
60
  },
53
61
  WriteIndented = true,
54
62
  };
@@ -0,0 +1,19 @@
1
+ namespace UnityHelpers.Utils
2
+ {
3
+ using System;
4
+ using System.Threading.Tasks;
5
+
6
+ public sealed class DeferredDisposalResult<T>
7
+ {
8
+ public T Result { get; }
9
+ private readonly Func<Task> _disposeAsync;
10
+
11
+ public DeferredDisposalResult(T result, Func<Task> disposeAsync)
12
+ {
13
+ Result = result;
14
+ _disposeAsync = disposeAsync;
15
+ }
16
+
17
+ public Task DisposeAsync() => _disposeAsync();
18
+ }
19
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 00dfb26d7b8d468fb709192ddf56e4bf
3
+ timeCreated: 1743970028
@@ -0,0 +1,92 @@
1
+ namespace UnityHelpers.Tests.Helper
2
+ {
3
+ using System;
4
+ using System.Collections;
5
+ using System.Collections.Generic;
6
+ using System.Linq;
7
+ using System.Threading.Tasks;
8
+ using Core.Helper;
9
+ using NUnit.Framework;
10
+ using UnityEngine;
11
+ using UnityEngine.TestTools;
12
+ using UnityHelpers.Utils;
13
+
14
+ public sealed class SceneHelperTests
15
+ {
16
+ private readonly List<Func<Task>> _disposalTasks = new();
17
+
18
+ [UnityTearDown]
19
+ public IEnumerator TearDown()
20
+ {
21
+ foreach (Task disposal in _disposalTasks.Select(disposalProducer => disposalProducer()))
22
+ {
23
+ while (!disposal.IsCompleted)
24
+ {
25
+ yield return null;
26
+ }
27
+ }
28
+
29
+ _disposalTasks.Clear();
30
+ }
31
+
32
+ [Test]
33
+ public void GetScenesInBuild()
34
+ {
35
+ // This will only pass if you have scenes in your build path
36
+ string[] scenes = SceneHelper.GetScenesInBuild();
37
+ Assert.That(scenes, Is.Not.Empty);
38
+ }
39
+
40
+ [Test]
41
+ public void GetAllScenePaths()
42
+ {
43
+ string[] scenePaths = SceneHelper.GetAllScenePaths();
44
+ Assert.That(scenePaths, Is.Not.Empty);
45
+ Assert.IsTrue(
46
+ scenePaths.Any(path => path.Contains("Test1")),
47
+ string.Join(",", scenePaths)
48
+ );
49
+ Assert.IsTrue(
50
+ scenePaths.Any(path => path.Contains("Test2")),
51
+ string.Join(",", scenePaths)
52
+ );
53
+ }
54
+
55
+ [UnityTest]
56
+ public IEnumerator GetObjectOfTypeInScene()
57
+ {
58
+ Task<DeferredDisposalResult<SpriteRenderer>> task =
59
+ SceneHelper.GetObjectOfTypeInScene<SpriteRenderer>(
60
+ @"Packages\com.wallstop-studios.unity-helpers\Tests\Runtime\Scenes\Test1.unity"
61
+ );
62
+ while (!task.IsCompleted)
63
+ {
64
+ yield return null;
65
+ }
66
+ Assert.IsTrue(task.IsCompletedSuccessfully, task.Exception?.ToString() ?? string.Empty);
67
+
68
+ _disposalTasks.Add(task.Result.DisposeAsync);
69
+ SpriteRenderer found = task.Result.Result;
70
+ Assert.IsTrue(found != null);
71
+ }
72
+
73
+ [UnityTest]
74
+ public IEnumerator GetAllObjectOfTypeInScene()
75
+ {
76
+ Task<DeferredDisposalResult<SpriteRenderer[]>> task =
77
+ SceneHelper.GetAllObjectsOfTypeInScene<SpriteRenderer>(
78
+ @"Packages\com.wallstop-studios.unity-helpers\Tests\Runtime\Scenes\Test1.unity"
79
+ );
80
+
81
+ while (!task.IsCompleted)
82
+ {
83
+ yield return null;
84
+ }
85
+
86
+ Assert.IsTrue(task.IsCompletedSuccessfully, task.Exception?.ToString() ?? string.Empty);
87
+ _disposalTasks.Add(task.Result.DisposeAsync);
88
+ SpriteRenderer[] found = task.Result.Result;
89
+ Assert.That(found, Has.Length.EqualTo(7));
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,3 @@
1
+ fileFormatVersion: 2
2
+ guid: 342b5f1eb6ff4986934cf2fa225f34a3
3
+ timeCreated: 1743957199