修改水

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

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 97b02df45f4844e32a90f2f5d93de422
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ac58d86bbc15740a98fd45e796e43034
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniAerodynamicConstraintsBatchImpl : OniConstraintsBatchImpl, IAerodynamicConstraintsBatchImpl
{
public OniAerodynamicConstraintsBatchImpl(OniAerodynamicConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Aerodynamics)
{
}
public void SetAerodynamicConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList aerodynamicCoeffs, int count)
{
Oni.SetAerodynamicConstraints(oniBatch, particleIndices.GetIntPtr(), aerodynamicCoeffs.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2eaf9121855a4484d8f5765d4ad9d974
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniAerodynamicConstraintsImpl : OniConstraintsImpl
{
public OniAerodynamicConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Aerodynamics)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniAerodynamicConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 990162413cc804203a6ca5d7d90e1ae3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 64ac30003117243aba84fc4298f84eb7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniBendConstraintsBatchImpl : OniConstraintsBatchImpl, IBendConstraintsBatchImpl
{
public OniBendConstraintsBatchImpl(OniBendConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Bending)
{
}
public void SetBendConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restBends, ObiNativeVector2List bendingStiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count)
{
Oni.SetBendingConstraints(oniBatch, particleIndices.GetIntPtr(), restBends.GetIntPtr(), bendingStiffnesses.GetIntPtr(), plasticity.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e465799aa3593428ebabdef6d97f2b4a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniBendConstraintsImpl : OniConstraintsImpl
{
public OniBendConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Bending)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniBendConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: abf82a5f5548d41feaaa9fa141461c4c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cdbe2ed97af924bb9ba78bac0fc122c7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniBendTwistConstraintsBatchImpl : OniConstraintsBatchImpl, IBendTwistConstraintsBatchImpl
{
public OniBendTwistConstraintsBatchImpl(OniBendTwistConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.BendTwist)
{
}
public void SetBendTwistConstraints(ObiNativeIntList orientationIndices, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeVector2List plasticity, ObiNativeFloatList lambdas, int count)
{
Oni.SetBendTwistConstraints(oniBatch, orientationIndices.GetIntPtr(), restOrientations.GetIntPtr(), stiffnesses.GetIntPtr(), plasticity.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ba36c80996a534178a1db381ccbc8949
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniBendTwistConstraintsImpl : OniConstraintsImpl
{
public OniBendTwistConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.BendTwist)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniBendTwistConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c6be6b2551afe45508d996dd67d1b710
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1a6c548d46acc4e88a31b3bf6b0a9ea8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniChainConstraintsBatchImpl : OniConstraintsBatchImpl, IChainConstraintsBatchImpl
{
public OniChainConstraintsBatchImpl(OniChainConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Chain)
{
}
public void SetChainConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List restLengths, ObiNativeIntList firstIndex, ObiNativeIntList numIndices, int count)
{
Oni.SetChainConstraints(oniBatch, particleIndices.GetIntPtr(), restLengths.GetIntPtr(), firstIndex.GetIntPtr(), numIndices.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 315f0420a391e43b3a3e255fce157f2a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniChainConstraintsImpl : OniConstraintsImpl
{
public OniChainConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Chain)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniChainConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5730de157a60b46e9b258ac099ff1980
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ffe3dc0008b2b461d80dab10f72f50ee
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniDistanceConstraintsBatchImpl : OniConstraintsBatchImpl, IDistanceConstraintsBatchImpl
{
public OniDistanceConstraintsBatchImpl(OniDistanceConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Distance)
{
}
public void SetDistanceConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restLengths, ObiNativeVector2List stiffnesses, ObiNativeFloatList lambdas, int count)
{
Oni.SetDistanceConstraints(oniBatch, particleIndices.GetIntPtr(), restLengths.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e2e6ffc02968643a7a530f931b92f948
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniDistanceConstraintsImpl : OniConstraintsImpl
{
public OniDistanceConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Distance)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniDistanceConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1317284f320be48c7be4a294d253fc95
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,73 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniConstraintsBatchImpl : IConstraintsBatchImpl
{
protected IConstraints m_Constraints;
protected Oni.ConstraintType m_ConstraintType;
protected IntPtr m_OniBatch;
protected bool m_Enabled;
public IntPtr oniBatch
{
get { return m_OniBatch; }
}
public Oni.ConstraintType constraintType
{
get { return m_ConstraintType; }
}
public IConstraints constraints
{
get { return m_Constraints; }
}
public bool enabled
{
set
{
if (m_Enabled != value)
{
m_Enabled = value;
Oni.EnableBatch(m_OniBatch, m_Enabled);
}
}
get { return m_Enabled; }
}
public OniConstraintsBatchImpl(IConstraints constraints, Oni.ConstraintType type)
{
this.m_Constraints = constraints;
this.m_ConstraintType = type;
m_OniBatch = Oni.CreateBatch((int)type);
}
public void Destroy()
{
//Oni.DestroyBatch(m_OniBatch);
// remove the constraint batch from the solver
// (no need to destroy it as its destruction is managed by the solver)
// just reset the reference.
m_OniBatch = IntPtr.Zero;
}
public void SetConstraintCount(int constraintCount)
{
Oni.SetBatchConstraintCount(m_OniBatch, constraintCount);
}
public int GetConstraintCount()
{
return Oni.GetBatchConstraintCount(m_OniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1f2c339d89f1144ea82e9763963f897d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,45 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public interface IOniConstraintsImpl : IConstraints
{
IConstraintsBatchImpl CreateConstraintsBatch();
void RemoveBatch(IConstraintsBatchImpl batch);
}
public abstract class OniConstraintsImpl : IOniConstraintsImpl
{
protected OniSolverImpl m_Solver;
protected Oni.ConstraintType m_ConstraintType;
public ISolverImpl solver
{
get { return m_Solver; }
}
public Oni.ConstraintType constraintType
{
get { return m_ConstraintType; }
}
public OniConstraintsImpl(OniSolverImpl solver, Oni.ConstraintType constraintType)
{
m_ConstraintType = constraintType;
m_Solver = solver;
}
public abstract IConstraintsBatchImpl CreateConstraintsBatch();
public abstract void RemoveBatch(IConstraintsBatchImpl batch);
public int GetConstraintCount()
{
return Oni.GetConstraintCount(m_Solver.oniSolver, (int)m_ConstraintType);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7855ae746662942f2b61f01cda77cd71
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 303dd45caa88c4cd2bb03c65bbb0309c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniPinConstraintsBatchImpl : OniConstraintsBatchImpl, IPinConstraintsBatchImpl
{
public OniPinConstraintsBatchImpl(OniPinConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Pin)
{
}
public void SetPinConstraints(ObiNativeIntList particleIndices, ObiNativeIntList colliderIndices, ObiNativeVector4List offsets, ObiNativeQuaternionList restDarbouxVectors, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count)
{
Oni.SetPinConstraints(oniBatch, particleIndices.GetIntPtr() ,offsets.GetIntPtr(), restDarbouxVectors.GetIntPtr(), colliderIndices.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7027ecb8259ee445bb7280c585d5b401
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniPinConstraintsImpl : OniConstraintsImpl
{
public OniPinConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Pin)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniPinConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 80f6683022e124b7ab5f002abb8df42a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 76aa6338faa6b4855a36b8ad4c1985bf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,39 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniShapeMatchingConstraintsBatchImpl : OniConstraintsBatchImpl, IShapeMatchingConstraintsBatchImpl
{
public OniShapeMatchingConstraintsBatchImpl(OniShapeMatchingConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.ShapeMatching)
{
}
public void SetShapeMatchingConstraints(ObiNativeIntList particleIndices,
ObiNativeIntList firstIndex,
ObiNativeIntList numIndices,
ObiNativeIntList explicitGroup,
ObiNativeFloatList shapeMaterialParameters,
ObiNativeVector4List restComs,
ObiNativeVector4List coms,
ObiNativeQuaternionList orientations,
ObiNativeMatrix4x4List linearTransforms,
ObiNativeMatrix4x4List plasticDeformations,
ObiNativeFloatList lambdas,
int count)
{
Oni.SetShapeMatchingConstraints(oniBatch, particleIndices.GetIntPtr(), firstIndex.GetIntPtr(), numIndices.GetIntPtr(), explicitGroup.GetIntPtr(),
shapeMaterialParameters.GetIntPtr(),restComs.GetIntPtr(), coms.GetIntPtr(), orientations.GetIntPtr(), linearTransforms.GetIntPtr(),
plasticDeformations.GetIntPtr(), count);
}
public void CalculateRestShapeMatching()
{
Oni.RecalculateInertiaTensors(((OniSolverImpl)this.constraints.solver).oniSolver);
Oni.CalculateRestShapeMatching(((OniSolverImpl)this.constraints.solver).oniSolver, oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2d8b27a2b5372453881109f4d30710aa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniShapeMatchingConstraintsImpl : OniConstraintsImpl
{
public OniShapeMatchingConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.ShapeMatching)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniShapeMatchingConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3179c27ebcc34455aa7967691f6987f3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e9fde13a2a0dc426892c122badd434c7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniSkinConstraintsBatchImpl : OniConstraintsBatchImpl, ISkinConstraintsBatchImpl
{
public OniSkinConstraintsBatchImpl(OniSkinConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Skin)
{
}
public void SetSkinConstraints(ObiNativeIntList particleIndices, ObiNativeVector4List skinPoints, ObiNativeVector4List skinNormals, ObiNativeFloatList skinRadiiBackstop, ObiNativeFloatList skinCompliance, ObiNativeFloatList lambdas, int count)
{
Oni.SetSkinConstraints(oniBatch, particleIndices.GetIntPtr(), skinPoints.GetIntPtr(), skinNormals.GetIntPtr(), skinRadiiBackstop.GetIntPtr(), skinCompliance.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 52429ca8e52974c47811bb3da9a6d0d6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniSkinConstraintsImpl : OniConstraintsImpl
{
public OniSkinConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Skin)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniSkinConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4125254438ad247e39a54527a1efb809
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 091666a5c10624749b5604db5c75a83d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniStitchConstraintsBatchImpl : OniConstraintsBatchImpl, IStitchConstraintsBatchImpl
{
public OniStitchConstraintsBatchImpl(OniStitchConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Stitch)
{
}
public void SetStitchConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count)
{
Oni.SetStitchConstraints(oniBatch, particleIndices.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4b6e4637dbd2c4bffbcc8924a90ab7f1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniStitchConstraintsImpl : OniConstraintsImpl
{
public OniStitchConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Stitch)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniStitchConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8666f111d21594650832fc663f618da9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 10bea9144cdb54c7ca268e71727ba816
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniStretchShearConstraintsBatchImpl : OniConstraintsBatchImpl, IStretchShearConstraintsBatchImpl
{
public OniStretchShearConstraintsBatchImpl(OniStretchShearConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.StretchShear)
{
}
public void SetStretchShearConstraints(ObiNativeIntList particleIndices, ObiNativeIntList orientationIndices, ObiNativeFloatList restLengths, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeFloatList lambdas, int count)
{
Oni.SetStretchShearConstraints(oniBatch, particleIndices.GetIntPtr(), orientationIndices.GetIntPtr(), restLengths.GetIntPtr(), restOrientations.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8239fa7b75a3a4f9087095a893f26ecc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniStretchShearConstraintsImpl : OniConstraintsImpl
{
public OniStretchShearConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.StretchShear)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniStretchShearConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2e074bd8c876f4a26b870b1bb6338857
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f170479298b9f47a39047b37d4d124f0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniTetherConstraintsBatchImpl : OniConstraintsBatchImpl, ITetherConstraintsBatchImpl
{
public OniTetherConstraintsBatchImpl(OniTetherConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Tether)
{
}
public void SetTetherConstraints(ObiNativeIntList particleIndices, ObiNativeVector2List maxLengthScale, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count)
{
Oni.SetTetherConstraints(oniBatch, particleIndices.GetIntPtr(), maxLengthScale.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8d972dca9090340739b46bfce8769234
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniTetherConstraintsImpl : OniConstraintsImpl
{
public OniTetherConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Tether)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniTetherConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6922281fd02e54bc2907d3327e602daf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 15ac90acb12cf47928ff5732c87d2f08
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniVolumeConstraintsBatchImpl : OniConstraintsBatchImpl, IVolumeConstraintsBatchImpl
{
public OniVolumeConstraintsBatchImpl(OniVolumeConstraintsImpl constraints) : base(constraints, Oni.ConstraintType.Volume)
{
}
public void SetVolumeConstraints(ObiNativeIntList triangles,
ObiNativeIntList firstTriangle,
ObiNativeIntList numTriangles,
ObiNativeFloatList restVolumes,
ObiNativeVector2List pressureStiffness,
ObiNativeFloatList lambdas,
int count)
{
Oni.SetVolumeConstraints(oniBatch, triangles.GetIntPtr(), firstTriangle.GetIntPtr(), numTriangles.GetIntPtr(), restVolumes.GetIntPtr(), pressureStiffness.GetIntPtr(), lambdas.GetIntPtr(), count);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1af520b0f02a347c4b1d36842ee90910
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
#if (OBI_ONI_SUPPORTED)
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniVolumeConstraintsImpl : OniConstraintsImpl
{
public OniVolumeConstraintsImpl(OniSolverImpl solver) : base(solver, Oni.ConstraintType.Volume)
{
}
public override IConstraintsBatchImpl CreateConstraintsBatch()
{
var batch = new OniVolumeConstraintsBatchImpl(this);
Oni.AddBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
return batch;
}
public override void RemoveBatch(IConstraintsBatchImpl batch)
{
Oni.RemoveBatch(((OniSolverImpl)solver).oniSolver, ((OniConstraintsBatchImpl)batch).oniBatch);
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: db1478edc2f6b48928e2ba97aafd9bad
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,43 @@
#if (OBI_ONI_SUPPORTED)
using UnityEngine;
using System;
using System.Collections;
namespace Obi
{
public class OniBackend : IObiBackend
{
private OniColliderWorld colliderGrid;
#region Solver
public ISolverImpl CreateSolver(ObiSolver solver, int capacity)
{
GetOrCreateColliderWorld();
colliderGrid.IncreaseReferenceCount();
return new OniSolverImpl(Oni.CreateSolver(capacity));
}
public void DestroySolver(ISolverImpl solver)
{
if (solver != null)
{
if (colliderGrid != null)
colliderGrid.DecreaseReferenceCount();
solver.Destroy();
}
}
// Single type of collision world. Each solver implementation should manage the data as it can.
private void GetOrCreateColliderWorld()
{
colliderGrid = GameObject.FindObjectOfType<OniColliderWorld>();
if (colliderGrid == null)
{
var world = new GameObject("OniCollisionWorld", typeof(OniColliderWorld));
colliderGrid = world.GetComponent<OniColliderWorld>();
}
}
#endregion
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b205c5ca9755442b186b1d93df7d7dc6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,75 @@
#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

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d02d25c24c8574316883c920912e4fdb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
#if (OBI_ONI_SUPPORTED)
using System;
namespace Obi
{
public class OniJobHandle : IObiJobHandle
{
private IntPtr pointer = IntPtr.Zero;
public OniJobHandle SetPointer(IntPtr newPtr)
{
pointer = newPtr;
return this;
}
public void Complete()
{
Oni.Complete(pointer);
}
public void Release()
{
pointer = IntPtr.Zero;
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 502f41bdafa70468985a879d9ffc67d9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e2f8381840ff54c2f9122f2329cf9366
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,226 @@
#if (OBI_ONI_SUPPORTED)
using UnityEngine;
using System;
using System.Collections;
using System.Runtime.InteropServices;
namespace Obi
{
public class OniSolverImpl : ISolverImpl
{
private IntPtr m_OniSolver;
// Per-type constraints array:
private IOniConstraintsImpl[] constraints;
// Pool job handles to avoid runtime alloc:
private JobHandlePool<OniJobHandle> jobHandlePool;
public IntPtr oniSolver
{
get { return m_OniSolver; }
}
public OniSolverImpl(IntPtr solver)
{
m_OniSolver = solver;
jobHandlePool = new JobHandlePool<OniJobHandle>(4);
constraints = new IOniConstraintsImpl[Oni.ConstraintTypeCount];
constraints[(int)Oni.ConstraintType.Tether] = new OniTetherConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Volume] = new OniVolumeConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Chain] = new OniChainConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Bending] = new OniBendConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Distance] = new OniDistanceConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.ShapeMatching] = new OniShapeMatchingConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.BendTwist] = new OniBendTwistConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.StretchShear] = new OniStretchShearConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Pin] = new OniPinConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Skin] = new OniSkinConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Aerodynamics] = new OniAerodynamicConstraintsImpl(this);
constraints[(int)Oni.ConstraintType.Stitch] = new OniStitchConstraintsImpl(this);
}
public void Destroy()
{
Oni.DestroySolver(m_OniSolver);
m_OniSolver = IntPtr.Zero;
}
public void InitializeFrame(Vector4 translation, Vector4 scale, Quaternion rotation)
{
Oni.InitializeFrame(oniSolver, ref translation, ref scale, ref rotation);
}
public void UpdateFrame(Vector4 translation, Vector4 scale, Quaternion rotation, float deltaTime)
{
Oni.UpdateFrame(oniSolver, ref translation, ref scale, ref rotation, deltaTime);
}
public void ApplyFrame(float worldLinearInertiaScale, float worldAngularInertiaScale, float deltaTime)
{
Oni.ApplyFrame(oniSolver, 0, 0, worldLinearInertiaScale, worldAngularInertiaScale, deltaTime);
}
public int GetDeformableTriangleCount()
{
return Oni.GetDeformableTriangleCount(m_OniSolver);
}
public void SetDeformableTriangles(int[] indices, int num, int destOffset)
{
Oni.SetDeformableTriangles(m_OniSolver, indices, num, destOffset);
}
public int RemoveDeformableTriangles(int num, int sourceOffset)
{
return Oni.RemoveDeformableTriangles(m_OniSolver, num, sourceOffset);
}
public void SetSimplices(ObiNativeIntList simplices, SimplexCounts counts)
{
Oni.SetSimplices(m_OniSolver, simplices.AsNativeArray<int>().ToArray(), counts.pointCount, counts.edgeCount, counts.triangleCount);
}
public void ParticleCountChanged(ObiSolver solver)
{
Oni.SetParticlePositions(m_OniSolver, solver.positions.GetIntPtr());
Oni.SetParticlePreviousPositions(m_OniSolver, solver.prevPositions.GetIntPtr());
Oni.SetRestPositions(m_OniSolver, solver.restPositions.GetIntPtr());
Oni.SetParticleOrientations(m_OniSolver, solver.orientations.GetIntPtr());
Oni.SetParticlePreviousOrientations(m_OniSolver, solver.prevOrientations.GetIntPtr());
Oni.SetRestOrientations(m_OniSolver, solver.restOrientations.GetIntPtr());
Oni.SetParticleVelocities(m_OniSolver, solver.velocities.GetIntPtr());
Oni.SetParticleAngularVelocities(m_OniSolver, solver.angularVelocities.GetIntPtr());
Oni.SetParticleInverseMasses(m_OniSolver, solver.invMasses.GetIntPtr());
Oni.SetParticleInverseRotationalMasses(m_OniSolver, solver.invRotationalMasses.GetIntPtr());
Oni.SetParticlePrincipalRadii(m_OniSolver, solver.principalRadii.GetIntPtr());
Oni.SetParticleCollisionMaterials(m_OniSolver, solver.collisionMaterials.GetIntPtr());
Oni.SetParticlePhases(m_OniSolver, solver.phases.GetIntPtr());
Oni.SetParticleFilters(m_OniSolver, solver.filters.GetIntPtr());
Oni.SetRenderableParticlePositions(m_OniSolver, solver.renderablePositions.GetIntPtr());
Oni.SetRenderableParticleOrientations(m_OniSolver, solver.renderableOrientations.GetIntPtr());
Oni.SetParticleAnisotropies(m_OniSolver, solver.anisotropies.GetIntPtr());
Oni.SetParticleSmoothingRadii(m_OniSolver, solver.smoothingRadii.GetIntPtr());
Oni.SetParticleBuoyancy(m_OniSolver, solver.buoyancies.GetIntPtr());
Oni.SetParticleRestDensities(m_OniSolver, solver.restDensities.GetIntPtr());
Oni.SetParticleViscosities(m_OniSolver, solver.viscosities.GetIntPtr());
Oni.SetParticleSurfaceTension(m_OniSolver, solver.surfaceTension.GetIntPtr());
Oni.SetParticleVorticityConfinement(m_OniSolver, solver.vortConfinement.GetIntPtr());
Oni.SetParticleAtmosphericDragPressure(m_OniSolver, solver.atmosphericDrag.GetIntPtr(), solver.atmosphericPressure.GetIntPtr());
Oni.SetParticleDiffusion(m_OniSolver, solver.diffusion.GetIntPtr());
Oni.SetParticleVorticities(m_OniSolver, solver.vorticities.GetIntPtr());
Oni.SetParticleFluidData(m_OniSolver, solver.fluidData.GetIntPtr());
Oni.SetParticleUserData(m_OniSolver, solver.userData.GetIntPtr());
Oni.SetParticleExternalForces(m_OniSolver, solver.externalForces.GetIntPtr());
Oni.SetParticleExternalTorques(m_OniSolver, solver.externalTorques.GetIntPtr());
Oni.SetParticleWinds(m_OniSolver, solver.wind.GetIntPtr());
Oni.SetParticlePositionDeltas(m_OniSolver, solver.positionDeltas.GetIntPtr());
Oni.SetParticleOrientationDeltas(m_OniSolver, solver.orientationDeltas.GetIntPtr());
Oni.SetParticlePositionConstraintCounts(m_OniSolver, solver.positionConstraintCounts.GetIntPtr());
Oni.SetParticleOrientationConstraintCounts(m_OniSolver, solver.orientationConstraintCounts.GetIntPtr());
Oni.SetParticleNormals(m_OniSolver, solver.normals.GetIntPtr());
Oni.SetParticleInverseInertiaTensors(m_OniSolver, solver.invInertiaTensors.GetIntPtr());
Oni.SetCapacity(m_OniSolver, solver.positions.capacity);
}
public void SetRigidbodyArrays(ObiSolver solver)
{
Oni.SetRigidbodyLinearDeltas(m_OniSolver, solver.rigidbodyLinearDeltas.GetIntPtr());
Oni.SetRigidbodyAngularDeltas(m_OniSolver, solver.rigidbodyAngularDeltas.GetIntPtr());
}
public void SetActiveParticles(ObiNativeIntList indices)
{
Oni.SetActiveParticles(oniSolver, indices.AsNativeArray<int>().ToArray(), indices.count);
}
public void ResetForces()
{
Oni.ResetForces(oniSolver);
}
public void GetBounds(ref Vector3 min, ref Vector3 max)
{
Oni.GetBounds(oniSolver, ref min, ref max);
}
public void SetParameters(Oni.SolverParameters parameters)
{
Oni.SetSolverParameters(m_OniSolver, ref parameters);
}
public int GetConstraintCount(Oni.ConstraintType type)
{
return Oni.GetConstraintCount(m_OniSolver, (int)type);
}
public void GetCollisionContacts(Oni.Contact[] contacts, int count)
{
Oni.GetCollisionContacts(m_OniSolver, contacts, count);
}
public void GetParticleCollisionContacts(Oni.Contact[] contacts, int count)
{
Oni.GetParticleCollisionContacts(m_OniSolver, contacts, count);
}
public void SetConstraintGroupParameters(Oni.ConstraintType type, ref Oni.ConstraintParameters parameters)
{
Oni.SetConstraintGroupParameters(m_OniSolver, (int)type, ref parameters);
}
public IConstraintsBatchImpl CreateConstraintsBatch(Oni.ConstraintType constraintType)
{
return constraints[(int)constraintType].CreateConstraintsBatch();
}
public void DestroyConstraintsBatch(IConstraintsBatchImpl batch)
{
if (batch != null)
constraints[(int)batch.constraintType].RemoveBatch(batch);
}
public IObiJobHandle CollisionDetection(float stepTime)
{
Oni.RecalculateInertiaTensors(oniSolver);
return jobHandlePool.Borrow().SetPointer(Oni.CollisionDetection(oniSolver, stepTime));
}
public IObiJobHandle Substep(float stepTime, float substepTime, int substeps)
{
return jobHandlePool.Borrow().SetPointer(Oni.Step(oniSolver, stepTime, substepTime, substeps));
}
public void ApplyInterpolation(ObiNativeVector4List startPositions, ObiNativeQuaternionList startOrientations, float stepTime, float unsimulatedTime)
{
Oni.ApplyPositionInterpolation(oniSolver, startPositions.GetIntPtr(), startOrientations.GetIntPtr(), stepTime, unsimulatedTime);
}
public void InterpolateDiffuseProperties(ObiNativeVector4List properties, ObiNativeVector4List diffusePositions, ObiNativeVector4List diffuseProperties, ObiNativeIntList neighbourCount, int diffuseCount)
{
Oni.InterpolateDiffuseParticles(oniSolver, properties.GetIntPtr(), diffusePositions.GetIntPtr(), diffuseProperties.GetIntPtr(), neighbourCount.GetIntPtr(), diffuseCount);
}
public int GetParticleGridSize()
{
return Oni.GetParticleGridSize(oniSolver);
}
public void GetParticleGrid(ObiNativeAabbList cells)
{
//Oni.GetParticleGrid(oniSolver, cells.GetIntPtr());
}
public void SpatialQuery(ObiNativeQueryShapeList shapes, ObiNativeAffineTransformList transforms, ObiNativeQueryResultList results)
{
int count = Oni.SpatialQuery(oniSolver, shapes.GetIntPtr(), transforms.GetIntPtr(), shapes.count);
results.ResizeUninitialized(count);
Oni.GetQueryResults(oniSolver, results.GetIntPtr(), count);
}
public void ReleaseJobHandles()
{
jobHandlePool.ReleaseAll();
}
}
}
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3240362f8b8e047d7b9250344aaa0d6d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: