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]); }
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]); } }
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; }
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(); }
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]); }
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]); }