diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperApi.cs index 488d5e00d..fb4958330 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperApi.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperApi.cs @@ -96,9 +96,9 @@ void IApiCoil.OnCoil(bool enabled) IsKinematic = false, BallId = ballId }; - var physicsMaterialData = ColliderComponent.PhysicsMaterialData; - var random = PhysicsEngine.Random; - BallCollider.Collide3DWall(ref ballState, in physicsMaterialData, in collEvent, in bumpDirection, ref random); + //var physicsMaterialData = ColliderComponent.PhysicsMaterialData; + //var random = PhysicsEngine.; + //BallCollider.Collide3DWall(ref ballState, in physicsMaterialData, in collEvent, in bumpDirection, ref state); ballState.Velocity += bumpDirection * ColliderComponent.Force; } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperColliderComponent.cs index 22d7fb8c6..8699e2216 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperColliderComponent.cs @@ -44,13 +44,17 @@ public class BumperColliderComponent : ColliderComponent MainComponent.BumperApi ?? new BumperApi(gameObject, player, physicsEngine); + #region Physics Material protected override float PhysicsElasticity => 1; protected override float PhysicsElasticityFalloff => 1; protected override float PhysicsFriction => 0; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => true; + + #endregion + + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) + => MainComponent.BumperApi ?? new BumperApi(gameObject, player, physicsEngine); } } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperColliderComponent.cs index d5dbde862..f49bfed86 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperColliderComponent.cs @@ -76,12 +76,16 @@ public class FlipperColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => true; + #endregion + #region FlipperTricks /// /// If set, apply Flipper Tricks Physics (nFozzy/RothBauerW) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateColliderComponent.cs index 0f845ada4..2e2b72409 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Gate/GateColliderComponent.cs @@ -64,6 +64,16 @@ public class GateColliderComponent : ColliderComponent, #endregion + #region Physics Material + + protected override float PhysicsElasticity => Elasticity; + protected override float PhysicsElasticityFalloff => 1; + protected override float PhysicsFriction => Friction; + protected override float PhysicsScatter => 0; + protected override bool PhysicsOverwrite => true; + + #endregion + #region IGateColliderData public float AngleMin { get => _angleMin; set => _angleMin = value; } @@ -73,12 +83,6 @@ public class GateColliderComponent : ColliderComponent, #endregion - protected override float PhysicsElasticity => Elasticity; - protected override float PhysicsElasticityFalloff => 1; - protected override float PhysicsFriction => Friction; - protected override float PhysicsScatter => 0; - protected override bool PhysicsOverwrite => true; - protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.GateApi ?? new GateApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/DropTargetColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/DropTargetColliderComponent.cs index 98b490cd6..88c44eddb 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/DropTargetColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/DropTargetColliderComponent.cs @@ -59,12 +59,16 @@ public class DropTargetColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => (MainComponent as DropTargetComponent)?.DropTargetApi ?? new DropTargetApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetColliderComponent.cs index 19a133e48..6aafb9a23 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/HitTarget/HitTargetColliderComponent.cs @@ -56,12 +56,16 @@ public class HitTargetColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => (MainComponent as HitTargetComponent)?.HitTargetApi ?? new HitTargetApi(gameObject, player, physicsEngine); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerColliderComponent.cs index ace0bb228..644f7e888 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Kicker/KickerColliderComponent.cs @@ -49,10 +49,7 @@ public class KickerColliderComponent : ColliderComponent(); - } + #region Physics Material protected override float PhysicsElasticity => 1; protected override float PhysicsElasticityFalloff => 1; @@ -60,6 +57,13 @@ private void Awake() protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => true; + #endregion + + private void Awake() + { + PhysicsEngine = GetComponentInParent(); + } + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.KickerApi ?? new KickerApi(gameObject, player, physicsEngine); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/MetalWireGuide/MetalWireGuideColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/MetalWireGuide/MetalWireGuideColliderComponent.cs index 3642b988e..b696eac34 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/MetalWireGuide/MetalWireGuideColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/MetalWireGuide/MetalWireGuideColliderComponent.cs @@ -53,12 +53,16 @@ public class MetalWireGuideColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.MetalWireGuideApi ?? new MetalWireGuideApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldColliderComponent.cs index eae77f72e..0e09e3247 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Playfield/PlayfieldColliderComponent.cs @@ -52,7 +52,7 @@ public class PlayfieldColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; @@ -60,6 +60,10 @@ public class PlayfieldColliderComponent : ColliderComponent Scatter; protected override bool PhysicsOverwrite => true; + #endregion + + [NonSerialized] public bool ShowAllColliderMeshes = false; + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.PlayfieldApi ?? new PlayfieldApi(gameObject, player, physicsEngine); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerColliderComponent.cs index dbfac882f..deb14a055 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Plunger/PlungerColliderComponent.cs @@ -54,12 +54,16 @@ public class PlungerColliderComponent : ColliderComponent 1; protected override float PhysicsElasticityFalloff => 1; protected override float PhysicsFriction => 0; protected override float PhysicsScatter => 0; protected override bool PhysicsOverwrite => true; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.PlungerApi ?? new PlungerApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveColliderComponent.cs index 45b60a2dd..8faf23531 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Primitive/PrimitiveColliderComponent.cs @@ -59,12 +59,16 @@ public class PrimitiveColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) =>MainComponent.PrimitiveApi ?? new PrimitiveApi(gameObject, player, physicsEngine); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampColliderComponent.cs index a79c8b880..cded13108 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Ramp/RampColliderComponent.cs @@ -59,12 +59,16 @@ public class RampColliderComponent : ColliderComponent #endregion + #region Physics Material + protected override float PhysicsElasticity => Elasticity; protected override float PhysicsElasticityFalloff => 1; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.RampApi ?? new RampApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberColliderComponent.cs index 8d0980dcf..4d474bdc3 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Rubber/RubberColliderComponent.cs @@ -54,12 +54,16 @@ public class RubberColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.RubberApi ?? new RubberApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerColliderComponent.cs index 720733753..c0d22127d 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Spinner/SpinnerColliderComponent.cs @@ -36,12 +36,16 @@ public class SpinnerColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => 1; protected override float PhysicsFriction => 0; protected override float PhysicsScatter => 0; protected override bool PhysicsOverwrite => true; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.SpinnerApi ?? new SpinnerApi(gameObject, player, physicsEngine); diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceColliderComponent.cs index a5389456e..eefb5c983 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Surface/SurfaceColliderComponent.cs @@ -66,12 +66,16 @@ public class SurfaceColliderComponent : ColliderComponent Elasticity; protected override float PhysicsElasticityFalloff => ElasticityFalloff; protected override float PhysicsFriction => Friction; protected override float PhysicsScatter => Scatter; protected override bool PhysicsOverwrite => OverwritePhysics; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.SurfaceApi ?? new SurfaceApi(gameObject, player, physicsEngine); } diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerColliderComponent.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerColliderComponent.cs index 1cf268737..5b4413a16 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerColliderComponent.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Trigger/TriggerColliderComponent.cs @@ -50,12 +50,16 @@ public class TriggerColliderComponent : ColliderComponent 1; protected override float PhysicsElasticityFalloff => 1; protected override float PhysicsFriction => 0; protected override float PhysicsScatter => 0; protected override bool PhysicsOverwrite => true; + #endregion + protected override IApiColliderGenerator InstantiateColliderApi(Player player, PhysicsEngine physicsEngine) => MainComponent.TriggerApi ?? new TriggerApi(gameObject, player, physicsEngine); }