修改水

This commit is contained in:
2026-01-01 22:00:33 +08:00
parent 040a222bd6
commit 9ceffccd39
1800 changed files with 103929 additions and 139495 deletions

View File

@@ -13,9 +13,6 @@ namespace Obi
[SerializeProperty("Thickness")]
[SerializeField] private float thickness = 0;
[SerializeProperty("Inverted")]
[SerializeField] private bool inverted = false;
[SerializeProperty("CollisionMaterial")]
[SerializeField] private ObiCollisionMaterial material;
@@ -25,11 +22,7 @@ namespace Obi
{
set
{
if (material != value)
{
material = value;
ForceUpdate();
}
material = value;
}
get { return material; }
}
@@ -41,7 +34,7 @@ namespace Obi
if (filter != value)
{
filter = value;
ForceUpdate();
dirty = true;
}
}
get { return filter; }
@@ -54,25 +47,12 @@ namespace Obi
if (!Mathf.Approximately(thickness, value))
{
thickness = value;
ForceUpdate();
dirty = true;
}
}
get { return thickness; }
}
public bool Inverted
{
set
{
if (inverted != value)
{
inverted = value;
ForceUpdate();
}
}
get { return inverted; }
}
public ObiShapeTracker Tracker
{
get { return tracker; }
@@ -88,9 +68,15 @@ namespace Obi
}
}
public ObiForceZone ForceZone
public IntPtr OniCollider
{
get; set;
get
{
if (oniCollider == IntPtr.Zero)
FindSourceCollider();
return oniCollider;
}
}
public ObiRigidbodyBase Rigidbody
@@ -99,8 +85,11 @@ namespace Obi
}
protected ObiColliderHandle shapeHandle;
protected IntPtr oniCollider;
protected ObiRigidbodyBase obiRigidbody;
protected bool wasUnityColliderEnabled = true;
protected bool dirty = false;
protected ObiShapeTracker tracker; /**< tracker object used to determine when to update the collider's shape*/
@@ -151,6 +140,7 @@ namespace Obi
protected void AddCollider()
{
Component unityCollider = GetUnityCollider(ref wasUnityColliderEnabled);
if (unityCollider != null && (shapeHandle == null || !shapeHandle.isValid))
@@ -164,6 +154,7 @@ namespace Obi
// Create rigidbody if necessary, and link ourselves to it:
CreateRigidbody();
}
}
protected void RemoveCollider()
@@ -178,15 +169,6 @@ namespace Obi
}
}
/**
* Flags the collider as needing to be updated from now on. If the object it's on has any editor static flag enabled,
* the collider will be again flagged as *not* needing to be updated after its next update.
*/
public void ForceUpdate()
{
ObiColliderWorld.GetInstance().MarkColliderAsNeedingUpdate(shapeHandle);
}
/**
* Check if the collider transform or its shape have changed any relevant property, and update their Oni counterparts.
*/
@@ -194,18 +176,14 @@ namespace Obi
{
bool unityColliderEnabled = false;
Component unityCollider = GetUnityCollider(ref unityColliderEnabled);
var colliderWorld = ObiColliderWorld.GetInstance();
if (unityCollider != null)
{
// Only if this object is not static:
if (tracker != null) //&& needsUpdate)
{
// no need to test for changes, all we are doing is setting some variables here.
if (tracker != null)
tracker.UpdateIfNeeded();
}
// check isStatic, *after* updating the tracker at least once.
if (unityCollider.gameObject.isStatic)
ObiColliderWorld.GetInstance().MarkColliderAsNotNeedingUpdate(shapeHandle);
}
// If the unity collider is null but its handle is valid, the unity collider has been destroyed.
else if (shapeHandle != null && shapeHandle.isValid)