From 936a94c84b353e9d4a3d1e129e4c6725eaaf9d2d Mon Sep 17 00:00:00 2001
From: CortexCore <2630229280@qq.com>
Date: Mon, 17 Jul 2023 10:23:47 +0800
Subject: [PATCH] update
---
BITKit.csproj | 3 +-
Packages/Runtime~/Core/Assets/BITAssets.cs | 2 +
Packages/Runtime~/Core/DesignPatterns.meta | 8 ++++
.../Core/DesignPatterns/DoubleBuffer.cs | 38 ++++++++++++++++
.../Core/DesignPatterns/DoubleBuffer.cs.meta | 11 +++++
Packages/Runtime~/Core/Text.meta | 8 ++++
Packages/Runtime~/Core/Text/TextValidation.cs | 8 ++++
.../Runtime~/Core/Text/TextValidation.cs.meta | 11 +++++
Packages/Runtime~/Core/Utility/Constant.cs | 1 +
.../Common/Scripts/Animator/UnityAnimator.cs | 10 +++--
.../Entity/Components/Hitbox/EntityHitbox.cs | 7 ++-
.../BITKit.ObjectMaterial.asmdef | 8 ++--
.../ObjectMaterialScriptableObject.cs | 24 ++--------
.../Common/Scripts/Physics/PhysicsHelper.cs | 4 +-
.../Common/Scripts/Physics/PhysicsInfo.cs | 8 +++-
.../Common/Scripts/Sensor/RangeSensor.cs | 13 ++++++
.../Common/Scripts/Sensor/TriggerSensor.cs | 44 ++++++++++++++-----
17 files changed, 161 insertions(+), 47 deletions(-)
create mode 100644 Packages/Runtime~/Core/DesignPatterns.meta
create mode 100644 Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs
create mode 100644 Packages/Runtime~/Core/DesignPatterns/DoubleBuffer.cs.meta
create mode 100644 Packages/Runtime~/Core/Text.meta
create mode 100644 Packages/Runtime~/Core/Text/TextValidation.cs
create mode 100644 Packages/Runtime~/Core/Text/TextValidation.cs.meta
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;