/// <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(PhysicsMaterial a, PhysicsMaterial 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(PhysicsMaterial materialA, PhysicsMaterial materialB, out InteractionProperties properties) { PhysicsMaterialBlender specialBlender; if (MaterialInteractions.TryGetValue(new PhysicsMaterialPair(materialA, materialB), out specialBlender)) { specialBlender(materialA, materialB, out properties); } else { MaterialBlender(materialA, materialB, out properties); } }
///<summary> /// Constructs a new material pair. ///</summary> ///<param name="a">First material in the pair.</param> ///<param name="b">Second material in the pair.</param> public PhysicsMaterialPair(PhysicsMaterial a, PhysicsMaterial b) { MaterialA = a; MaterialB = b; }