Beispiel #1
0
        // This is where all the default material attributes are defined.
        public static void InitializeFromDefaults(ConfigurationParameters parms)
        {
            // Values from http://wiki.secondlife.com/wiki/PRIM_MATERIAL
            float dDensity     = parms.defaultDensity;
            float dFriction    = parms.defaultFriction;
            float dRestitution = parms.defaultRestitution;

            Attributes[(int)MaterialAttributes.Material.Stone] =
                new MaterialAttributes("stone", dDensity, 0.8f, 0.4f);
            Attributes[(int)MaterialAttributes.Material.Metal] =
                new MaterialAttributes("metal", dDensity, 0.3f, 0.4f);
            Attributes[(int)MaterialAttributes.Material.Glass] =
                new MaterialAttributes("glass", dDensity, 0.2f, 0.7f);
            Attributes[(int)MaterialAttributes.Material.Wood] =
                new MaterialAttributes("wood", dDensity, 0.6f, 0.5f);
            Attributes[(int)MaterialAttributes.Material.Flesh] =
                new MaterialAttributes("flesh", dDensity, 0.9f, 0.3f);
            Attributes[(int)MaterialAttributes.Material.Plastic] =
                new MaterialAttributes("plastic", dDensity, 0.4f, 0.7f);
            Attributes[(int)MaterialAttributes.Material.Rubber] =
                new MaterialAttributes("rubber", dDensity, 0.9f, 0.9f);
            Attributes[(int)MaterialAttributes.Material.Light] =
                new MaterialAttributes("light", dDensity, dFriction, dRestitution);
            Attributes[(int)MaterialAttributes.Material.Avatar] =
                new MaterialAttributes("avatar", 3.5f, 0.2f, 0f);

            Attributes[(int)MaterialAttributes.Material.Stone + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("stonePhysical", dDensity, 0.8f, 0.4f);
            Attributes[(int)MaterialAttributes.Material.Metal + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("metalPhysical", dDensity, 0.3f, 0.4f);
            Attributes[(int)MaterialAttributes.Material.Glass + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("glassPhysical", dDensity, 0.2f, 0.7f);
            Attributes[(int)MaterialAttributes.Material.Wood + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("woodPhysical", dDensity, 0.6f, 0.5f);
            Attributes[(int)MaterialAttributes.Material.Flesh + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("fleshPhysical", dDensity, 0.9f, 0.3f);
            Attributes[(int)MaterialAttributes.Material.Plastic + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("plasticPhysical", dDensity, 0.4f, 0.7f);
            Attributes[(int)MaterialAttributes.Material.Rubber + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("rubberPhysical", dDensity, 0.9f, 0.9f);
            Attributes[(int)MaterialAttributes.Material.Light + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("lightPhysical", dDensity, dFriction, dRestitution);
            Attributes[(int)MaterialAttributes.Material.Avatar + (int)MaterialAttributes.Material.NumberOfTypes] =
                new MaterialAttributes("avatarPhysical", 3.5f, 0.2f, 0f);
        }
Beispiel #2
0
        // All default parameter values are set here. There should be no values set in the
        // variable definitions.
        private void GetInitialParameterValues(IConfigSource config)
        {
            ConfigurationParameters parms = new ConfigurationParameters();

            UnmanagedParams[0] = parms;

            BSParam.SetParameterDefaultValues(this);

            if (config != null)
            {
                // If there are specifications in the ini file, use those values
                IConfig pConfig = config.Configs["BulletSim"];
                if (pConfig != null)
                {
                    BSParam.SetParameterConfigurationValues(this, pConfig);

                    // There are two Bullet implementations to choose from
                    BulletEngineName = pConfig.GetString("BulletEngine", "BulletUnmanaged");

                    // Very detailed logging for physics debugging
                    // TODO: the boolean values can be moved to the normal parameter processing.
                    m_physicsLoggingEnabled      = pConfig.GetBoolean("PhysicsLoggingEnabled", false);
                    m_physicsLoggingDir          = pConfig.GetString("PhysicsLoggingDir", ".");
                    m_physicsLoggingPrefix       = pConfig.GetString("PhysicsLoggingPrefix", "physics-%REGIONNAME%-");
                    m_physicsLoggingFileMinutes  = pConfig.GetInt("PhysicsLoggingFileMinutes", 5);
                    m_physicsLoggingDoFlush      = pConfig.GetBoolean("PhysicsLoggingDoFlush", false);
                    m_physicsPhysicalDumpEnabled = pConfig.GetBoolean("PhysicsPhysicalDumpEnabled", false);
                    // Very detailed logging for vehicle debugging
                    VehicleLoggingEnabled         = pConfig.GetBoolean("VehicleLoggingEnabled", false);
                    VehiclePhysicalLoggingEnabled = pConfig.GetBoolean("VehiclePhysicalLoggingEnabled", false);

                    // Do any replacements in the parameters
                    m_physicsLoggingPrefix = m_physicsLoggingPrefix.Replace("%REGIONNAME%", RegionName);
                }

                // The material characteristics.
                BSMaterials.InitializeFromDefaults(Params);
                if (pConfig != null)
                {
                    // Let the user add new and interesting material property values.
                    BSMaterials.InitializefromParameters(pConfig);
                }
            }
        }
Beispiel #3
0
 // Initialization and simulation
 public abstract BulletWorld Initialize(Vector3 maxPosition, ConfigurationParameters parms,
                                        int maxCollisions, ref CollisionDesc[] collisionArray,
                                        int maxUpdates, ref EntityProperties[] updateArray
                                        );