Jamie Greunbaum 8eaef49f2e - Added game room, including pool and skee-ball.
- Moved video screen into its own separate movie tent.
- Adjusted stable post-processing volume.
- Chickens are now at full volume.
- Added button to toggle chickens off and on.
2026-02-09 03:49:54 -05:00

51 lines
1.9 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
namespace VRCBilliardsCE.Packages.com.vrcbilliards.vrcbce.Runtime.Scripts
{
/// <summary>
/// A very sensible script that allows the cue ball play a sound effect if, whilst it's flying
/// off the table, it collides with a player at sufficient speed.
/// Consider customizing this script if you want to do interesting things with loose cue balls in your world!
/// </summary>
[UdonBehaviourSyncMode(BehaviourSyncMode.None), RequireComponent(typeof(SphereCollider)), RequireComponent(typeof(AudioSource))]
public class CueBallOffTableController : UdonSharpBehaviour
{
public AudioSource source;
public Rigidbody body;
public float requiredVelocity;
public int layerToCollideWithWhenOffTable;
private int originalLayer;
private PoolStateManager managerToCallback;
private bool _preventEndOfTurn;
public void _EnableDonking(PoolStateManager newManagerToCallBack, int durationSeconds)
{
if (_preventEndOfTurn)
return;
// allow it to hit players, collide with the environment, etc
originalLayer = gameObject.layer;
gameObject.layer = layerToCollideWithWhenOffTable;
managerToCallback = newManagerToCallBack;
_preventEndOfTurn = true;
SendCustomEventDelayedSeconds(nameof(_DisableDonking), durationSeconds);
}
public void _DisableDonking()
{
_preventEndOfTurn = false;
gameObject.layer = originalLayer;
managerToCallback._AllowEndOfTurn();
}
public override void OnPlayerCollisionEnter(VRCPlayerApi player)
{
if (source && body.velocity.magnitude > requiredVelocity)
source.Play();
}
}
}