Beispiel #1
0
        public override btConstraintSolver getConstraintSolver()
        {
            global::System.IntPtr cPtr = BulletPINVOKE.btDiscreteDynamicsWorld_getConstraintSolver(swigCPtr);
            btConstraintSolver    ret  = (cPtr == global::System.IntPtr.Zero) ? null : new btConstraintSolver(cPtr, false);

            return(ret);
        }
Beispiel #2
0
        public override void Initialise(IMesher meshmerizer, IConfigSource config)
        {
            mesher = meshmerizer;
            // m_config = config;

            /*
             * if (Environment.OSVersion.Platform == PlatformID.Unix)
             * {
             *  m_log.Fatal("[BulletDotNET]: This configuration is not supported on *nix currently");
             *  Thread.Sleep(5000);
             *  Environment.Exit(0);
             * }
             */
            m_broadphase             = new btAxisSweep3(worldAabbMin, worldAabbMax, 16000);
            m_collisionConfiguration = new btDefaultCollisionConfiguration();
            m_solver     = new btSequentialImpulseConstraintSolver();
            m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
            m_world      = new btDiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration);
            m_world.setGravity(m_gravity);
            EnableCollisionInterface();
        }
Beispiel #3
0
 public btDiscreteDynamicsWorld(btDispatcher dispatcher, btBroadphaseInterface pairCache, btConstraintSolver constraintSolver, btCollisionConfiguration collisionConfiguration) : this(BulletPINVOKE.new_btDiscreteDynamicsWorld(btDispatcher.getCPtr(dispatcher), btBroadphaseInterface.getCPtr(pairCache), btConstraintSolver.getCPtr(constraintSolver), btCollisionConfiguration.getCPtr(collisionConfiguration)), true)
 {
 }
Beispiel #4
0
 public override void setConstraintSolver(btConstraintSolver solver)
 {
     BulletPINVOKE.btDiscreteDynamicsWorld_setConstraintSolver(swigCPtr, btConstraintSolver.getCPtr(solver));
 }
Beispiel #5
0
 public virtual void setConstraintSolver(btConstraintSolver solver)
 {
     BulletPINVOKE.btDynamicsWorld_setConstraintSolver(swigCPtr, btConstraintSolver.getCPtr(solver));
 }
Beispiel #6
0
        public override void PostInitialise(IConfigSource config)
        {
            //m_config = config;
            if (config != null)
            {
                IConfig physicsconfig = config.Configs["BulletPhysicsSettings"];
                if (physicsconfig != null)
                {
                    gravityx = physicsconfig.GetFloat("world_gravityx", 0f);
                    gravityy = physicsconfig.GetFloat("world_gravityy", 0f);
                    gravityz = physicsconfig.GetFloat("world_gravityz", -9.8f);

                    avDensity             = physicsconfig.GetFloat("av_density", 80f);
                    avHeightFudgeFactor   = physicsconfig.GetFloat("av_height_fudge_factor", 0.52f);
                    avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", 1.3f);
                    avMovementDivisorRun  = physicsconfig.GetFloat("av_movement_divisor_run", 0.8f);
                    avCapRadius           = physicsconfig.GetFloat("av_capsule_radius", 0.37f);

                    //contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", 80);

                    geomCrossingFailuresBeforeOutofbounds = physicsconfig.GetInt("geom_crossing_failures_before_outofbounds", 4);

                    geomDefaultDensity    = physicsconfig.GetFloat("geometry_default_density", 10.000006836f);
                    bodyFramesAutoDisable = physicsconfig.GetInt("body_frames_auto_disable", 20);

                    bodyPIDD = physicsconfig.GetFloat("body_pid_derivative", 35f);
                    bodyPIDG = physicsconfig.GetFloat("body_pid_gain", 25f);

                    meshSculptedPrim      = physicsconfig.GetBoolean("mesh_sculpted_prim", true);
                    meshSculptLOD         = physicsconfig.GetFloat("mesh_lod", 32f);
                    MeshSculptphysicalLOD = physicsconfig.GetFloat("mesh_physical_lod", 16f);

                    if (Environment.OSVersion.Platform == PlatformID.Unix)
                    {
                        avPIDD          = physicsconfig.GetFloat("av_pid_derivative_linux", 65f);
                        avPIDP          = physicsconfig.GetFloat("av_pid_proportional_linux", 25);
                        avStandupTensor = physicsconfig.GetFloat("av_capsule_standup_tensor_linux", 2000000f);
                        bodyMotorJointMaxforceTensor = physicsconfig.GetFloat("body_motor_joint_maxforce_tensor_linux", 2f);
                    }
                    else
                    {
                        avPIDD          = physicsconfig.GetFloat("av_pid_derivative_win", 65f);
                        avPIDP          = physicsconfig.GetFloat("av_pid_proportional_win", 25);
                        avStandupTensor = physicsconfig.GetFloat("av_capsule_standup_tensor_win", 2000000f);
                        bodyMotorJointMaxforceTensor = physicsconfig.GetFloat("body_motor_joint_maxforce_tensor_win", 2f);
                    }

                    forceSimplePrimMeshing    = physicsconfig.GetBoolean("force_simple_prim_meshing", forceSimplePrimMeshing);
                    minimumGroundFlightOffset = physicsconfig.GetFloat("minimum_ground_flight_offset", 3f);
                    maximumMassObject         = physicsconfig.GetFloat("maximum_mass_object", 10000.01f);
                }
            }
            lock (BulletLock)
            {
                worldAabbMax             = new btVector3(m_region.RegionSizeX + 10f, m_region.RegionSizeY + 10f, m_region.RegionSizeZ);
                m_broadphase             = new btAxisSweep3(worldAabbMin, worldAabbMax, 16000);
                m_collisionConfiguration = new btDefaultCollisionConfiguration();
                m_solver     = new btSequentialImpulseConstraintSolver();
                m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
                m_world      = new btDiscreteDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration);
                m_world.setGravity(m_gravity);
                EnableCollisionInterface();
            }
        }
Beispiel #7
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(btConstraintSolver obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }