/// <summary> /// Apply the movement determined from user input to the camera. /// </summary> private void UpdateCamera() { switch (objectSelectionTrackingState) { case ObjectSelectionTrackingState.None: MoveAndRotateCamera(); break; case ObjectSelectionTrackingState.Tracking: if (lastSelectedObject == null) // If somehow we aren't tracking anything, abort tracking { goto default; } bool finishedRotating = RotateTowardsSelectedObject(); bool finishedMoving = MoveTowardsSelectedObject(); if (finishedRotating && finishedMoving) { objectSelectionTrackingState = ObjectSelectionTrackingState.None; } break; default: // Something crazy happened, abort any tracking objectSelectionTrackingState = ObjectSelectionTrackingState.None; break; } return; }
private void Start() { GameObject.Find("CustomNetworkMgr").GetComponent<NetworkManagerHUD>().showGUI = false; playerCamera = GetComponent<Camera>(); playerCamera.enabled = isLocalPlayer; GetComponent<AudioListener>().enabled = isLocalPlayer; playerAudioSource = GetComponent<AudioSource>(); objectSelectionTrackingState = ObjectSelectionTrackingState.None; lastSelectedObject = null; if (isLocalPlayer) { Game.singleton.local_player = gameObject; } return; }
/// <summary> /// Check if the user has selected a selectable item and snap the camera to it. /// </summary> private void CheckForObjectSelect() { if (objectSelectionTrackingState != ObjectSelectionTrackingState.None) // Ignore selection while tracking { return; } Ray ray = playerCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (SelectObject() && Physics.Raycast(ray, out hitInfo, playerCamera.farClipPlane)) { lastSelectedObject = hitInfo.transform.FindChild(selectableTag); objectSelectionTrackingState = ObjectSelectionTrackingState.Tracking; } return; }
/// <summary> /// Check if the user has selected a selectable item and snap the camera to it. /// </summary> private void CheckForObjectSelect() { if (objectSelectionTrackingState != ObjectSelectionTrackingState.None) // Ignore selection while tracking { return; } Ray ray = playerCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (SelectObject() && Physics.Raycast(ray, out hitInfo, playerCamera.farClipPlane)) { Transform selectableChild = hitInfo.transform.FindChild(selectableTag); if (selectableChild != null) { playerAudioSource.PlayOneShot(objectSelectAudioClip); lastSelectedObject = selectableChild; objectSelectionTrackingState = ObjectSelectionTrackingState.Tracking; Ship ship = lastSelectedObject.GetComponentInParent<Ship>(); if (ship && ship.player == Game.singleton.local_player) { BenPrimeTest_GameDirector.singleton.setSelectedShip(ship); } } } return; }
/// <summary> /// Perform initialization on the camera object. /// </summary> private void Start() { playerCamera = GetComponent<Camera>(); playerCamera.enabled = true; objectSelectionTrackingState = ObjectSelectionTrackingState.None; lastSelectedObject = null; return; }