public void OnGameplayStarted() { Ball.onBallEnteredTrigger += handleTriggerEnter; Ball.onBallExitedTrigger += handleTriggerExit; multipliers = Object.FindObjectsOfType <Multiplier>(); locks = Object.FindObjectsOfType <Lock>(); windZones = Object.FindObjectsOfType <LocalWindZone>(); portals = Object.FindObjectsOfType <Portal>(); key = Object.FindObjectOfType <Key>(); foreach (var multiplier in multipliers) { ballSystem.AddBallSpawner(multiplier); } foreach (var @lock in locks) { ballSystem.AddBallSpawner(@lock); ballSystem.AddBallDestroyer(@lock); } onTriggerEnterChain = new OnTriggerEnterHandler(multipliers, new OnTriggerEnterHandler(locks, new OnTriggerEnterHandler(windZones, new OnTriggerEnterHandler(portals, null)))); onTriggerExitChain = new OnTriggerExitHandler(windZones, null); }
public GameInteractionsSystem(BallSystem ballSystem, KeysSystem keysSystem, StageSystem stageSystem) { this.ballSystem = ballSystem; stageSystem.AddFinishTrigger(this); ballSystem.AddBallDestroyer(this); keysSystem.AddKeyCollector(this); var gamezone = Object.FindObjectOfType <GameZone>(); finishCollider = gamezone.FinishTrigger; destroyCollider = gamezone.DestroyTrigger; handleTriggerEnter += (ball, trigger) => { bool isMainTrigger = TestMainTriggers(ball, trigger); if (!isMainTrigger) { onTriggerEnterChain.Handle(ball, trigger); } }; handleTriggerExit += (ball, trigger) => { onTriggerExitChain.Handle(ball, trigger); }; }