private static void UpdateSkirt(ref BumperSkirtAnimationData data) { const float skirtTilt = 5.0f; var hitX = data.BallPosition.x; var hitY = data.BallPosition.y; var dy = math.abs(hitY - data.Center.y); if (dy == 0.0f) { dy = 0.000001f; } var dx = math.abs(hitX - data.Center.x); var skirtA = math.atan(dx / dy); data.Rotation.x = math.cos(skirtA) * skirtTilt; data.Rotation.y = math.sin(skirtA) * skirtTilt; if (data.Center.y < hitY) { data.Rotation.x = -data.Rotation.x; } if (data.Center.x > hitX) { data.Rotation.y = -data.Rotation.y; } }
private static void ResetSkirt(ref BumperSkirtAnimationData data) { data.Rotation = new float2(0, 0); }
public static void Collide(ref BallData ball, ref NativeQueue <EventData> .ParallelWriter events, ref CollisionEventData collEvent, ref BumperRingAnimationData ringData, ref BumperSkirtAnimationData skirtData, in Collider collider, in BumperStaticData data, ref Random random)