Untitled
unknown
csharp
5 months ago
2.4 kB
3
Indexable
using UnityEngine; namespace Cleanup { internal class Program { private const double TargetChangeTime = 1; private double _previousTargetSetTime; private bool _isTargetSet; private dynamic _lockedCandidateTarget; private dynamic _lockedTarget; private dynamic _target; private dynamic _previousTarget; private dynamic _activeTarget; private dynamic _targetInRangeContainer; public void CleanupTest(Frame frame) { try { CheckAndResetLockedTargets(); TrySetActiveTargetFromQuantum(frame); bool isTargetAvailable = IsTargetAvailable(_target); bool isTargetChangeTimeComplete = IsTargetChangeTimeNotComplete(); _isTargetSet = isTargetAvailable && isTargetChangeTimeComplete; if (_isTargetSet == false) { _previousTarget = _target; if (TrySetTarget(_lockedTarget) == false && TrySetTarget(_activeTarget) == false) { _target = _targetInRangeContainer.GetTarget(); if (_target) { _isTargetSet = true; } } } } finally { if (_isTargetSet) { SetupPrevTargetSetTime(); } else { _target = null; } TargetableEntity.Selected = _target; } } private void CheckAndResetLockedTargets() { if (IsTargetAvailable(_lockedCandidateTarget) == false) { _lockedCandidateTarget = null; } if (IsTargetAvailable(_lockedCandidateTarget) == false) { _lockedTarget = null; } } private bool IsTargetChangeTimeNotComplete() { return Time.time - _previousTargetSetTime < TargetChangeTime; } private bool IsTargetAvailable(dynamic target) { return target != null && target.CanBeTarget; } private bool TrySetTarget(dynamic target) { bool isTargetAvailable = IsTargetAvailable(target); if (isTargetAvailable == false) { return false; } _target = target; _isTargetSet = true; return true; } private void SetupPrevTargetSetTime() { if (_previousTarget != _target) { _previousTargetSetTime = Time.time; } } } }
Editor is loading...
Leave a Comment