net.dreditor.addons 0.1.6 → 0.1.7

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.
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: 9d27d7502db37de4da48ef274fed9bd8
3
- PrefabImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 9d27d7502db37de4da48ef274fed9bd8
3
+ PrefabImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
@@ -1,48 +1,48 @@
1
- %YAML 1.1
2
- %TAG !u! tag:unity3d.com,2011:
3
- --- !u!1 &1447475270847817773
4
- GameObject:
5
- m_ObjectHideFlags: 0
6
- m_CorrespondingSourceObject: {fileID: 0}
7
- m_PrefabInstance: {fileID: 0}
8
- m_PrefabAsset: {fileID: 0}
9
- serializedVersion: 6
10
- m_Component:
11
- - component: {fileID: 2356132341465688875}
12
- - component: {fileID: 4599954098836446390}
13
- m_Layer: 0
14
- m_Name: DisableSSAO
15
- m_TagString: Untagged
16
- m_Icon: {fileID: 0}
17
- m_NavMeshLayer: 0
18
- m_StaticEditorFlags: 0
19
- m_IsActive: 1
20
- --- !u!4 &2356132341465688875
21
- Transform:
22
- m_ObjectHideFlags: 0
23
- m_CorrespondingSourceObject: {fileID: 0}
24
- m_PrefabInstance: {fileID: 0}
25
- m_PrefabAsset: {fileID: 0}
26
- m_GameObject: {fileID: 1447475270847817773}
27
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28
- m_LocalPosition: {x: 0, y: 0, z: 0}
29
- m_LocalScale: {x: 1, y: 1, z: 1}
30
- m_ConstrainProportionsScale: 0
31
- m_Children: []
32
- m_Father: {fileID: 0}
33
- m_RootOrder: 0
34
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
35
- --- !u!114 &4599954098836446390
36
- MonoBehaviour:
37
- m_ObjectHideFlags: 0
38
- m_CorrespondingSourceObject: {fileID: 0}
39
- m_PrefabInstance: {fileID: 0}
40
- m_PrefabAsset: {fileID: 0}
41
- m_GameObject: {fileID: 1447475270847817773}
42
- m_Enabled: 1
43
- m_EditorHideFlags: 0
44
- m_Script: {fileID: 11500000, guid: 2da86bbb52651f248abe013924b0d71a, type: 3}
45
- m_Name:
46
- m_EditorClassIdentifier:
47
- rendererData: {fileID: 11400000, guid: 2fd9deb72a9165242b37b8fcf5f00e49, type: 2}
48
- featureName: SSAO
1
+ %YAML 1.1
2
+ %TAG !u! tag:unity3d.com,2011:
3
+ --- !u!1 &1447475270847817773
4
+ GameObject:
5
+ m_ObjectHideFlags: 0
6
+ m_CorrespondingSourceObject: {fileID: 0}
7
+ m_PrefabInstance: {fileID: 0}
8
+ m_PrefabAsset: {fileID: 0}
9
+ serializedVersion: 6
10
+ m_Component:
11
+ - component: {fileID: 2356132341465688875}
12
+ - component: {fileID: 4599954098836446390}
13
+ m_Layer: 0
14
+ m_Name: DisableSSAO
15
+ m_TagString: Untagged
16
+ m_Icon: {fileID: 0}
17
+ m_NavMeshLayer: 0
18
+ m_StaticEditorFlags: 0
19
+ m_IsActive: 1
20
+ --- !u!4 &2356132341465688875
21
+ Transform:
22
+ m_ObjectHideFlags: 0
23
+ m_CorrespondingSourceObject: {fileID: 0}
24
+ m_PrefabInstance: {fileID: 0}
25
+ m_PrefabAsset: {fileID: 0}
26
+ m_GameObject: {fileID: 1447475270847817773}
27
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28
+ m_LocalPosition: {x: 0, y: 0, z: 0}
29
+ m_LocalScale: {x: 1, y: 1, z: 1}
30
+ m_ConstrainProportionsScale: 0
31
+ m_Children: []
32
+ m_Father: {fileID: 0}
33
+ m_RootOrder: 0
34
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
35
+ --- !u!114 &4599954098836446390
36
+ MonoBehaviour:
37
+ m_ObjectHideFlags: 0
38
+ m_CorrespondingSourceObject: {fileID: 0}
39
+ m_PrefabInstance: {fileID: 0}
40
+ m_PrefabAsset: {fileID: 0}
41
+ m_GameObject: {fileID: 1447475270847817773}
42
+ m_Enabled: 1
43
+ m_EditorHideFlags: 0
44
+ m_Script: {fileID: 11500000, guid: 2da86bbb52651f248abe013924b0d71a, type: 3}
45
+ m_Name:
46
+ m_EditorClassIdentifier:
47
+ rendererData: {fileID: 11400000, guid: 2fd9deb72a9165242b37b8fcf5f00e49, type: 2}
48
+ featureName: SSAO
@@ -1,7 +1,7 @@
1
- fileFormatVersion: 2
2
- guid: 66e0405f92015514eaf3c94a275ae6a8
3
- PrefabImporter:
4
- externalObjects: {}
5
- userData:
6
- assetBundleName:
7
- assetBundleVariant:
1
+ fileFormatVersion: 2
2
+ guid: 66e0405f92015514eaf3c94a275ae6a8
3
+ PrefabImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant:
package/SimpleCurveTMP.cs CHANGED
@@ -1,233 +1,233 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Kill/Cure
2
- using UnityEngine;
3
- using TMPro;
4
-
5
- namespace DREditor.AddOns
6
- {
7
- [ExecuteInEditMode]
8
- [RequireComponent(typeof(TMP_Text))]
9
- public class SimpleCurveTMP : MonoBehaviour
10
- {
11
- /// <summary>
12
- ///
13
- /// </summary>
14
- [Header("")]
15
- [Space]
16
- [Header("")]
17
- [Space]
18
- [Tooltip("")]
19
- [SerializeField] protected AnimationCurve vertexCurve = new(new Keyframe(0, 0), new Keyframe(0.5f, 1), new Keyframe(1, 0));
20
-
21
- /// <summary>
22
- ///
23
- /// </summary>
24
- [Tooltip("")]
25
- [SerializeField] protected float curveScale = 50.0f;
26
-
27
- /// <summary>
28
- ///
29
- /// </summary>
30
- [Tooltip("")]
31
- [SerializeField] protected float rotationIntensity = 1.0f;
32
-
33
-
34
- /// <summary>
35
- ///
36
- /// </summary>
37
- protected TMP_Text textComponent;
38
-
39
-
40
- /// <summary>
41
- ///
42
- /// </summary>
43
- const float delta = 0.01f;
44
-
45
- /// <summary>
46
- ///
47
- /// </summary>
48
- const int verticesPerCharacter = 4;
49
-
50
-
51
- protected virtual void Awake() => textComponent = GetComponent<TMP_Text>();
52
-
53
- protected virtual void Update() => WarpText();
54
-
55
- /// <summary>
56
- ///
57
- /// </summary>
58
- protected virtual void WarpText()
59
- {
60
- textComponent.ForceMeshUpdate();
61
-
62
- if (!WarpedCharactersSuccessfully())
63
- return;
64
-
65
- textComponent.UpdateVertexData(TMP_VertexDataUpdateFlags.Vertices);
66
- }
67
-
68
- /// <summary>
69
- ///
70
- /// </summary>
71
- /// <returns></returns>
72
- protected virtual bool WarpedCharactersSuccessfully()
73
- {
74
- TMP_TextInfo textInfo = textComponent.textInfo;
75
-
76
- if (HasNoCharacters(textInfo))
77
- return false;
78
-
79
- float textWidth = CalculateTextWidth();
80
-
81
- if (IsWidthInvalid(textWidth))
82
- return false;
83
-
84
- WarpTextCharacters(textInfo, textWidth);
85
-
86
- return true;
87
- }
88
-
89
- /// <summary>
90
- ///
91
- /// </summary>
92
- /// <param name="textInfo"></param>
93
- /// <returns></returns>
94
- private bool HasNoCharacters(TMP_TextInfo textInfo) => textInfo.characterCount == 0;
95
-
96
- /// <summary>
97
- ///
98
- /// </summary>
99
- /// <returns></returns>
100
- private float CalculateTextWidth() => textComponent.bounds.max.x - textComponent.bounds.min.x;
101
-
102
- /// <summary>
103
- ///
104
- /// </summary>
105
- /// <param name="width"></param>
106
- /// <returns></returns>
107
- private bool IsWidthInvalid(float width) => width <= 0;
108
-
109
- /// <summary>
110
- ///
111
- /// </summary>
112
- /// <param name="textInfo"></param>
113
- /// <param name="textWidth"></param>
114
- protected virtual void WarpTextCharacters(TMP_TextInfo textInfo, float textWidth)
115
- {
116
- float boundsMinX = textComponent.bounds.min.x;
117
-
118
- for (int characterIndex = 0; characterIndex < textInfo.characterCount; characterIndex++)
119
- {
120
- TMP_CharacterInfo characterInfo = textInfo.characterInfo[characterIndex];
121
-
122
- if (!characterInfo.isVisible)
123
- continue;
124
-
125
- WarpSingleCharacter(characterInfo, textInfo, boundsMinX, textWidth);
126
- }
127
- }
128
-
129
- /// <summary>
130
- ///
131
- /// </summary>
132
- /// <param name="characterInfo"></param>
133
- /// <param name="textInfo"></param>
134
- /// <param name="boundsMinX"></param>
135
- /// <param name="textWidth"></param>
136
- protected virtual void WarpSingleCharacter(TMP_CharacterInfo characterInfo, TMP_TextInfo textInfo,
137
- float boundsMinX, float textWidth)
138
- {
139
- Vector3[] vertices = textInfo.meshInfo[characterInfo.materialReferenceIndex].vertices;
140
-
141
- int baseVertexIndex = characterInfo.vertexIndex;
142
-
143
- float midpointX = GetCharacterMidpointX(vertices, baseVertexIndex);
144
-
145
- float normalizedX = (midpointX - boundsMinX) / textWidth;
146
-
147
- float verticalOffset = vertexCurve.Evaluate(normalizedX) * curveScale;
148
-
149
- float rotationAngle = CalculateSlopeAngle(normalizedX, textWidth);
150
-
151
- Quaternion rotation = Quaternion.AngleAxis(rotationAngle, Vector3.forward);
152
-
153
- Vector3 center = CalculateCharacterCenter(vertices, baseVertexIndex, midpointX);
154
-
155
- ApplyTransformationToVertices(vertices, baseVertexIndex, center, rotation, verticalOffset);
156
- }
157
-
158
- /// <summary>
159
- ///
160
- /// </summary>
161
- /// <param name="vertices"></param>
162
- /// <param name="baseVertexIndex"></param>
163
- /// <returns></returns>
164
- private float GetCharacterMidpointX(Vector3[] vertices, int baseVertexIndex)
165
- => (vertices[baseVertexIndex + 0].x + vertices[baseVertexIndex + 2].x) / 2f;
166
-
167
- /// <summary>
168
- ///
169
- /// </summary>
170
- /// <param name="normalizedX"></param>
171
- /// <param name="textWidth"></param>
172
- /// <returns></returns>
173
- protected virtual float CalculateSlopeAngle(float normalizedX, float textWidth)
174
- {
175
- float lookAheadX = Mathf.Min(normalizedX + delta, 1.0f);
176
-
177
- float lookBehindX = Mathf.Max(normalizedX - delta, 0.0f);
178
-
179
- float heightAhead = vertexCurve.Evaluate(lookAheadX) * curveScale;
180
-
181
- float heightBehind = vertexCurve.Evaluate(lookBehindX) * curveScale;
182
-
183
- float rise = heightAhead - heightBehind;
184
-
185
- float run = (lookAheadX - lookBehindX) * textWidth;
186
-
187
- float calculatedAngle = Mathf.Atan2(rise, run) * Mathf.Rad2Deg;
188
-
189
- return calculatedAngle * rotationIntensity;
190
- }
191
-
192
- /// <summary>
193
- ///
194
- /// </summary>
195
- /// <param name="vertices"></param>
196
- /// <param name="baseVertexIndex"></param>
197
- /// <param name="midpointX"></param>
198
- /// <returns></returns>
199
- protected virtual Vector3 CalculateCharacterCenter(Vector3[] vertices, int baseVertexIndex, float midpointX)
200
- {
201
- float midpointY = (vertices[baseVertexIndex + 0].y + vertices[baseVertexIndex + 2].y) / 2f;
202
-
203
- return new Vector3(midpointX, midpointY, 0);
204
- }
205
-
206
- /// <summary>
207
- ///
208
- /// </summary>
209
- /// <param name="vertices"></param>
210
- /// <param name="baseVertexIndex"></param>
211
- /// <param name="center"></param>
212
- /// <param name="rotation"></param>
213
- /// <param name="verticalOffset"></param>
214
- protected virtual void ApplyTransformationToVertices(Vector3[] vertices, int baseVertexIndex,
215
- Vector3 center, Quaternion rotation, float verticalOffset)
216
- {
217
- Vector3 verticalOffsetVector = new(0, verticalOffset, 0);
218
-
219
- for (int vertexOffset = 0; vertexOffset < verticesPerCharacter; vertexOffset++)
220
- {
221
- int currentVertexIndex = baseVertexIndex + vertexOffset;
222
-
223
- Vector3 originalVertex = vertices[currentVertexIndex];
224
-
225
- Vector3 localPosition = originalVertex - center;
226
-
227
- Vector3 rotatedPosition = rotation * localPosition;
228
-
229
- vertices[currentVertexIndex] = center + rotatedPosition + verticalOffsetVector;
230
- }
231
- }
232
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Kill/Cure
2
+ using UnityEngine;
3
+ using TMPro;
4
+
5
+ namespace DREditor.AddOns
6
+ {
7
+ [ExecuteInEditMode]
8
+ [RequireComponent(typeof(TMP_Text))]
9
+ public class SimpleCurveTMP : MonoBehaviour
10
+ {
11
+ /// <summary>
12
+ ///
13
+ /// </summary>
14
+ [Header("")]
15
+ [Space]
16
+ [Header("")]
17
+ [Space]
18
+ [Tooltip("")]
19
+ [SerializeField] protected AnimationCurve vertexCurve = new(new Keyframe(0, 0), new Keyframe(0.5f, 1), new Keyframe(1, 0));
20
+
21
+ /// <summary>
22
+ ///
23
+ /// </summary>
24
+ [Tooltip("")]
25
+ [SerializeField] protected float curveScale = 50.0f;
26
+
27
+ /// <summary>
28
+ ///
29
+ /// </summary>
30
+ [Tooltip("")]
31
+ [SerializeField] protected float rotationIntensity = 1.0f;
32
+
33
+
34
+ /// <summary>
35
+ ///
36
+ /// </summary>
37
+ protected TMP_Text textComponent;
38
+
39
+
40
+ /// <summary>
41
+ ///
42
+ /// </summary>
43
+ const float delta = 0.01f;
44
+
45
+ /// <summary>
46
+ ///
47
+ /// </summary>
48
+ const int verticesPerCharacter = 4;
49
+
50
+
51
+ protected virtual void Awake() => textComponent = GetComponent<TMP_Text>();
52
+
53
+ protected virtual void Update() => WarpText();
54
+
55
+ /// <summary>
56
+ ///
57
+ /// </summary>
58
+ protected virtual void WarpText()
59
+ {
60
+ textComponent.ForceMeshUpdate();
61
+
62
+ if (!WarpedCharactersSuccessfully())
63
+ return;
64
+
65
+ textComponent.UpdateVertexData(TMP_VertexDataUpdateFlags.Vertices);
66
+ }
67
+
68
+ /// <summary>
69
+ ///
70
+ /// </summary>
71
+ /// <returns></returns>
72
+ protected virtual bool WarpedCharactersSuccessfully()
73
+ {
74
+ TMP_TextInfo textInfo = textComponent.textInfo;
75
+
76
+ if (HasNoCharacters(textInfo))
77
+ return false;
78
+
79
+ float textWidth = CalculateTextWidth();
80
+
81
+ if (IsWidthInvalid(textWidth))
82
+ return false;
83
+
84
+ WarpTextCharacters(textInfo, textWidth);
85
+
86
+ return true;
87
+ }
88
+
89
+ /// <summary>
90
+ ///
91
+ /// </summary>
92
+ /// <param name="textInfo"></param>
93
+ /// <returns></returns>
94
+ private bool HasNoCharacters(TMP_TextInfo textInfo) => textInfo.characterCount == 0;
95
+
96
+ /// <summary>
97
+ ///
98
+ /// </summary>
99
+ /// <returns></returns>
100
+ private float CalculateTextWidth() => textComponent.bounds.max.x - textComponent.bounds.min.x;
101
+
102
+ /// <summary>
103
+ ///
104
+ /// </summary>
105
+ /// <param name="width"></param>
106
+ /// <returns></returns>
107
+ private bool IsWidthInvalid(float width) => width <= 0;
108
+
109
+ /// <summary>
110
+ ///
111
+ /// </summary>
112
+ /// <param name="textInfo"></param>
113
+ /// <param name="textWidth"></param>
114
+ protected virtual void WarpTextCharacters(TMP_TextInfo textInfo, float textWidth)
115
+ {
116
+ float boundsMinX = textComponent.bounds.min.x;
117
+
118
+ for (int characterIndex = 0; characterIndex < textInfo.characterCount; characterIndex++)
119
+ {
120
+ TMP_CharacterInfo characterInfo = textInfo.characterInfo[characterIndex];
121
+
122
+ if (!characterInfo.isVisible)
123
+ continue;
124
+
125
+ WarpSingleCharacter(characterInfo, textInfo, boundsMinX, textWidth);
126
+ }
127
+ }
128
+
129
+ /// <summary>
130
+ ///
131
+ /// </summary>
132
+ /// <param name="characterInfo"></param>
133
+ /// <param name="textInfo"></param>
134
+ /// <param name="boundsMinX"></param>
135
+ /// <param name="textWidth"></param>
136
+ protected virtual void WarpSingleCharacter(TMP_CharacterInfo characterInfo, TMP_TextInfo textInfo,
137
+ float boundsMinX, float textWidth)
138
+ {
139
+ Vector3[] vertices = textInfo.meshInfo[characterInfo.materialReferenceIndex].vertices;
140
+
141
+ int baseVertexIndex = characterInfo.vertexIndex;
142
+
143
+ float midpointX = GetCharacterMidpointX(vertices, baseVertexIndex);
144
+
145
+ float normalizedX = (midpointX - boundsMinX) / textWidth;
146
+
147
+ float verticalOffset = vertexCurve.Evaluate(normalizedX) * curveScale;
148
+
149
+ float rotationAngle = CalculateSlopeAngle(normalizedX, textWidth);
150
+
151
+ Quaternion rotation = Quaternion.AngleAxis(rotationAngle, Vector3.forward);
152
+
153
+ Vector3 center = CalculateCharacterCenter(vertices, baseVertexIndex, midpointX);
154
+
155
+ ApplyTransformationToVertices(vertices, baseVertexIndex, center, rotation, verticalOffset);
156
+ }
157
+
158
+ /// <summary>
159
+ ///
160
+ /// </summary>
161
+ /// <param name="vertices"></param>
162
+ /// <param name="baseVertexIndex"></param>
163
+ /// <returns></returns>
164
+ private float GetCharacterMidpointX(Vector3[] vertices, int baseVertexIndex)
165
+ => (vertices[baseVertexIndex + 0].x + vertices[baseVertexIndex + 2].x) / 2f;
166
+
167
+ /// <summary>
168
+ ///
169
+ /// </summary>
170
+ /// <param name="normalizedX"></param>
171
+ /// <param name="textWidth"></param>
172
+ /// <returns></returns>
173
+ protected virtual float CalculateSlopeAngle(float normalizedX, float textWidth)
174
+ {
175
+ float lookAheadX = Mathf.Min(normalizedX + delta, 1.0f);
176
+
177
+ float lookBehindX = Mathf.Max(normalizedX - delta, 0.0f);
178
+
179
+ float heightAhead = vertexCurve.Evaluate(lookAheadX) * curveScale;
180
+
181
+ float heightBehind = vertexCurve.Evaluate(lookBehindX) * curveScale;
182
+
183
+ float rise = heightAhead - heightBehind;
184
+
185
+ float run = (lookAheadX - lookBehindX) * textWidth;
186
+
187
+ float calculatedAngle = Mathf.Atan2(rise, run) * Mathf.Rad2Deg;
188
+
189
+ return calculatedAngle * rotationIntensity;
190
+ }
191
+
192
+ /// <summary>
193
+ ///
194
+ /// </summary>
195
+ /// <param name="vertices"></param>
196
+ /// <param name="baseVertexIndex"></param>
197
+ /// <param name="midpointX"></param>
198
+ /// <returns></returns>
199
+ protected virtual Vector3 CalculateCharacterCenter(Vector3[] vertices, int baseVertexIndex, float midpointX)
200
+ {
201
+ float midpointY = (vertices[baseVertexIndex + 0].y + vertices[baseVertexIndex + 2].y) / 2f;
202
+
203
+ return new Vector3(midpointX, midpointY, 0);
204
+ }
205
+
206
+ /// <summary>
207
+ ///
208
+ /// </summary>
209
+ /// <param name="vertices"></param>
210
+ /// <param name="baseVertexIndex"></param>
211
+ /// <param name="center"></param>
212
+ /// <param name="rotation"></param>
213
+ /// <param name="verticalOffset"></param>
214
+ protected virtual void ApplyTransformationToVertices(Vector3[] vertices, int baseVertexIndex,
215
+ Vector3 center, Quaternion rotation, float verticalOffset)
216
+ {
217
+ Vector3 verticalOffsetVector = new(0, verticalOffset, 0);
218
+
219
+ for (int vertexOffset = 0; vertexOffset < verticesPerCharacter; vertexOffset++)
220
+ {
221
+ int currentVertexIndex = baseVertexIndex + vertexOffset;
222
+
223
+ Vector3 originalVertex = vertices[currentVertexIndex];
224
+
225
+ Vector3 localPosition = originalVertex - center;
226
+
227
+ Vector3 rotatedPosition = rotation * localPosition;
228
+
229
+ vertices[currentVertexIndex] = center + rotatedPosition + verticalOffsetVector;
230
+ }
231
+ }
232
+ }
233
233
  }
@@ -1,2 +1,2 @@
1
- fileFormatVersion: 2
1
+ fileFormatVersion: 2
2
2
  guid: 282cd6937b47832478cafafd3e66db3b
@@ -1,23 +1,23 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using UnityEngine;
3
-
4
- namespace DREditor.AddOns
5
- {
6
- /// <summary>
7
- ///
8
- /// </summary>
9
- [ClassHeader("")]
10
- public class TimeScaleOnStart : MonoBehaviour
11
- {
12
- /// <summary>
13
- ///
14
- /// </summary>
15
- [Tooltip("")]
16
- [SerializeField] protected float time = 1;
17
-
18
- /// <summary>
19
- ///
20
- /// </summary>
21
- protected virtual void Start() => Time.timeScale = time;
22
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using UnityEngine;
3
+
4
+ namespace DREditor.AddOns
5
+ {
6
+ /// <summary>
7
+ ///
8
+ /// </summary>
9
+ [ClassHeader("")]
10
+ public class TimeScaleOnStart : MonoBehaviour
11
+ {
12
+ /// <summary>
13
+ ///
14
+ /// </summary>
15
+ [Tooltip("")]
16
+ [SerializeField] protected float time = 1;
17
+
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ protected virtual void Start() => Time.timeScale = time;
22
+ }
23
23
  }