diff --git a/BITKit.csproj b/BITKit.csproj index 7cabe53..2b1e24b 100644 --- a/BITKit.csproj +++ b/BITKit.csproj @@ -4,7 +4,7 @@ enable disable BITKit - net6.0;net7.0 + net7.0 @@ -44,6 +44,7 @@ + diff --git a/Packages/Runtime~/Core/Assets/BITAssets.cs b/Packages/Runtime~/Core/Assets/BITAssets.cs index 9bdf9b9..aa94690 100644 --- a/Packages/Runtime~/Core/Assets/BITAssets.cs +++ b/Packages/Runtime~/Core/Assets/BITAssets.cs @@ -57,6 +57,8 @@ namespace BITKit.IO } zipFile.Dispose(); + + BIT4Log.Log($"已创建Assets:\n{path}"); } public static T ReadAs(string path) diff --git a/Packages/Runtime~/Core/DesignPatterns.meta b/Packages/Runtime~/Core/DesignPatterns.meta new file mode 100644 index 0000000..2713c8a --- /dev/null +++ b/Packages/Runtime~/Core/DesignPatterns.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ae1e7f59a6a2c64db48d78763a6dfa3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs b/Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs new file mode 100644 index 0000000..b929d82 --- /dev/null +++ b/Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace BITKit +{ + + public interface IDoubleBuffer + { + T Current { get; } + void Release(T newValue); + event Action OnRelease; + bool TryGetRelease(out T result); + } + + public class DoubleBuffer : IDoubleBuffer + { + public T Current + { + get; + // ReSharper disable once MemberCanBePrivate.Global + protected set; + } + + public void Release(T newValue) + { + Current = newValue; + OnRelease?.Invoke(newValue); + } + + public event Action OnRelease; + private readonly Queue _releases = new(); + + public bool TryGetRelease(out T result) + { + return _releases.TryDequeue(out result); + } + } +} \ No newline at end of file diff --git a/Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs.meta b/Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs.meta new file mode 100644 index 0000000..2f3f9b0 --- /dev/null +++ b/Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa92f9c5ddad64741a2a86086b4fc977 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Runtime~/Core/Text.meta b/Packages/Runtime~/Core/Text.meta new file mode 100644 index 0000000..54580c3 --- /dev/null +++ b/Packages/Runtime~/Core/Text.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 088acda9508faea49be2d9f04eb1308e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Runtime~/Core/Text/TextValidation.cs b/Packages/Runtime~/Core/Text/TextValidation.cs new file mode 100644 index 0000000..8b52a9c --- /dev/null +++ b/Packages/Runtime~/Core/Text/TextValidation.cs @@ -0,0 +1,8 @@ +namespace BITKit +{ + + public interface ITextValidation + { + bool IsTextValid(string text, out string errorReason); + } +} \ No newline at end of file diff --git a/Packages/Runtime~/Core/Text/TextValidation.cs.meta b/Packages/Runtime~/Core/Text/TextValidation.cs.meta new file mode 100644 index 0000000..aad2a3e --- /dev/null +++ b/Packages/Runtime~/Core/Text/TextValidation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b3c05c0c7e840340a827ea12e285666 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Runtime~/Core/Utility/Constant.cs b/Packages/Runtime~/Core/Utility/Constant.cs index 941caff..1a360af 100644 --- a/Packages/Runtime~/Core/Utility/Constant.cs +++ b/Packages/Runtime~/Core/Utility/Constant.cs @@ -56,6 +56,7 @@ namespace BITKit public const string Internal = "Internal"; } public const string Value = "Value"; + public const string EmetyString = ""; public static Func True => () => true; public static Func False => () => false; public class EmetyClass { } diff --git a/Packages/Runtime~/Unity/Common/Scripts/Animator/UnityAnimator.cs b/Packages/Runtime~/Unity/Common/Scripts/Animator/UnityAnimator.cs index a371030..f2c901b 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/Animator/UnityAnimator.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/Animator/UnityAnimator.cs @@ -48,6 +48,11 @@ namespace BITKit.Animations layerInfos.Add(new()); } } + + if (index > layerInfos.Count - 1) + { + throw new Exception("Index out of range"); + } return layerInfos[index]; } } @@ -107,10 +112,9 @@ namespace BITKit.Animations private void Update() { - int index = 0; - foreach (var x in layerInfos) + for (var i = 0; i < animator.layerCount; i++) { - x.currentState = animator.GetCurrentAnimatorStateInfo(index++); + this[i].currentState = animator.GetCurrentAnimatorStateInfo(i); } isMatchingTarget = animator.isMatchingTarget; } diff --git a/Packages/Runtime~/Unity/Common/Scripts/Entity/Components/Hitbox/EntityHitbox.cs b/Packages/Runtime~/Unity/Common/Scripts/Entity/Components/Hitbox/EntityHitbox.cs index 9261c31..4fd5fa9 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/Entity/Components/Hitbox/EntityHitbox.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/Entity/Components/Hitbox/EntityHitbox.cs @@ -4,12 +4,15 @@ using UnityEngine; using BITKit; namespace BITKit.Entities { - public class EntityHitbox : EntityComponent + public class EntityHitbox : EntityComponent,IDamagable { public IEntity Entity => entity; public Rigidbody Rigidbody => m_rigidbody; - + public void GiveDamage(DamageMessage message) + { + entity.Invoke(message); + } public Rigidbody m_rigidbody; } diff --git a/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/BITKit.ObjectMaterial.asmdef b/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/BITKit.ObjectMaterial.asmdef index 9475f35..3c137b4 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/BITKit.ObjectMaterial.asmdef +++ b/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/BITKit.ObjectMaterial.asmdef @@ -4,9 +4,9 @@ "references": [ "GUID:a209c53514018594f9f482516f2a6781", "GUID:274d4ecae4648e94c8b2cee7218378a0", - "GUID:66d2ae14764cc7d49aad4b16930747c0", "GUID:14fe60d984bf9f84eac55c6ea033a8f4", - "GUID:9400d40641bab5b4a9702f65bf5c6eb5" + "GUID:9400d40641bab5b4a9702f65bf5c6eb5", + "GUID:d525ad6bd40672747bde77962f1c401e" ], "includePlatforms": [], "excludePlatforms": [], @@ -14,9 +14,7 @@ "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, - "defineConstraints": [ - "ODIN_INSPECTOR" - ], + "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } \ No newline at end of file diff --git a/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/ObjectMaterialScriptableObject.cs b/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/ObjectMaterialScriptableObject.cs index 6c840b5..2332c82 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/ObjectMaterialScriptableObject.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/ObjectMaterial/ObjectMaterialScriptableObject.cs @@ -1,7 +1,7 @@ using System.Collections; using System.Collections.Generic; +using AYellowpaper.SerializedCollections; using UnityEngine; -using RotaryHeart.Lib.SerializableDictionary; namespace BITKit.ObjectMaterial { [System.Serializable] @@ -16,29 +16,13 @@ namespace BITKit.ObjectMaterial { ObjectMaterialInfo GetObjectMaterial(string action = "None", Vector3 pos = default); } - public class ObjectMaterialScriptableObject : BITKitSO + public class ObjectMaterialScriptableObject : ScriptableObject { [Header(Constant.Header.Settings)] public new string name; [Header(Constant.Header.Prefabs)] - public SerializableDictionaryBase dictionary = new(); - - public override void RegisterAssets() - { - Data.Set(name, this); - dictionary.Values.ForEach(x => - { - x.clips.ForEach(x => - { - Data.Set(x.name, x); - }); - x.prefabs.ForEach(x=> - { - Data.Set(x.name,x); - }); - }); - } - public ObjectMaterialInfo Get(string name)=>dictionary[name]; + public SerializedDictionary dictionary = new(); + public ObjectMaterialInfo Get(string _name)=>dictionary[_name]; } } \ No newline at end of file diff --git a/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsHelper.cs b/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsHelper.cs index 777bf62..4ef40ba 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsHelper.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsHelper.cs @@ -6,11 +6,11 @@ namespace BITKit { public static class PhysicsHelper { - public static async void AddForceAtPositionAsync(this Rigidbody rigidbody, Vector3 force, Vector3 position) + public static async void AddForceAtPositionAsync(this Rigidbody rigidbody, Vector3 force, Vector3 position,ForceMode forceMode=ForceMode.Force) { await UniTask.DelayFrame(8); if (rigidbody is not null) - rigidbody.AddForceAtPosition(force, position); + rigidbody.AddForceAtPosition(force, position,forceMode); } } } \ No newline at end of file diff --git a/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsInfo.cs b/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsInfo.cs index dba8f6e..bc8e525 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsInfo.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/Physics/PhysicsInfo.cs @@ -7,12 +7,16 @@ namespace BITKit { Rigidbody GetRigidbody(); Collider GetCollider(); + float AddForceMultiple { get; } } public class PhysicsInfo : MonoBehaviour, IPhysicsInfo { - [SerializeField] Rigidbody mRigidbody; - [SerializeField] Collider mCollider; + [SerializeField] private Rigidbody mRigidbody; + [SerializeField] private Collider mCollider; + [SerializeField] private float addForcemultiple; + public Rigidbody GetRigidbody() => mRigidbody; public Collider GetCollider() => mCollider; + public float AddForceMultiple => addForcemultiple; } } \ No newline at end of file diff --git a/Packages/Runtime~/Unity/Common/Scripts/Sensor/RangeSensor.cs b/Packages/Runtime~/Unity/Common/Scripts/Sensor/RangeSensor.cs index 1eb8b46..a372240 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/Sensor/RangeSensor.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/Sensor/RangeSensor.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -13,6 +14,7 @@ namespace BITKit.Sensors public float radius; public int fov; public bool requireSight; + public bool autoUpdate; [Header(Constant.Header.Settings)] public LayerMask blockLayer; [Header(Constant.Header.InternalVariables)] @@ -25,6 +27,14 @@ namespace BITKit.Sensors Vector3 dir; float maxDistance; public override IEnumerable Get() => detecteds; + + private void Update() + { + if (autoUpdate) + { + Execute().Forget(); + } + } public override UniTask Execute() { if (frameUpdater) @@ -120,4 +130,7 @@ namespace BITKit.Sensors return Vector3.Distance(collider.transform.position, transform.position) <= radius; } } + #if UNITY_EDITOR + + #endif } \ No newline at end of file diff --git a/Packages/Runtime~/Unity/Common/Scripts/Sensor/TriggerSensor.cs b/Packages/Runtime~/Unity/Common/Scripts/Sensor/TriggerSensor.cs index ec4aea8..d7e9d63 100644 --- a/Packages/Runtime~/Unity/Common/Scripts/Sensor/TriggerSensor.cs +++ b/Packages/Runtime~/Unity/Common/Scripts/Sensor/TriggerSensor.cs @@ -28,25 +28,16 @@ namespace BITKit.Sensors // ReSharper disable once FieldCanBeMadeReadOnly.Local private List detected = new(); - private Queue triggerEnterQueue=new(); - private Queue triggerExitQueue=new(); + private readonly Queue triggerEnterQueue=new(); + private readonly Queue triggerExitQueue=new(); - private void OnTriggerEnter(Collider _collider) { triggerEnterQueue.Enqueue(_collider); - - // if (IsValid(_collider) is false) return; - // if (detected.Contains(_collider)) return; - // detected.Add(_collider); - // onDetected.Invoke(_collider); } private void OnTriggerExit(Collider _collider) { triggerExitQueue.Enqueue(_collider); - // if (IsValid(_collider) is false) return; - // if (!detected.Remove(_collider)) return; - // onLost.Invoke(_collider); } private void OnCollisionEnter(Collision collision) @@ -102,7 +93,36 @@ namespace BITKit.Sensors } } #if UNITY_EDITOR - [CustomEditor(typeof(TriggerSensor))] + [CustomEditor(typeof(Sensor),true)] + public class SensorInspector:BITInspector + { + private VisualElement detectedContainer; + public override VisualElement CreateInspectorGUI() + { + FillDefaultInspector(); + + detectedContainer = root.Create(); + + return root; + } + protected override void OnUpdate() + { + if (detectedContainer is null) return; + detectedContainer.Clear(); + foreach (var x in agent.Get()) + { + + ObjectField objectField = new() + { + objectType = x.GetType(), + value = x, + }; + objectField.SetEnabled(false); + detectedContainer.Add(objectField); + } + } + } + [CustomEditor(typeof(TriggerSensor),true)] public class TriggerSensorInspector:BITInspector { private VisualElement detectedContainer;