public static void SetForceEffectScene(ISimulator simulator) { int echelonCount = 7; var chain = new IRigidBody[echelonCount]; for (int i = 0; i < echelonCount; i++) { chain[i] = SetSimpleRigidBody <ISphereShape, SphereShapeDescriptor>(simulator, new RigidBodyDescriptor(i == 0 ? MotionType.Static : MotionType.Dynamic, Matrices.Translate(-i, 10, 0), _motionColor), new SphereShapeDescriptor(0.4f), new MaterialDescriptor(0.5f, 0.5f)); if (i > 0) { simulator.ConstraintsFactory.CreateSphericalJoint( new SphericalJointDescriptor( new Vector3(1f, 0, 0), new Vector3(), chain[i], chain[i - 1])); } } for (int i = 0; i < 2 * echelonCount; i++) { SetSimpleRigidBody <IBoxShape, BoxShapeDescriptor>(simulator, new RigidBodyDescriptor(MotionType.Dynamic, Matrices.Translate(-i, (i + 1) * 0.1f / 2, 10), _motionColor), new BoxShapeDescriptor((i + 1) * 0.1f, (i + 1) * 0.1f, (i + 1) * 0.1f), new MaterialDescriptor(0.5f, 0.5f)); } simulator.AddForceEffect(new AttractionForceEffect(chain[echelonCount - 1])); SetGround(simulator, new MaterialDescriptor(0.5f, 0.5f)); }
private void renderedControl1_InitializeRender(object sender, RenderEventArgs e) { _render = e.Render; _renderingVisitor = new RenderingVisitor(_render); _simulator = new DigitalRuneSimulator(); _simulator.AddForceEffect(new GravityForceEffect()); Samples.SetSimpleScene(_simulator); _previousTickCount = Environment.TickCount; _startTickCount = _previousTickCount; }