Example #1
0
 public Material Duplicate(PhysX.Physics physics)
 {
     if (this.MaterialPreset != NO_PRESET)
     {
         return (Material)FindImpl((OpenMetaverse.Material)this.MaterialPreset);
     }
     else
     {
         PhysX.Material baseMaterial = physics.CreateMaterial(StaticFriction, DynamicFriction, Restitution);
         return new Material(baseMaterial, Density, GravityMultiplier);
     }
 }
Example #2
0
 public Material ToLocalMaterial(PhysX.Physics physics)
 {
     if (this.MaterialPreset != NO_PRESET)
     {
         return (Material)FindImpl((OpenMetaverse.Material)this.MaterialPreset);
     }
     else
     {
         _baseMaterial = physics.CreateMaterial(_serializedStaticFriction, _serializedDynamicFriction, _serializedRestitution);
         return this;
     }
 }
Example #3
0
 public Material(PhysX.Physics physics, float staticFriction, float dynamicFriction, float restitution, float density, float gravityMultiplier)
 {
     _baseMaterial = physics.CreateMaterial(staticFriction, dynamicFriction, restitution);
     Density = density;
     GravityMultiplier = gravityMultiplier;
 }
Example #4
0
 public Material(PhysX.Physics physics, float staticFriction, float dynamicFriction, float restitution, float density)
 {
     _baseMaterial = physics.CreateMaterial(staticFriction, dynamicFriction, restitution);
     Density = density;
     GravityMultiplier = GRAVITY_MULTIPLIER_DEFAULT;
 }
Example #5
0
        public static void BuiltinMaterialInit(PhysX.Physics physics)
        {
            // PhysX collision forces are very strong, so the ground restitution needs to be lowered significantly.
            GROUND = new Material(physics.CreateMaterial(0.4f, 0.35f, 0.05f), 1200.0f);
            GROUND.IsShared = true;
            // For navigable roads, people need a preset that acts mostly like ground.
            STONE = new Material(physics.CreateMaterial(0.5f, 0.35f, 0.05f), 2400.0f, (int)OpenMetaverse.Material.Stone);
            STONE.IsShared = true;
            METAL = new Material(physics.CreateMaterial(0.3f, 0.25f, 0.4f), 2700.0f, (int)OpenMetaverse.Material.Metal);
            METAL.IsShared = true;
            GLASS = new Material(physics.CreateMaterial(0.2f, 0.15f, 0.7f), 2500.0f, (int)OpenMetaverse.Material.Glass);
            GLASS.IsShared = true;
            WOOD = new Material(physics.CreateMaterial(0.6f, 0.55f, 0.5f), 1000.0f, (int)OpenMetaverse.Material.Wood);
            WOOD.IsShared = true;
            FLESH = new Material(physics.CreateMaterial(0.9f, 0.8f, 0.3f), 1400.0f, (int)OpenMetaverse.Material.Flesh);
            FLESH.IsShared = true;
            PLASTIC = new Material(physics.CreateMaterial(0.4f, 0.35f, 0.7f), 900.0f, (int)OpenMetaverse.Material.Plastic);
            PLASTIC.IsShared = true;
            RUBBER = new Material(physics.CreateMaterial(0.9f, 0.87f, 0.9f), 1100.0f, (int)OpenMetaverse.Material.Rubber);
            RUBBER.IsShared = true;

            MaterialsByOMVEnum = new Material[]
            {
                STONE,  //0...
                METAL,
                GLASS,
                WOOD,
                FLESH,
                PLASTIC,
                RUBBER,
                WOOD    //light.. which makes no sense is remapped to wood
            };
        }