From 1680c3b9accdbc982dd09462cbfd75070217c098 Mon Sep 17 00:00:00 2001 From: freezy Date: Wed, 29 Jan 2025 00:49:23 +0100 Subject: [PATCH] style: Put physics material into blocks. --- .../VisualPinball.Unity/VPT/Bumper/BumperApi.cs | 6 +++--- .../VPT/Bumper/BumperColliderComponent.cs | 8 ++++++-- .../VPT/Flipper/FlipperColliderComponent.cs | 4 ++++ .../VPT/Gate/GateColliderComponent.cs | 16 ++++++++++------ .../VPT/HitTarget/DropTargetColliderComponent.cs | 4 ++++ .../VPT/HitTarget/HitTargetColliderComponent.cs | 4 ++++ .../VPT/Kicker/KickerColliderComponent.cs | 12 ++++++++---- .../MetalWireGuideColliderComponent.cs | 4 ++++ .../VPT/Playfield/PlayfieldColliderComponent.cs | 6 +++++- .../VPT/Plunger/PlungerColliderComponent.cs | 4 ++++ .../VPT/Primitive/PrimitiveColliderComponent.cs | 4 ++++ .../VPT/Ramp/RampColliderComponent.cs | 4 ++++ .../VPT/Rubber/RubberColliderComponent.cs | 4 ++++ .../VPT/Spinner/SpinnerColliderComponent.cs | 4 ++++ .../VPT/Surface/SurfaceColliderComponent.cs | 4 ++++ .../VPT/Trigger/TriggerColliderComponent.cs | 4 ++++ 16 files changed, 76 insertions(+), 16 deletions(-) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperApi.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Bumper/BumperApi.cs index 488d5e00de..fb49583309 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 22d7fb8c61..8699e2216d 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 d5dbde862d..f49bfed860 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 0f845ada4e..2e2b72409a 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 98b490cd66..88c44eddb5 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 19a133e481..6aafb9a230 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 ace0bb2284..644f7e8884 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 3642b988e9..b696eac349 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 eae77f72e7..0e09e32474 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 dbfac882f2..deb14a0552 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 45b60a2dde..8faf23531a 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 a79c8b8803..cded13108a 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 8d0980dcfa..4d474bdc3e 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 7207337531..c0d22127d0 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 a5389456e5..eefb5c9835 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 1cf2687378..5b4413a169 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); }