Esempio n. 1
0
 void Picker_OnParticlePicked(object sender, ObiClothPicker.ParticlePickEventArgs e)
 {
     picker.Cloth.Solver.RequireRenderablePositions();
     originalMass = picker.Cloth.invMasses[e.particleIndex];
     Oni.SetParticleVelocities(picker.Cloth.Solver.OniSolver, new Vector4[] { Vector4.zero }, 1, picker.Cloth.particleIndices[e.particleIndex]);
     Oni.SetParticleInverseMasses(picker.Cloth.Solver.OniSolver, new float[] { 0 }, 1, picker.Cloth.particleIndices[e.particleIndex]);
 }
Esempio n. 2
0
        void Picker_OnParticleDragged(object sender, ObiClothPicker.ParticlePickEventArgs e)
        {
            if (originalMass > 0)
            {
                Vector4 newPosition = picker.Cloth.Solver.renderablePositions[picker.Cloth.particleIndices[e.particleIndex]] +
                                      new Vector4(e.mouseDelta[0], e.mouseDelta[1], e.mouseDelta[2], 0);

                Oni.SetParticlePositions(picker.Cloth.Solver.OniSolver, new Vector4[] { newPosition }, 1, picker.Cloth.particleIndices[e.particleIndex]);
            }
        }
Esempio n. 3
0
        void Picker_OnParticleDragged(object sender, ObiClothPicker.ParticlePickEventArgs e)
        {
            if (originalMass > 0)
            {
                ObiSolver solver = picker.Cloth.Solver;

                Vector4 newPosition = solver.renderablePositions[picker.Cloth.particleIndices[e.particleIndex]] + (Vector4)e.mouseDelta;

                // convert new position to solver space if needed:
                if (solver.simulateInLocalSpace)
                {
                    newPosition = solver.transform.InverseTransformPoint(newPosition);
                }

                Oni.SetParticlePositions(solver.OniSolver, new Vector4[] { newPosition }, 1, picker.Cloth.particleIndices[e.particleIndex]);

                // counteract gravity:
                Oni.SetParticleVelocities(solver.OniSolver, new Vector4[] { -solver.parameters.gravity * Time.fixedDeltaTime }, 1, picker.Cloth.particleIndices[e.particleIndex]);
            }
        }
 private void Picker_OnParticleDragged(object sender, ObiClothPicker.ParticlePickEventArgs e)
 {
     pickArgs = e;
 }
 private void Picker_OnParticleReleased(object sender, ObiClothPicker.ParticlePickEventArgs e)
 {
     pickArgs = null;
 }
Esempio n. 6
0
 void Picker_OnParticleReleased(object sender, ObiClothPicker.ParticlePickEventArgs e)
 {
     Oni.SetParticleInverseMasses(picker.Cloth.Solver.OniSolver, new float[] { originalMass }, 1, picker.Cloth.particleIndices[e.particleIndex]);
     picker.Cloth.Solver.RelinquishRenderablePositions();
 }
Esempio n. 7
0
 void Picker_OnParticlePicked(object sender, ObiClothPicker.ParticlePickEventArgs e)
 {
     picker.Cloth.Solver.RequireRenderablePositions();
     originalMass = picker.Cloth.invMasses[e.particleIndex];
     Oni.SetParticleInverseMasses(picker.Cloth.Solver.OniSolver, new float[] { DRAGGED_PARTICLE_MASS }, 1, picker.Cloth.particleIndices[e.particleIndex]);
 }
Esempio n. 8
0
 void Picker_OnParticleHeld(object sender, ObiClothPicker.ParticlePickEventArgs e)
 {
     // counteract gravity:
     Oni.SetParticleVelocities(picker.Cloth.Solver.OniSolver, new Vector4[] { -picker.Cloth.Solver.parameters.gravity * Time.fixedDeltaTime }, 1, picker.Cloth.particleIndices[e.particleIndex]);
 }