TeamBlocker.cs
using Sandbox;
using System;
public sealed class TeamBlocker : Component, Component.ITriggerListener
{
[Property]
public ButtonMasherPlayerController.TeamType AllowedTeam { get; set; } = ButtonMasherPlayerController.TeamType.Player2;
[Property]
public BoxCollider SolidCollider { get; set; }
private int _allowedPlayersInside;
protected override void OnStart()
{
if ( SolidCollider != null )
SolidCollider.Enabled = true;
}
public void OnTriggerEnter( Collider other )
{
var player = other.GameObject.Components.Get<ButtonMasherPlayerController>( FindMode.EverythingInSelfAndAncestors );
if ( player == null )
return;
if ( player.Team == AllowedTeam )
{
_allowedPlayersInside++;
if ( SolidCollider != null )
SolidCollider.Enabled = false;
}
}
public void OnTriggerExit( Collider other )
{
var player = other.GameObject.Components.Get<ButtonMasherPlayerController>( FindMode.EverythingInSelfAndAncestors );
if ( player == null )
return;
if ( player.Team == AllowedTeam )
{
_allowedPlayersInside = Math.Max( 0, _allowedPlayersInside - 1 );
if ( _allowedPlayersInside == 0 && SolidCollider != null )
SolidCollider.Enabled = true;
}
}
}