|
| 1 | +using System; |
1 | 2 | using System.Collections.Generic; |
2 | 3 | using Unity.Collections; |
3 | 4 | using Unity.Jobs; |
@@ -130,7 +131,7 @@ public enum CommandType { |
130 | 131 | private static void Init() { |
131 | 132 | if (dummyTransforms != null) { |
132 | 133 | foreach (Transform t in dummyTransforms) { |
133 | | - Object.Destroy(t.gameObject); |
| 134 | + UnityEngine.Object.Destroy(t.gameObject); |
134 | 135 | } |
135 | 136 |
|
136 | 137 | dummyTransforms.Clear(); |
@@ -182,7 +183,7 @@ public void GetResults(out JiggleTransform[] poses, out JiggleTreeJobData[] tree |
182 | 183 | public static Transform GetDummyTransform(int index) { |
183 | 184 | while (dummyTransforms.Count <= index) { |
184 | 185 | Transform dummyTransform = new GameObject($"JigglePhysicsDummyTransform{index}").transform; |
185 | | - Object.DontDestroyOnLoad(dummyTransform.gameObject); |
| 186 | + UnityEngine.Object.DontDestroyOnLoad(dummyTransform.gameObject); |
186 | 187 | dummyTransform.gameObject.hideFlags = HideFlags.HideAndDontSave; |
187 | 188 | dummyTransforms.Add(dummyTransform); |
188 | 189 | } |
@@ -218,23 +219,49 @@ private void ResizeSceneColliderCapacity(int newColliderCapacity) { |
218 | 219 | sceneColliderCapacity = newColliderCapacity; |
219 | 220 | } |
220 | 221 |
|
221 | | - private void ResizePersonalColliderCapacity(int newColliderCapacity) { |
222 | | - personalColliderMemoryFragmenter.Resize(newColliderCapacity); |
223 | | - var newColliders = new JiggleCollider[newColliderCapacity]; |
224 | | - personalColliderArrayOutput = new JiggleCollider[newColliderCapacity]; |
225 | | - if (personalColliderArray != null) { |
226 | | - System.Array.Copy(personalColliderArray, newColliders, |
227 | | - System.Math.Min(personalColliderCount, newColliderCapacity)); |
228 | | - } |
229 | | - personalColliderArray = newColliders; |
230 | | - if (personalColliders.IsCreated) { |
231 | | - personalColliders.Dispose(); |
| 222 | + private void ResizePersonalColliderCapacity(int newColliderCapacity) |
| 223 | + { |
| 224 | + if (newColliderCapacity < 0) |
| 225 | + { |
| 226 | + throw new ArgumentOutOfRangeException(nameof(newColliderCapacity), "Capacity cannot be negative."); |
| 227 | + } |
| 228 | + |
| 229 | + personalColliderMemoryFragmenter.Resize(newColliderCapacity); |
| 230 | + |
| 231 | + var newColliders = new JiggleCollider[newColliderCapacity]; |
| 232 | + personalColliderArrayOutput = new JiggleCollider[newColliderCapacity]; |
| 233 | + |
| 234 | + if (personalColliderArray != null && newColliderCapacity > 0) |
| 235 | + { |
| 236 | + // Clamp copy length to BOTH arrays (and ensure count can't exceed old array length) |
| 237 | + int copyLen = personalColliderCount; |
| 238 | + |
| 239 | + if (copyLen < 0) copyLen = 0; // extra paranoia |
| 240 | + if (copyLen > personalColliderArray.Length) copyLen = personalColliderArray.Length; |
| 241 | + if (copyLen > newColliders.Length) copyLen = newColliders.Length; |
| 242 | + |
| 243 | + if (copyLen > 0) |
| 244 | + Array.Copy(personalColliderArray, 0, newColliders, 0, copyLen); |
| 245 | + } |
| 246 | + |
| 247 | + personalColliderArray = newColliders; |
| 248 | + |
| 249 | + if (personalColliders.IsCreated) |
| 250 | + { |
| 251 | + personalColliders.Dispose(); |
| 252 | + } |
| 253 | + |
| 254 | + personalColliders = new NativeArray<JiggleCollider>(personalColliderArray, Allocator.Persistent); |
| 255 | + personalColliderCapacity = newColliderCapacity; |
| 256 | + |
| 257 | + // Optional but recommended: keep count sane when shrinking |
| 258 | + if (personalColliderCount > personalColliderCapacity) |
| 259 | + { |
| 260 | + personalColliderCount = personalColliderCapacity; |
| 261 | + } |
232 | 262 | } |
233 | | - personalColliders = new NativeArray<JiggleCollider>(personalColliderArray, Allocator.Persistent); |
234 | | - personalColliderCapacity = newColliderCapacity; |
235 | | - } |
236 | 263 |
|
237 | | - private void ResizeTransformCapacity(int newTransformCapacity) { |
| 264 | + private void ResizeTransformCapacity(int newTransformCapacity) { |
238 | 265 | memoryFragmenter.Resize(newTransformCapacity); |
239 | 266 | var newSimulateInputPosesArray = new JiggleTransform[newTransformCapacity]; |
240 | 267 | var newRestPoseTransformsArray = new JiggleTransform[newTransformCapacity]; |
|
0 commit comments