Files

848 lines
24 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine.Events;
public class scannerSystem : MonoBehaviour
{
[Header ("Main Setting")]
[Space]
public bool scannerSystemEnabled;
public bool infiniteScanDistance;
public float scanDistance;
public bool scanDistanceAffectedByZoom;
public float scanDistanceExtraWithZoom;
public LayerMask layer;
public bool ignoreChangeToFirstPersonEnabled;
public bool removeLocatedObjectIfDisabledOnScene = true;
[Space]
[Header ("Camera Settings")]
[Space]
public float initialCameraFov;
public float zoomCameraFov;
public float fovChangeSpeed;
public float scanSpeed;
public float scaneIconMovementSpeed;
public bool useMaxDistanceToCameraCenter;
public float maxDistanceToCameraCenter;
public bool useAutoScanner;
[Space]
[Header ("Scanner Messages Settings Settings")]
[Space]
public string scanCompleteString = "SCAN COMPLETED";
public string scanVisorActiveString = "SCAN VISOR ACTIVE";
public string scanningString = "SCANNING...";
public string emptyScannerInfoString = "...";
[Space]
[Header ("Other Settings")]
[Space]
public bool useWeakSpotScanner;
public string scannerAnimationName = "scannerTarget";
[Space]
[Header ("Debug")]
[Space]
public bool holdScannerInputActive;
public GameObject scannedObject;
[Space]
[Header ("Event Settings")]
[Space]
public UnityEvent eventOnScannerEnabled;
public UnityEvent eventOnScannerDisabled;
[Space]
[Header ("Scanner Components")]
[Space]
public GameObject scannerHUD;
public GameObject scanIcon;
public RectTransform scanIconRect;
public Animation iconAnimation;
public RectTransform iconRectTransform;
public GameObject scannerCamera;
public GameObject scannerCameraUI;
public Slider slider;
public Text objectName;
public Text objectInfo;
public Text scanStatus;
public Transform healthInfoParent;
public GameObject healthElement;
public Text objectScannedHealthNameText;
public Text objectScannedHealthAmountText;
public Camera scannerMainCamera;
public playerCamera mainPlayerCamera;
public playerController playerControllerManager;
public Transform mainCameraTransform;
public Camera mainCamera;
bool zoomActive;
bool scannerModeIsActivated;
bool isFirstPersonView;
float originalScannerCameraFov;
float targetScannerCameraFov;
bool lookingObject;
RaycastHit hit;
scanElementInfo currentObjectToScan;
List<healthElementInfo> healtWeakSpotList = new List<healthElementInfo> ();
health currentScannedObjectHealth;
vehicleHUDManager currentScannedVehicle;
GameObject currentGameObjectInScanner;
float distanceToScan;
float originalScanDistance;
Coroutine changeFovCoroutine;
Vector2 mainCanvasSizeDelta;
Vector2 halfMainCanvasSizeDelta;
Vector2 iconPosition2d;
bool usingScreenSpaceCamera;
bool targetOnScreen;
Vector3 screenPoint;
float currentDistanceToTarget;
Vector3 centerScreen;
float screenWidth;
float screenHeight;
bool objectToScanLocated;
void Start ()
{
//get the field of view of the camera
originalScannerCameraFov = scannerMainCamera.fieldOfView;
if (infiniteScanDistance) {
distanceToScan = Mathf.Infinity;
} else {
distanceToScan = scanDistance;
}
originalScanDistance = distanceToScan;
enableOrDisableScannerCameraComponents (false);
mainCanvasSizeDelta = mainPlayerCamera.getMainCanvasSizeDelta ();
halfMainCanvasSizeDelta = mainCanvasSizeDelta * 0.5f;
usingScreenSpaceCamera = mainPlayerCamera.isUsingScreenSpaceCamera ();
if (mainCamera == null) {
mainCamera = mainPlayerCamera.getMainCamera ();
}
}
void FixedUpdate ()
{
if (holdScannerInputActive) {
executeScanner ();
}
if (scannerModeIsActivated) {
screenWidth = Screen.width;
screenHeight = Screen.height;
}
//if there is a scanned object, make the scan icon follow this object in the screen
if (objectToScanLocated && scannedObject != null) {
if (usingScreenSpaceCamera) {
screenPoint = mainCamera.WorldToViewportPoint (scannedObject.transform.position);
targetOnScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
} else {
screenPoint = mainCamera.WorldToScreenPoint (scannedObject.transform.position);
targetOnScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < screenWidth && screenPoint.y > 0 && screenPoint.y < screenHeight;
}
centerScreen = new Vector3 (screenWidth / 2, screenHeight / 2, 0);
if (useMaxDistanceToCameraCenter) {
currentDistanceToTarget = GKC_Utils.distance (screenPoint, centerScreen);
if (currentDistanceToTarget > maxDistanceToCameraCenter) {
targetOnScreen = false;
}
}
//if the target is visible in the screnn, set the icon position
if (targetOnScreen) {
if (usingScreenSpaceCamera) {
iconPosition2d = new Vector2 ((screenPoint.x * mainCanvasSizeDelta.x) - halfMainCanvasSizeDelta.x, (screenPoint.y * mainCanvasSizeDelta.y) - halfMainCanvasSizeDelta.y);
iconRectTransform.anchoredPosition = Vector2.MoveTowards (iconRectTransform.anchoredPosition, iconPosition2d, Time.deltaTime * scaneIconMovementSpeed);
} else {
scanIcon.transform.position = Vector3.MoveTowards (scanIcon.transform.position, screenPoint, Time.deltaTime * scaneIconMovementSpeed);
}
if (!scanIcon.activeSelf) {
//play the scan icon animation to signal the scannable object
scanIcon.SetActive (true);
iconAnimation [scannerAnimationName].speed = -1;
iconAnimation [scannerAnimationName].time = iconAnimation [scannerAnimationName].length;
iconAnimation.Play (scannerAnimationName);
}
if (useAutoScanner) {
executeScanner ();
}
}
//if the object is off screen, disable the scan icon in the screen
else {
scanIconRect.anchoredPosition = Vector2.zero;
if (scanIcon.activeSelf) {
scanIcon.SetActive (false);
}
reset ();
}
if (removeLocatedObjectIfDisabledOnScene) {
if (!scannedObject.activeSelf || !scannedObject.activeInHierarchy) {
holdScannerInputActive = false;
activateScanner ();
return;
}
}
} else {
objectToScanLocated = false;
}
if (useWeakSpotScanner) {
if (currentScannedObjectHealth != null) {
for (int i = 0; i < healtWeakSpotList.Count; i++) {
if (healtWeakSpotList [i].used) {
if (usingScreenSpaceCamera) {
screenPoint = mainCamera.WorldToViewportPoint (healtWeakSpotList [i].target.position);
targetOnScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
} else {
screenPoint = mainCamera.WorldToScreenPoint (healtWeakSpotList [i].target.position);
targetOnScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < screenWidth && screenPoint.y > 0 && screenPoint.y < screenHeight;
}
//if the target is visible in the screnn, set the icon position
if (targetOnScreen) {
if (!healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (true);
}
if (usingScreenSpaceCamera) {
iconPosition2d = new Vector2 ((screenPoint.x * mainCanvasSizeDelta.x) - halfMainCanvasSizeDelta.x, (screenPoint.y * mainCanvasSizeDelta.y) - halfMainCanvasSizeDelta.y);
healtWeakSpotList [i].healthElementRectTransform.anchoredPosition = iconPosition2d;
} else {
healtWeakSpotList [i].healthElementGameObject.transform.position = new Vector3 (screenPoint.x, screenPoint.y, 0);
}
} else {
if (healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (false);
}
}
}
}
}
if (currentScannedVehicle != null) {
for (int i = 0; i < healtWeakSpotList.Count; i++) {
if (healtWeakSpotList [i].used) {
if (usingScreenSpaceCamera) {
screenPoint = mainCamera.WorldToViewportPoint (healtWeakSpotList [i].target.position);
targetOnScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
} else {
screenPoint = mainCamera.WorldToScreenPoint (healtWeakSpotList [i].target.position);
targetOnScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < screenWidth && screenPoint.y > 0 && screenPoint.y < screenHeight;
}
//if the target is visible in the screnn, set the icon position
if (targetOnScreen) {
if (!healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (true);
}
if (usingScreenSpaceCamera) {
iconPosition2d = new Vector2 ((screenPoint.x * mainCanvasSizeDelta.x) - halfMainCanvasSizeDelta.x, (screenPoint.y * mainCanvasSizeDelta.y) - halfMainCanvasSizeDelta.y);
healtWeakSpotList [i].healthElementRectTransform.anchoredPosition = iconPosition2d;
} else {
healtWeakSpotList [i].healthElementGameObject.transform.position = new Vector3 (screenPoint.x, screenPoint.y, 0);
}
} else {
if (healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (false);
}
}
}
}
}
}
//if the scan mode is enabled, launch a ray from the center of the screen in forward direction, searching a scannable object
if (scannerModeIsActivated) {
Debug.DrawRay (mainCameraTransform.position, mainCameraTransform.forward * distanceToScan, Color.red);
if (Physics.Raycast (mainCameraTransform.position, mainCameraTransform.forward, out hit, distanceToScan, layer)) {
//scannble object detected
if (hit.collider.GetComponent<scanElementInfo> ()) {
//if it the first scannable object found, set as scannedObject
if (scannedObject == null) {
scannedObject = hit.collider.gameObject;
objectToScanLocated = true;
setScannedObjectInfo ();
}
//if there was already another scannable object different from the current found, change it
else if (scannedObject != hit.collider.gameObject) {
scannedObject = hit.collider.gameObject;
objectToScanLocated = true;
setScannedObjectInfo ();
reset ();
}
lookingObject = true;
}
//nothing found
else {
lookingObject = false;
}
}
}
}
public bool playerIsBusy ()
{
if (!playerControllerManager.isUsingDevice () && !playerControllerManager.isUsingSubMenu () && !playerControllerManager.isPlayerMenuActive ()) {
return false;
}
return true;
}
public void activateScanner ()
{
//activate the scanner mode
enableScanner ();
//if the key button is released, reset the info of the scanner
if (scannedObject != null) {
if (slider.value >= slider.maxValue || slider.value != slider.maxValue) {
reset ();
}
}
}
public void executeScanner ()
{
//if there is a scannedObject detected
if (scannedObject != null) {
//check if the info of the object has been already scanned
if (!currentObjectToScan.isScanned ()) {
//in that case, scan the object
scanStatus.text = scanningString;
//while the key is held, increase the slider value
if (currentObjectToScan.useCustomScanSpeed) {
slider.value += Time.deltaTime * currentObjectToScan.customScanSpeed;
} else {
slider.value += Time.deltaTime * scanSpeed;
}
//when the slider reachs its max value
if (slider.value == slider.maxValue) {
//set the object to already scanned
currentObjectToScan.scanObject ();
//get the info of the object
objectChecked ();
}
}
//if the object has been already scanned
else {
//get the info of the object
objectChecked ();
}
}
}
public void setScannedObjectInfo ()
{
currentObjectToScan = scannedObject.GetComponent<scanElementInfo> ();
currentGameObjectInScanner = currentObjectToScan.dataGameObject;
if (useWeakSpotScanner) {
if (currentGameObjectInScanner != null) {
currentScannedObjectHealth = currentGameObjectInScanner.GetComponent<health> ();
if (currentScannedObjectHealth == null) {
characterDamageReceiver currentCharacterDamageReceiver = GetComponent<characterDamageReceiver> ();
if (currentCharacterDamageReceiver != null) {
currentScannedObjectHealth = currentCharacterDamageReceiver.getHealthManager ();
}
}
if (currentScannedObjectHealth != null) {
if (currentScannedObjectHealth.advancedSettings.weakSpots.Count > 0) {
addHealthWeakSpotList ();
return;
}
}
currentScannedVehicle = currentGameObjectInScanner.GetComponent<vehicleHUDManager> ();
if (currentScannedVehicle == null) {
vehicleDamageReceiver currentVehicleDamageReceiver = currentGameObjectInScanner.GetComponent<vehicleDamageReceiver> ();
currentScannedVehicle = currentVehicleDamageReceiver.getHUDManager ();
}
if (currentScannedVehicle != null) {
if (currentScannedVehicle.advancedSettings.damageReceiverList.Count > 0) {
addHealthWeakSpotList ();
}
}
}
}
}
//get the info from the scannable object, name and description
void objectChecked ()
{
slider.value = slider.maxValue;
objectInfo.text = currentObjectToScan.dataObject.info;
objectName.text = currentObjectToScan.dataObject.name;
scanStatus.text = scanCompleteString;
}
//reset the info of the scanner
void reset ()
{
slider.value = 0;
scanStatus.text = scanVisorActiveString;
objectInfo.text = emptyScannerInfoString;
objectName.text = "";
scannedObject = null;
currentObjectToScan = null;
currentGameObjectInScanner = null;
currentScannedObjectHealth = null;
currentScannedVehicle = null;
if (useWeakSpotScanner) {
disableHealtWeakSpotList ();
}
objectToScanLocated = false;
}
//enable of disable the scanner according to the situation
public void enableScanner ()
{
//if the player is not in aim mode, or the scanner mode is not already enabled, or using a device and the scanner mode is active in the feature manager
if (!playerControllerManager.isPlayerAimingInThirdPerson () && !lookingObject && !playerControllerManager.isUsingDevice () && scannerSystemEnabled
&& mainPlayerCamera.isCameraTypeFree ()) {
//change its state
scannerModeIsActivated = !scannerModeIsActivated;
checkEventsOnEnableDisableScanner ();
//if the scanner mode is enabled, check if the player is in first person mode
if (scannerModeIsActivated) {
isFirstPersonView = mainPlayerCamera.isFirstPersonActive ();
}
//if the player is not in first person mode, change it to that view
if (!isFirstPersonView) {
if (!ignoreChangeToFirstPersonEnabled) {
mainPlayerCamera.changeCameraView ();
}
}
reset ();
if (scanIcon.activeSelf) {
scanIcon.SetActive (false);
}
checkScannerCameraFov ();
}
}
//disable the scanner from other script
public void disableScanner ()
{
scannerModeIsActivated = false;
reset ();
if (scanIcon.activeSelf) {
scanIcon.SetActive (false);
}
checkScannerCameraFov ();
checkEventsOnEnableDisableScanner ();
holdScannerInputActive = false;
}
public void checkEventsOnEnableDisableScanner ()
{
if (scannerModeIsActivated) {
eventOnScannerEnabled.Invoke ();
} else {
eventOnScannerDisabled.Invoke ();
}
}
public void checkScannerCameraFov ()
{
//check if the player set the zoom mode, so if the scanned mode is enabled or disabled the camera fov is correctly changed
if (zoomActive) {
//change the fov of the scanner camera
if (scannerModeIsActivated) {
enableOrDisableScannerZoom (true);
//the scanner mode is enabled when the zoom was enabled
} else {
enableOrDisableScannerZoom (false);
//the scanner mode is disabled when the zoom was enabled
}
} else {
if (scannerModeIsActivated) {
targetScannerCameraFov = initialCameraFov;
} else {
targetScannerCameraFov = originalScannerCameraFov;
}
checkFovCoroutine (targetScannerCameraFov);
}
}
//change the zoom in the scanner camera if the player use the zoom
public void enableOrDisableScannerZoom (bool value)
{
zoomActive = value;
//decrease the fov
if (zoomActive) {
//zoom enabled
targetScannerCameraFov = zoomCameraFov;
} else {
//increase the fov
if (scannerModeIsActivated) {
targetScannerCameraFov = initialCameraFov;
//zoom disabled when the scanner mode was enabled
} else {
targetScannerCameraFov = originalScannerCameraFov;
//zoom disable when the scanner mode was disabled
}
}
if (!zoomActive && mainPlayerCamera.isUsingZoom ()) {
zoomActive = true;
targetScannerCameraFov = mainCamera.fieldOfView;
}
checkScanDistance (value);
checkFovCoroutine (targetScannerCameraFov);
}
public void checkScanDistance (bool value)
{
if (scanDistanceAffectedByZoom) {
if (value) {
distanceToScan += scanDistanceExtraWithZoom;
} else {
distanceToScan = originalScanDistance;
}
}
}
public bool isScannerActivated ()
{
return scannerModeIsActivated;
}
public void checkFovCoroutine (float targetValue)
{
if (changeFovCoroutine != null) {
StopCoroutine (changeFovCoroutine);
}
changeFovCoroutine = StartCoroutine (changeFovValue (targetValue));
}
public IEnumerator changeFovValue (float targetValue)
{
if (scannerModeIsActivated) {
enableOrDisableScannerCameraComponents (true);
}
//if the small screen in the center is enabled, change the fov to the scanner mode, checking also if the player use the zoom mode
while (scannerMainCamera.fieldOfView != targetValue) {
scannerMainCamera.fieldOfView = Mathf.MoveTowards (scannerMainCamera.fieldOfView, targetValue, Time.deltaTime * fovChangeSpeed);
yield return null;
}
if (!scannerModeIsActivated) {
enableOrDisableScannerCameraComponents (false);
}
}
public void enableOrDisableScannerCameraComponents (bool state)
{
enableOrDisableScannerCamera (state);
if (scannerCameraUI.activeSelf != state) {
scannerCameraUI.SetActive (state);
}
if (scannerHUD.activeSelf != state) {
scannerHUD.SetActive (state);
}
}
public void enableOrDisableScannerCamera (bool state)
{
if (pauseEnableOrDisableScannerCameraElement) {
return;
}
if (scannerMainCamera.enabled != state) {
scannerMainCamera.enabled = state;
}
}
public void toggleScannerCameraElement ()
{
enableOrDisableScannerCamera (!scannerMainCamera.enabled);
}
bool pauseEnableOrDisableScannerCameraElement;
public void setPauseEnableOrDisableScannerCameraElementState (bool state)
{
pauseEnableOrDisableScannerCameraElement = state;
}
public void togglePauseEnableOrDisableScannerCameraElementState ()
{
setPauseEnableOrDisableScannerCameraElementState (!pauseEnableOrDisableScannerCameraElement);
}
public void addHealthWeakSpotList ()
{
if (!healthInfoParent.gameObject.activeSelf) {
healthInfoParent.gameObject.SetActive (true);
}
if (currentScannedObjectHealth != null) {
int weakSpotsAmount = currentScannedObjectHealth.advancedSettings.weakSpots.Count;
for (int i = 0; i < weakSpotsAmount; i++) {
if (i < healtWeakSpotList.Count) {
healtWeakSpotList [i].target = currentScannedObjectHealth.advancedSettings.weakSpots [i].spotTransform;
string spotText = "x" + currentScannedObjectHealth.advancedSettings.weakSpots [i].damageMultiplier;
if (currentScannedObjectHealth.advancedSettings.weakSpots [i].killedWithOneShoot) {
spotText = "Death";
}
healtWeakSpotList [i].healthSpot.text = spotText;
healtWeakSpotList [i].used = true;
} else {
GameObject newWeakSpotMesh = (GameObject)Instantiate (healthElement, healthElement.transform.position, Quaternion.identity);
newWeakSpotMesh.transform.SetParent (healthInfoParent);
newWeakSpotMesh.transform.localScale = Vector3.one;
newWeakSpotMesh.transform.localPosition = Vector3.zero;
healthElementInfo newHealthElementInfo = newWeakSpotMesh.GetComponent<weakSpotInfo> ().elementInfo;
newHealthElementInfo.target = currentScannedObjectHealth.advancedSettings.weakSpots [i].spotTransform;
string spotText = "x" + currentScannedObjectHealth.advancedSettings.weakSpots [i].damageMultiplier;
if (currentScannedObjectHealth.advancedSettings.weakSpots [i].killedWithOneShoot) {
spotText = "Death";
}
newHealthElementInfo.healthSpot.text = spotText;
newHealthElementInfo.used = true;
healtWeakSpotList.Add (newHealthElementInfo);
}
}
if (weakSpotsAmount < healtWeakSpotList.Count) {
for (int i = weakSpotsAmount; i < healtWeakSpotList.Count; i++) {
if (healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (false);
}
healtWeakSpotList [i].used = false;
}
}
objectScannedHealthNameText.text = currentScannedObjectHealth.getCharacterName ();
objectScannedHealthAmountText.text = currentScannedObjectHealth.getCurrentHealthAmount ().ToString ();
}
if (currentScannedVehicle != null) {
int weakSpotsAmount = currentScannedVehicle.advancedSettings.damageReceiverList.Count;
for (int i = 0; i < weakSpotsAmount; i++) {
if (i < healtWeakSpotList.Count) {
healtWeakSpotList [i].target = currentScannedVehicle.advancedSettings.damageReceiverList [i].spotTransform;
string spotText = "x" + currentScannedVehicle.advancedSettings.damageReceiverList [i].damageMultiplier;
if (currentScannedVehicle.advancedSettings.damageReceiverList [i].killedWithOneShoot) {
spotText = "Death";
}
healtWeakSpotList [i].healthSpot.text = spotText;
healtWeakSpotList [i].used = true;
} else {
GameObject newWeakSpotMesh = (GameObject)Instantiate (healthElement, healthElement.transform.position, Quaternion.identity);
newWeakSpotMesh.transform.SetParent (healthInfoParent);
newWeakSpotMesh.transform.localScale = Vector3.one;
newWeakSpotMesh.transform.localPosition = Vector3.zero;
healthElementInfo newHealthElementInfo = newWeakSpotMesh.GetComponent<weakSpotInfo> ().elementInfo;
newHealthElementInfo.target = currentScannedVehicle.advancedSettings.damageReceiverList [i].spotTransform;
string spotText = "x" + currentScannedVehicle.advancedSettings.damageReceiverList [i].damageMultiplier;
if (currentScannedVehicle.advancedSettings.damageReceiverList [i].killedWithOneShoot) {
spotText = "Death";
}
newHealthElementInfo.healthSpot.text = spotText;
newHealthElementInfo.used = true;
healtWeakSpotList.Add (newHealthElementInfo);
}
}
if (weakSpotsAmount < healtWeakSpotList.Count) {
for (int i = weakSpotsAmount; i < healtWeakSpotList.Count; i++) {
if (healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (false);
}
healtWeakSpotList [i].used = false;
}
}
objectScannedHealthNameText.text = currentScannedVehicle.getVehicleName ();
objectScannedHealthAmountText.text = currentScannedVehicle.getCurrentHealthAmount ().ToString ();
}
}
public void disableHealtWeakSpotList ()
{
for (int i = 0; i < healtWeakSpotList.Count; i++) {
if (healtWeakSpotList [i].healthElementGameObject.activeSelf) {
healtWeakSpotList [i].healthElementGameObject.SetActive (false);
}
healtWeakSpotList [i].used = false;
}
if (healthInfoParent.gameObject.activeSelf) {
healthInfoParent.gameObject.SetActive (false);
}
}
//CALL INPUT FUNCTIONS
public void inputHoldScanner ()
{
if (!scannerSystemEnabled) {
return;
}
if (playerIsBusy ()) {
return;
}
holdScannerInputActive = true;
}
public void inputReleaseScanner ()
{
if (!scannerSystemEnabled) {
return;
}
if (playerIsBusy ()) {
return;
}
if (!mainPlayerCamera.isFirstPersonActive () &&
!mainPlayerCamera.isChangeCameraViewEnabled () &&
!ignoreChangeToFirstPersonEnabled) {
return;
}
holdScannerInputActive = false;
activateScanner ();
}
public void setScannerSystemEnabledState (bool state)
{
scannerSystemEnabled = state;
}
public void setScannerSystemEnabledStateFromEditor (bool state)
{
setScannerSystemEnabledState (state);
updateComponent ();
}
void updateComponent ()
{
GKC_Utils.updateComponent (this);
}
}