修改水
This commit is contained in:
8
Assets/Obi/Scripts/Common/Backends/Oni/Constraints.meta
Normal file
8
Assets/Obi/Scripts/Common/Backends/Oni/Constraints.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97b02df45f4844e32a90f2f5d93de422
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac58d86bbc15740a98fd45e796e43034
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2eaf9121855a4484d8f5765d4ad9d974
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 990162413cc804203a6ca5d7d90e1ae3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 64ac30003117243aba84fc4298f84eb7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e465799aa3593428ebabdef6d97f2b4a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: abf82a5f5548d41feaaa9fa141461c4c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cdbe2ed97af924bb9ba78bac0fc122c7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ba36c80996a534178a1db381ccbc8949
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6be6b2551afe45508d996dd67d1b710
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1a6c548d46acc4e88a31b3bf6b0a9ea8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 315f0420a391e43b3a3e255fce157f2a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5730de157a60b46e9b258ac099ff1980
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ffe3dc0008b2b461d80dab10f72f50ee
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e2e6ffc02968643a7a530f931b92f948
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1317284f320be48c7be4a294d253fc95
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f2c339d89f1144ea82e9763963f897d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7855ae746662942f2b61f01cda77cd71
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 303dd45caa88c4cd2bb03c65bbb0309c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7027ecb8259ee445bb7280c585d5b401
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80f6683022e124b7ab5f002abb8df42a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76aa6338faa6b4855a36b8ad4c1985bf
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d8b27a2b5372453881109f4d30710aa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3179c27ebcc34455aa7967691f6987f3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9fde13a2a0dc426892c122badd434c7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52429ca8e52974c47811bb3da9a6d0d6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4125254438ad247e39a54527a1efb809
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 091666a5c10624749b5604db5c75a83d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4b6e4637dbd2c4bffbcc8924a90ab7f1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8666f111d21594650832fc663f618da9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10bea9144cdb54c7ca268e71727ba816
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8239fa7b75a3a4f9087095a893f26ecc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e074bd8c876f4a26b870b1bb6338857
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f170479298b9f47a39047b37d4d124f0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8d972dca9090340739b46bfce8769234
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6922281fd02e54bc2907d3327e602daf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15ac90acb12cf47928ff5732c87d2f08
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1af520b0f02a347c4b1d36842ee90910
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db1478edc2f6b48928e2ba97aafd9bad
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
43
Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs
Normal file
43
Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs
Normal 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
|
||||
11
Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs.meta
Normal file
11
Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b205c5ca9755442b186b1d93df7d7dc6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
75
Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs
Normal file
75
Assets/Obi/Scripts/Common/Backends/Oni/OniColliderWorld.cs
Normal 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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d02d25c24c8574316883c920912e4fdb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
27
Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs
Normal file
27
Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs
Normal 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
|
||||
11
Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs.meta
Normal file
11
Assets/Obi/Scripts/Common/Backends/Oni/OniJobHandle.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 502f41bdafa70468985a879d9ffc67d9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Obi/Scripts/Common/Backends/Oni/Solver.meta
Normal file
8
Assets/Obi/Scripts/Common/Backends/Oni/Solver.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e2f8381840ff54c2f9122f2329cf9366
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
226
Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs
Normal file
226
Assets/Obi/Scripts/Common/Backends/Oni/Solver/OniSolverImpl.cs
Normal 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
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3240362f8b8e047d7b9250344aaa0d6d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user