protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < particleIndices.count; i++)
            {
                particleIndices[i] = constraints.GetActor().solverIndices[source.particleIndices[i]];
            }

            // pass constraint data arrays to the solver:
            Oni.SetAerodynamicConstraints(batch, particleIndices.GetIntPtr(), aerodynamicCoeffs.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
Пример #2
0
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < particleIndices.count; i++)
            {
                particleIndices[i] = constraints.GetActor().solverIndices[source.particleIndices[i]];
            }

            // pass constraint data arrays to the solver:
            Oni.SetVolumeConstraints(batch, particleIndices.GetIntPtr(), firstTriangle.GetIntPtr(),
                                     restVolumes.GetIntPtr(), pressureStiffness.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
Пример #3
0
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < restLengths.count; i++)
            {
                particleIndices[i * 2]     = constraints.GetActor().solverIndices[source.particleIndices[i * 2]];
                particleIndices[i * 2 + 1] = constraints.GetActor().solverIndices[source.particleIndices[i * 2 + 1]];
                stiffnesses[i]             = new Vector2(0, restLengths[i]);
            }

            // pass constraint data arrays to the solver:
            Oni.SetDistanceConstraints(batch, particleIndices.GetIntPtr(), restLengths.GetIntPtr(), stiffnesses.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < restBends.count; i++)
            {
                particleIndices[i * 3]     = constraints.GetActor().solverIndices[source.particleIndices[i * 3]];
                particleIndices[i * 3 + 1] = constraints.GetActor().solverIndices[source.particleIndices[i * 3 + 1]];
                particleIndices[i * 3 + 2] = constraints.GetActor().solverIndices[source.particleIndices[i * 3 + 2]];
            }

            // pass constraint data arrays to the solver:
            Oni.SetBendingConstraints(batch, particleIndices.GetIntPtr(), restBends.GetIntPtr(), bendingStiffnesses.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
 public void SetShapeMatchingConstraints(ObiNativeIntList particleIndices,
                                         ObiNativeIntList firstIndex,
                                         ObiNativeIntList numIndices,
                                         ObiNativeIntList explicitGroup,
                                         ObiNativeFloatList shapeMaterialParameters,
                                         ObiNativeVector4List restComs,
                                         ObiNativeVector4List coms,
                                         ObiNativeQuaternionList orientations,
                                         ObiNativeFloatList lambdas,
                                         int count)
 {
     Oni.SetShapeMatchingConstraints(oniBatch, particleIndices.GetIntPtr(), firstIndex.GetIntPtr(), numIndices.GetIntPtr(), explicitGroup.GetIntPtr(),
                                     shapeMaterialParameters.GetIntPtr(), restComs.GetIntPtr(), coms.GetIntPtr(), orientations.GetIntPtr(), count);
 }
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < particleIndices.count; i++)
            {
                particleIndices[i] = constraints.GetActor().solverIndices[source.particleIndices[i]];
            }

            for (int i = 0; i < orientations.count; i++)
            {
                orientations[i] = constraints.GetActor().actorLocalToSolverMatrix.rotation;
            }

            // pass constraint data arrays to the solver:
            Oni.SetShapeMatchingConstraints(batch, particleIndices.GetIntPtr(), firstIndex.GetIntPtr(), numIndices.GetIntPtr(), explicitGroup.GetIntPtr(),
                                            materialParameters.GetIntPtr(), restComs.GetIntPtr(), coms.GetIntPtr(), orientations.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);

            Oni.CalculateRestShapeMatching(constraints.GetActor().solver.OniSolver, batch);
        }
Пример #7
0
        public void PushDataToSolver()
        {
            if (!inSolver)
            {
                return;
            }

            // set solver constraint data:
            particleIndices.ResizeUninitialized(stitches.Count * 2);
            stiffnesses.ResizeUninitialized(stitches.Count);

            for (int i = 0; i < stitches.Count; i++)
            {
                particleIndices[i * 2]     = actor1.solverIndices[stitches[i].particleIndex1];
                particleIndices[i * 2 + 1] = actor2.solverIndices[stitches[i].particleIndex2];
                stiffnesses[i]             = 0;
            }

            Oni.SetStitchConstraints(batch, particleIndices.GetIntPtr(), stiffnesses.GetIntPtr(), stitches.Count);
            Oni.SetActiveConstraints(batch, stitches.Count);
        }
Пример #8
0
 public void SetBendTwistConstraints(ObiNativeIntList orientationIndices, ObiNativeQuaternionList restOrientations, ObiNativeVector3List stiffnesses, ObiNativeFloatList lambdas, int count)
 {
     Oni.SetBendTwistConstraints(oniBatch, orientationIndices.GetIntPtr(), restOrientations.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
 }
 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);
 }
 public void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples)
 {
     Oni.SetHeightFieldData(headers.GetIntPtr(), samples.GetIntPtr());
 }
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < stiffnesses.count; i++)
            {
                particleIndices[i * 2]     = constraints.GetActor().solverIndices[source.particleIndices[i * 2]];
                particleIndices[i * 2 + 1] = constraints.GetActor().solverIndices[source.particleIndices[i * 2 + 1]];
            }

            // pass constraint data arrays to the solver:
            Oni.SetTetherConstraints(batch, particleIndices.GetIntPtr(), maxLengthsScales.GetIntPtr(), stiffnesses.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
 public void SetAerodynamicConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList aerodynamicCoeffs, int count)
 {
     Oni.SetAerodynamicConstraints(oniBatch, particleIndices.GetIntPtr(), aerodynamicCoeffs.GetIntPtr(), count);
 }
Пример #13
0
 public void SetBendConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList restBends, ObiNativeVector2List bendingStiffnesses, ObiNativeFloatList lambdas, int count)
 {
     Oni.SetBendingConstraints(oniBatch, particleIndices.GetIntPtr(), restBends.GetIntPtr(), bendingStiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
 }
 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);
 }
Пример #15
0
 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);
 }
Пример #16
0
 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);
 }
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < restLengths.count; i++)
            {
                particleIndices[i * 2]     = constraints.GetActor().solverIndices[source.particleIndices[i * 2]];
                particleIndices[i * 2 + 1] = constraints.GetActor().solverIndices[source.particleIndices[i * 2 + 1]];
                orientationIndices[i]      = constraints.GetActor().solverIndices[((ObiStretchShearConstraintsBatch)source).orientationIndices[i]];
            }

            // pass constraint data arrays to the solver:
            Oni.SetStretchShearConstraints(batch, particleIndices.GetIntPtr(), orientationIndices.GetIntPtr(), restLengths.GetIntPtr(), restOrientations.GetIntPtr(), stiffnesses.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
Пример #18
0
 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);
 }
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            if (source != null)
            {
                for (int i = 0; i < particleIndices.count; i++)
                {
                    particleIndices[i]     = constraints.GetActor().solverIndices[source.particleIndices[i]];
                    stiffnesses[i * 2]     = 0;
                    stiffnesses[i * 2 + 1] = 0;
                }
            }

            // pass constraint data arrays to the solver:
            Oni.SetPinConstraints(batch, particleIndices.GetIntPtr(), offsets.GetIntPtr(), restDarbouxVectors.GetIntPtr(), pinBodies.GetIntPtr(), stiffnesses.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
Пример #20
0
        protected override void OnAddToSolver(IObiConstraints constraints)
        {
            for (int i = 0; i < skinCompliance.count; i++)
            {
                particleIndices[i] = constraints.GetActor().solverIndices[source.particleIndices[i]];
            }

            // pass constraint data arrays to the solver:
            Oni.SetSkinConstraints(batch, particleIndices.GetIntPtr(), skinPoints.GetIntPtr(), skinNormals.GetIntPtr(), skinRadiiBackstop.GetIntPtr(), skinCompliance.GetIntPtr(), m_ConstraintCount);
            Oni.SetActiveConstraints(batch, m_ActiveConstraintCount);
        }
 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);
 }
 public void SetStitchConstraints(ObiNativeIntList particleIndices, ObiNativeFloatList stiffnesses, ObiNativeFloatList lambdas, int count)
 {
     Oni.SetStitchConstraints(oniBatch, particleIndices.GetIntPtr(), stiffnesses.GetIntPtr(), lambdas.GetIntPtr(), count);
 }