Files
HauntedBloodlines/Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs
2025-05-29 22:31:40 +03:00

75 lines
2.4 KiB
C#

#if (OBI_ONI_SUPPORTED)
using System;
using UnityEngine;
namespace Obi
{
public class OniColliderWorld : MonoBehaviour, IColliderWorldImpl
{
private int refCount = 0;
public int referenceCount { get { return refCount; } }
public void Awake()
{
ObiColliderWorld.GetInstance().RegisterImplementation(this);
}
public void OnDestroy()
{
ObiColliderWorld.GetInstance().UnregisterImplementation(this);
}
public void IncreaseReferenceCount()
{
refCount++;
}
public void DecreaseReferenceCount()
{
if (--refCount <= 0 && gameObject != null)
DestroyImmediate(gameObject);
}
public void UpdateWorld(float deltaTime)
{
Oni.UpdateColliderGrid(deltaTime);
}
public void SetColliders(ObiNativeColliderShapeList shapes, ObiNativeAabbList bounds, ObiNativeAffineTransformList transforms, int count)
{
Oni.SetColliders(shapes.GetIntPtr(), bounds.GetIntPtr(), transforms.GetIntPtr(), count);
}
public void SetRigidbodies(ObiNativeRigidbodyList rigidbody)
{
Oni.SetRigidbodies(rigidbody.GetIntPtr());
}
public void SetCollisionMaterials(ObiNativeCollisionMaterialList materials)
{
Oni.SetCollisionMaterials(materials.GetIntPtr());
}
public void SetTriangleMeshData(ObiNativeTriangleMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeTriangleList triangles, ObiNativeVector3List vertices)
{
Oni.SetTriangleMeshData(headers.GetIntPtr(), nodes.GetIntPtr(), triangles.GetIntPtr(), vertices.GetIntPtr());
}
public void SetEdgeMeshData(ObiNativeEdgeMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeEdgeList edges, ObiNativeVector2List vertices)
{
Oni.SetEdgeMeshData(headers.GetIntPtr(), nodes.GetIntPtr(), edges.GetIntPtr(), vertices.GetIntPtr());
}
public void SetDistanceFieldData(ObiNativeDistanceFieldHeaderList headers, ObiNativeDFNodeList nodes)
{
Oni.SetDistanceFieldData(headers.GetIntPtr(), nodes.GetIntPtr());
}
public void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples)
{
Oni.SetHeightFieldData(headers.GetIntPtr(), samples.GetIntPtr());
}
}
}
#endif