From 8722a9920c1f6119bf6e769cba270e63097f8e25 Mon Sep 17 00:00:00 2001
From: chai <215380520@qq.com>
Date: Thu, 23 May 2024 10:08:29 +0800
Subject: + astar project
---
.../Utilities/AnimationLinkTraverser.cs | 74 +
.../Utilities/AnimationLinkTraverser.cs.meta | 12 +
.../Utilities/AstarChecksum.cs | 21 +
.../Utilities/AstarChecksum.cs.meta | 7 +
.../Utilities/BatchedEvents.cs | 243 +++
.../Utilities/BatchedEvents.cs.meta | 11 +
.../Utilities/DotNetReplacements.cs | 150 ++
.../Utilities/DotNetReplacements.cs.meta | 7 +
.../Utilities/DynamicGridObstacle.cs | 238 +++
.../Utilities/DynamicGridObstacle.cs.meta | 11 +
.../com.arongranberg.astar/Utilities/Funnel.cs | 883 +++++++++
.../Utilities/Funnel.cs.meta | 12 +
.../Utilities/GraphGizmoHelper.cs | 247 +++
.../Utilities/GraphGizmoHelper.cs.meta | 12 +
.../Utilities/GraphUpdateUtilities.cs | 104 +
.../Utilities/GraphUpdateUtilities.cs.meta | 7 +
.../Utilities/GridStringPulling.cs | 577 ++++++
.../Utilities/GridStringPulling.cs.meta | 11 +
.../Utilities/IJobParallelForBatched.cs | 65 +
.../Utilities/IJobParallelForBatched.cs.meta | 11 +
.../Utilities/JobDependencyTracker.cs | 799 ++++++++
.../Utilities/JobDependencyTracker.cs.meta | 11 +
.../Utilities/MeshUtility.cs | 120 ++
.../Utilities/MeshUtility.cs.meta | 11 +
.../com.arongranberg.astar/Utilities/PathTracer.cs | 2071 ++++++++++++++++++++
.../Utilities/PathTracer.cs.meta | 11 +
.../Utilities/PathUtilities.cs | 747 +++++++
.../Utilities/PathUtilities.cs.meta | 7 +
.../Utilities/ProceduralGraphMover.cs | 257 +++
.../Utilities/ProceduralGraphMover.cs.meta | 11 +
.../com.arongranberg.astar/Utilities/Promise.cs | 48 +
.../Utilities/Promise.cs.meta | 11 +
.../com.arongranberg.astar/Utilities/RWLock.cs | 215 ++
.../Utilities/RWLock.cs.meta | 11 +
.../com.arongranberg.astar/Utilities/SpinLock.cs | 28 +
.../Utilities/SpinLock.cs.meta | 11 +
.../Utilities/UnityReferenceHelper.cs | 39 +
.../Utilities/UnityReferenceHelper.cs.meta | 7 +
38 files changed, 7118 insertions(+)
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/BatchedEvents.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/BatchedEvents.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/DotNetReplacements.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/DotNetReplacements.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/DynamicGridObstacle.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/DynamicGridObstacle.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Funnel.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Funnel.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/GraphGizmoHelper.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/GraphGizmoHelper.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/GraphUpdateUtilities.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/GraphUpdateUtilities.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/GridStringPulling.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/GridStringPulling.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/IJobParallelForBatched.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/IJobParallelForBatched.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/JobDependencyTracker.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/JobDependencyTracker.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/MeshUtility.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/MeshUtility.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/PathTracer.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/PathTracer.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/PathUtilities.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/PathUtilities.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/ProceduralGraphMover.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/ProceduralGraphMover.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/Promise.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/RWLock.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/RWLock.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/SpinLock.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/SpinLock.cs.meta
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/UnityReferenceHelper.cs
create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/UnityReferenceHelper.cs.meta
(limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities')
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs
new file mode 100644
index 0000000..455bc3e
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs
@@ -0,0 +1,74 @@
+using System.Collections;
+using UnityEngine;
+
+namespace Pathfinding.Examples {
+ using Pathfinding;
+
+ ///
+ /// Example of how to handle off-mesh link traversal.
+ /// This is used in the "Example4_Recast_Navmesh2" example scene.
+ ///
+ /// See:
+ /// See:
+ /// See:
+ ///
+ [HelpURL("https://arongranberg.com/astar/documentation/stable/animationlinktraverser.html")]
+ public class AnimationLinkTraverser : VersionedMonoBehaviour {
+ public Animation anim;
+
+ RichAI ai;
+
+ void OnEnable () {
+ ai = GetComponent();
+ if (ai != null) ai.onTraverseOffMeshLink += TraverseOffMeshLink;
+ }
+
+ void OnDisable () {
+ if (ai != null) ai.onTraverseOffMeshLink -= TraverseOffMeshLink;
+ }
+
+ protected virtual IEnumerator TraverseOffMeshLink (RichSpecial rs) {
+ var link = rs.nodeLink.gameObject.GetComponent();
+
+ if (link == null) {
+ Debug.LogError("Unhandled RichSpecial");
+ yield break;
+ }
+
+ // Rotate character to face the correct direction
+ while (true) {
+ var origRotation = ai.rotation;
+ var finalRotation = ai.SimulateRotationTowards(rs.first.rotation * Vector3.forward, ai.rotationSpeed * Time.deltaTime);
+ // Rotate until the rotation does not change anymore
+ if (origRotation == finalRotation) break;
+ ai.FinalizeMovement(ai.position, finalRotation);
+ yield return null;
+ }
+
+ // Reposition
+ transform.parent.position = transform.position;
+
+ transform.parent.rotation = transform.rotation;
+ transform.localPosition = Vector3.zero;
+ transform.localRotation = Quaternion.identity;
+
+ // Set up animation speeds
+ if (rs.reverse && link.reverseAnim) {
+ anim[link.clip].speed = -link.animSpeed;
+ anim[link.clip].normalizedTime = 1;
+ anim.Play(link.clip);
+ anim.Sample();
+ } else {
+ anim[link.clip].speed = link.animSpeed;
+ anim.Rewind(link.clip);
+ anim.Play(link.clip);
+ }
+
+ // Fix required for animations in reverse direction
+ transform.parent.position -= transform.position-transform.parent.position;
+
+ // Wait for the animation to finish
+ yield return new WaitForSeconds(Mathf.Abs(anim[link.clip].length/link.animSpeed));
+ }
+ }
+}
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs.meta b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs.meta
new file mode 100644
index 0000000..8f98e0a
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AnimationLinkTraverser.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 81825518f1bed49bda1223459d4bdf99
+timeCreated: 1498659013
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs
new file mode 100644
index 0000000..b492542
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs
@@ -0,0 +1,21 @@
+using System;
+namespace Pathfinding.Util {
+ /// Calculates checksums of byte arrays
+ public class Checksum {
+ ///
+ /// Calculate checksum for the byte array starting from a previous values.
+ /// Useful if data is split up between several byte arrays
+ ///
+ public static uint GetChecksum (byte[] arr, uint hash) {
+ // Sort of implements the Fowler–Noll–Vo hash function
+ const int prime = 16777619;
+
+ hash ^= 2166136261U;
+
+ for (int i = 0; i < arr.Length; i++)
+ hash = (hash ^ arr[i]) * prime;
+
+ return hash;
+ }
+ }
+}
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs.meta b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs.meta
new file mode 100644
index 0000000..0093682
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8959628b7b47f4ccca91bcfa87d9f77e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/BatchedEvents.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/BatchedEvents.cs
new file mode 100644
index 0000000..f8a0a7e
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/BatchedEvents.cs
@@ -0,0 +1,243 @@
+using Unity.Mathematics;
+using UnityEngine;
+using UnityEngine.Jobs;
+using UnityEngine.Profiling;
+
+namespace Pathfinding.Util {
+ /// Helper for batching updates to many objects efficiently
+ [HelpURL("https://arongranberg.com/astar/documentation/stable/batchedevents.html")]
+ public class BatchedEvents : VersionedMonoBehaviour {
+ const int ArchetypeOffset = 22;
+ const int ArchetypeMask = 0xFF << ArchetypeOffset;
+
+ static Archetype[] data = new Archetype[0];
+ static BatchedEvents instance;
+ static int isIteratingOverTypeIndex = -1;
+ static bool isIterating = false;
+
+ [System.Flags]
+ public enum Event {
+ Update = 1 << 0,
+ LateUpdate = 1 << 1,
+ FixedUpdate = 1 << 2,
+ Custom = 1 << 3,
+ None = 0,
+ };
+
+
+ struct Archetype {
+ public object[] objects;
+ public int objectCount;
+ public System.Type type;
+ public TransformAccessArray transforms;
+ public int variant;
+ public int archetypeIndex;
+ public Event events;
+ public System.Action