Contains the blended friction and bounciness of a pair of objects.
Ejemplo n.º 1
0
        static BaseModel()
        {
            CollisionGroup.DefineCollisionRule(kinematicGroup, machineGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(kinematicGroup, tubeGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(machineGroup, tubeGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(kinematicGroup, kinematicGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(machineGroup, machineGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(tubeGroup, tubeGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(noSolverGroupL, noSolverGroupB, CollisionRule.NoSolver);
            CollisionGroup.DefineCollisionRule(noSolverGroupL, tubeGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(noSolverGroupL, kinematicGroup, CollisionRule.NoBroadPhase);
            CollisionGroup.DefineCollisionRule(noSolverGroupL, machineGroup, CollisionRule.NoBroadPhase);

            MaterialManager.MaterialInteractions.Add(new MaterialPair { MaterialA = tubeMaterial, MaterialB = boxMaterial },
                                                     delegate(Material a, Material b, out InteractionProperties properties)
                                                     {
                                                         properties = new InteractionProperties
                                                             {
                                                                 StaticFriction = 0.62f,
                                                                 KineticFriction = 0.62f,
                                                                 Bounciness = 0
                                                             };
                                                     });
            MaterialManager.MaterialInteractions.Add(new MaterialPair { MaterialA = boxMaterial, MaterialB = machineMaterial },
                                                     delegate(Material a, Material b, out InteractionProperties properties)
                                                     {
                                                         properties = new InteractionProperties
                                                         {
                                                             StaticFriction = 0.001f,
                                                             KineticFriction = 0.001f,
                                                             Bounciness = 0
                                                         };
                                                     });
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Updates the material interaction properties of the pair handler's constraint.
 /// </summary>
 /// <param name="properties">Properties to use.</param>
 public override void UpdateMaterialProperties(InteractionProperties properties)
 {
     foreach (var pairHandler in subPairs.Values)
     {
         pairHandler.UpdateMaterialProperties(properties);
     }
 }
 /// <summary>
 /// Blender used to combine materials into a pair's interaction properties.
 /// </summary>
 /// <param name="a">Material associated with the first object to blend.</param>
 /// <param name="b">Material associated with the second object to blend.</param>
 /// <param name="properties">Blended material values.</param>
 public static void DefaultMaterialBlender(Material a, Material b, out InteractionProperties properties)
 {
     properties = new InteractionProperties
     {
         Bounciness = a.bounciness * b.bounciness,
         KineticFriction = a.kineticFriction * b.kineticFriction,
         StaticFriction = a.staticFriction * b.staticFriction
     };
 }
        ///<summary>
        /// Computes the interaction properties between two materials.
        ///</summary>
        ///<param name="materialA">First material of the pair.</param>
        ///<param name="materialB">Second material of the pair.</param>
        ///<param name="properties">Interaction properties between two materials.</param>
        public static void GetInteractionProperties(Material materialA, Material materialB, out InteractionProperties properties)
        {
            MaterialBlender specialBlender;
            if (MaterialInteractions.TryGetValue(new MaterialPair(materialA, materialB), out specialBlender))
                specialBlender(materialA, materialB, out properties);
            else
                MaterialBlender(materialA, materialB, out properties);

        }
Ejemplo n.º 5
0
        ///<summary>
        /// Computes the interaction properties between two materials.
        ///</summary>
        ///<param name="materialA">First material of the pair.</param>
        ///<param name="materialB">Second material of the pair.</param>
        ///<param name="properties">Interaction properties between two materials.</param>
        public static void GetInteractionProperties(Material materialA, Material materialB, out InteractionProperties properties)
        {
            if (MaterialInteractions.TryGetValue(new MaterialPair(materialA, materialB), out properties))
            {
                return;
            }
            properties = new InteractionProperties();
            properties.StaticFriction = FrictionBlender(materialA.staticFriction, materialB.staticFriction, null);
            properties.KineticFriction = FrictionBlender(materialA.kineticFriction, materialB.kineticFriction, null);
            properties.Bounciness = BouncinessBlender(materialA.bounciness, materialB.bounciness, null);

        }
Ejemplo n.º 6
0
 /// <summary>
 /// Updates the material interaction properties of the pair handler's constraint.
 /// </summary>
 /// <param name="properties">Properties to use.</param>
 public override void UpdateMaterialProperties(InteractionProperties properties)
 {
     ContactConstraint.MaterialInteraction = properties;
 }
        ///<summary>
        /// Forces an update of the pair's material properties.
        ///</summary>
        /// <param name="properties">Properties to use in the collision.</param>

        public abstract void UpdateMaterialProperties(InteractionProperties properties);