Example #1
0
        public SharpEngine(
            PhysicsEngineParameters simulationParameters,
            CollisionEngineParameters collisionEngineParameters,
            SolverParameters solverParameters)
        {
            SolverParameters     = solverParameters;
            CollisionEngineParam = collisionEngineParameters;
            EngineParameters     = simulationParameters;

            // Default solver
            SetSolverType(SolverType.ProjectedGaussSeidel);

            Shapes = new IShape[0];

            CollisionEngine = new CollisionDetectionEngine(
                collisionEngineParameters,
                EngineParameters.CollisionDistance);

            contactPartitioningEngine = new ContactPartitioningEngine();

            CollisionShapes          = new List <ICollisionShape>();
            CollisionJoints          = new List <ICollisionJoint>();
            Joints                   = new List <IConstraint> ();
            HsGenerator              = new HashGenerator();
            LinearSystemBuilder      = new LinearProblemBuilderEngine(EngineParameters);
            IntegrateVelocityEngine  = new IntegrateVelocity(EngineParameters);
            IntegratePositionEngine  = new IntegratePosition(EngineParameters);
            contactConstraintBuilder = new ContactConstraintBuilder(EngineParameters);
            rayCastEngine            = new RayCastingEngine();
            warmStartEngine          = new WarmStartEngine(EngineParameters);
            ccdEngine                = new ConservativeAdvancement();
        }
		public PhysicsEngine (
			SimulationParameters simulationParameters,
			CollisionEngineParameters collisionEngineParameters,
			SolverParameters solverParameters)
		{
			SolverParam = solverParameters;

			SetSolver(SolverType.NonLinearConjugateGradient);

			CollisionEngineParam = collisionEngineParameters;

			collisionEngine = new CollisionDetectionEngine(collisionEngineParameters);

			SimulationEngineParameters = simulationParameters;

			contactPartitioningEngine = new ContactPartitioningEngine();

			simulationObjects = new SimulationObject[0];
			simulationJoints = new List<IConstraint> ();
		}
		protected virtual void Dispose(bool disposing)
		{
			if (disposed)
				return;

			if (disposing)
			{
				simulationObjects = null;
				simulationJoints = null;
				collisionPoints = null;
				collisionPartitionedPoints = null;
				partitionedJoint = null;
				collisionEngine = null;
				contactPartitioningEngine = null;
				solver = null;
			}

			// Free any unmanaged objects here.
			//
			disposed = true;
		}