private void Start() { for (int i = 0; i < 12; ++i) { PhysicsEngineForFun.Particle p = new PhysicsEngineForFun.Particle { position = new PhysicsEngineForFun.Vector3(i / 2, 0, i % 2), velocity = new PhysicsEngineForFun.Vector3(0, 0, 0), damping = 0.9f, acceleration = new PhysicsEngineForFun.Vector3(0, -9.8f, 0) }; p.ClearAccumulator(); world.particles.Add(p); particles[i] = p; } for (int i = 0; i < 10; ++i) { PhysicsEngineForFun.ParticleCable c = new PhysicsEngineForFun.ParticleCable { particle0 = particles[i], particle1 = particles[i + 2], maxLength = 2f, restitutionCoefficient = 0.3f }; world.contactGenerators.Add(c); cables[i] = c; } for (int i = 0; i < 12; ++i) { PhysicsEngineForFun.ParticleCableConstraint c = new PhysicsEngineForFun.ParticleCableConstraint() { particle = particles[i], anchorPoint = new PhysicsEngineForFun.Vector3(i / 2 * 2f + 4f, 4, i % 2 * 1.4f - 3.2f), maxLength = i < 6 ? i / 2 * 0.5f + 3f : (5 - i / 2) * 0.5f + 3f, restitutionCoefficient = 0.5f }; world.contactGenerators.Add(c); constraints[i] = c; } for (int i = 0; i < 6; ++i) { PhysicsEngineForFun.ParticleConnectingRod r = new PhysicsEngineForFun.ParticleConnectingRod() { particle0 = particles[i * 2], particle1 = particles[i * 2 + 1], Length = 2f }; world.contactGenerators.Add(r); connectingRods[i] = r; } UpdateAdditionalMass(); }
private void Start() { for (int i = 0; i < 4; ++i) { PhysicsEngineForFun.Particle p = new PhysicsEngineForFun.Particle { velocity = new PhysicsEngineForFun.Vector3(0, 0, 0), damping = 0.9f, acceleration = new PhysicsEngineForFun.Vector3(0, -9.8f, 0) }; p.ClearAccumulator(); world.particles.Add(p); particles[i] = p; } particles[0].position = new PhysicsEngineForFun.Vector3(-3, 2, 1); particles[1].position = new PhysicsEngineForFun.Vector3(-3, 2, -1); particles[2].position = new PhysicsEngineForFun.Vector3(4, 2, 1); particles[3].position = new PhysicsEngineForFun.Vector3(4, 2, -1); for (int i = 0; i < 6; ++i) { connectingRods[i] = new PhysicsEngineForFun.ParticleConnectingRod(); world.contactGenerators.Add(connectingRods[i]); } connectingRods[0].particle0 = particles[0]; connectingRods[0].particle1 = particles[1]; connectingRods[0].Length = 2; connectingRods[1].particle0 = particles[2]; connectingRods[1].particle1 = particles[3]; connectingRods[1].Length = 2; connectingRods[2].particle0 = particles[0]; connectingRods[2].particle1 = particles[2]; connectingRods[2].Length = 7; connectingRods[3].particle0 = particles[1]; connectingRods[3].particle1 = particles[3]; connectingRods[3].Length = 7; connectingRods[4].particle0 = particles[0]; connectingRods[4].particle1 = particles[3]; connectingRods[4].Length = 7.28f; connectingRods[5].particle0 = particles[1]; connectingRods[5].particle1 = particles[2]; connectingRods[5].Length = 7.28f; for (int i = 0; i < 8; ++i) { rodsConstraints[i] = new PhysicsEngineForFun.ParticleConnectingRodConstraint(); world.contactGenerators.Add(rodsConstraints[i]); } rodsConstraints[0].anchorPoint = fixedPoints[0]; rodsConstraints[0].particle = particles[0]; rodsConstraints[0].Length = 3.606f; rodsConstraints[1].anchorPoint = fixedPoints[1]; rodsConstraints[1].particle = particles[1]; rodsConstraints[1].Length = 3.606f; rodsConstraints[2].anchorPoint = fixedPoints[0]; rodsConstraints[2].particle = particles[2]; rodsConstraints[2].Length = 4.472f; rodsConstraints[3].anchorPoint = fixedPoints[1]; rodsConstraints[3].particle = particles[3]; rodsConstraints[3].Length = 4.472f; rodsConstraints[4].anchorPoint = fixedPoints[0]; rodsConstraints[4].particle = particles[1]; rodsConstraints[4].Length = 4.123f; rodsConstraints[5].particle = particles[3]; rodsConstraints[5].anchorPoint = fixedPoints[0]; rodsConstraints[5].Length = 4.899f; rodsConstraints[6].particle = particles[2]; rodsConstraints[6].anchorPoint = fixedPoints[1]; rodsConstraints[6].Length = 4.899f; rodsConstraints[7].anchorPoint = fixedPoints[1]; rodsConstraints[7].particle = particles[0]; rodsConstraints[7].Length = 4.123f; UpdateAdditionalMass(); }