Untitled
unknown
csharp
a year ago
2.4 kB
6
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