From f68005d28043ae9e2e22fe9932727927d2c2fc8a Mon Sep 17 00:00:00 2001 From: huyfei Date: Wed, 10 Jan 2024 13:37:37 +0800 Subject: [PATCH] =?UTF-8?q?update=EF=BC=9A=20=E5=88=A0=E9=99=A4=20Loom=20?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/Loom.meta | 3 - Runtime/Loom/Loom.cs | 152 -------------------------------------- Runtime/Loom/Loom.cs.meta | 3 - 3 files changed, 158 deletions(-) delete mode 100644 Runtime/Loom.meta delete mode 100644 Runtime/Loom/Loom.cs delete mode 100644 Runtime/Loom/Loom.cs.meta diff --git a/Runtime/Loom.meta b/Runtime/Loom.meta deleted file mode 100644 index 24da098..0000000 --- a/Runtime/Loom.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 27b0011206f347d6869a8ff7e7a4d380 -timeCreated: 1704679689 \ No newline at end of file diff --git a/Runtime/Loom/Loom.cs b/Runtime/Loom/Loom.cs deleted file mode 100644 index 39f9071..0000000 --- a/Runtime/Loom/Loom.cs +++ /dev/null @@ -1,152 +0,0 @@ -namespace Guru -{ - using UnityEngine; - using System.Collections.Generic; - using System; - using System.Threading; - using System.Linq; - - public class Loom : MonoBehaviour - { - public static int maxThreads = 8; - static int numThreads; - - private static Loom _current; - private int _count; - public static Loom Current - { - get - { - Initialize(); - return _current; - } - } - - void Awake() - { - _current = this; - initialized = true; - } - - static bool initialized; - - static void Initialize() - { - if (!initialized) - { - if (!Application.isPlaying) - return; - - initialized = true; - var g = new GameObject("Loom"); - _current = g.AddComponent(); - } - - } - - private List _actions = new List(); - public struct DelayedQueueItem - { - public float time; - public Action action; - } - private List _delayed = new List(); - - List _currentDelayed = new List(); - - public static void QueueOnMainThread(Action action) - { - QueueOnMainThread(action, 0f); - } - public static void QueueOnMainThread(Action action, float time) - { - if (time != 0) - { - lock (Current._delayed) - { - Current._delayed.Add(new DelayedQueueItem { time = Time.time + time, action = action }); - } - } - else - { - lock (Current._actions) - { - Current._actions.Add(action); - } - } - } - - public static Thread RunAsync(Action a) - { - Initialize(); - while (numThreads >= maxThreads) - { - Thread.Sleep(1); - } - Interlocked.Increment(ref numThreads); - ThreadPool.QueueUserWorkItem(RunAction, a); - return null; - } - - private static void RunAction(object action) - { - try - { - ((Action)action)(); - } - catch - { - } - finally - { - Interlocked.Decrement(ref numThreads); - } - } - - void OnDisable() - { - if (_current == this) - { - - _current = null; - } - } - - List _currentActions = new List(); - - // Update is called once per frame - void Update() - { - lock (_actions) - { - _currentActions.Clear(); - _currentActions.AddRange(_actions); - _actions.Clear(); - } - foreach (var a in _currentActions) - { - a(); - } - lock (_delayed) - { - _currentDelayed.Clear(); - _currentDelayed.AddRange(_delayed.Where(d => d.time <= Time.time)); - foreach (var item in _currentDelayed) - _delayed.Remove(item); - } - foreach (var delayed in _currentDelayed) - { - delayed.action(); - } - } - - /// - /// 请在主线程内调用启动逻辑 - /// - public static void StartUp() - { - if (initialized || null != _current) return; - Initialize(); - } - } -} \ No newline at end of file diff --git a/Runtime/Loom/Loom.cs.meta b/Runtime/Loom/Loom.cs.meta deleted file mode 100644 index 1340bc0..0000000 --- a/Runtime/Loom/Loom.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: e34dba6b5d6c4191a581f9ba57588e37 -timeCreated: 1704679694 \ No newline at end of file