public bool LoadArcade(ArcadeConfiguration arcadeConfiguration) { if (arcadeManager == null) { Debug.Log("No ArcadeManager reference found, create one..."); return(false); } if (arcadeConfiguration == null) { return(false); } if (arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString() || arcadeConfiguration.arcadeType == ArcadeType.CylArcade.ToString() || !Application.isPlaying) { arcadeManager.SetArcadeConfiguration(arcadeConfiguration); } else { ArcadeManager.menuConfiguration = arcadeConfiguration; } System.Enum.TryParse(arcadeConfiguration.arcadeType, true, out ArcadeType arcadeType); if (arcadeType == ArcadeType.FpsArcade || arcadeType == ArcadeType.FpsMenu) { ArcadeManager.allZones[arcadeType] = new Dictionary <int, List <int> >(); ArcadeManager.visibleZones[arcadeType] = new Dictionary <int, List <GameObject> >(); foreach (Zone zone in arcadeConfiguration.zones) { ArcadeManager.allZones[arcadeType][zone.zone] = zone.visibleZones; } } SetListOfModelProperties(ModelType.Arcade, arcadeConfiguration.arcadeModelList, "Arcades"); if (arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString() || !Application.isPlaying) { SetListOfModelProperties(ModelType.Game, arcadeConfiguration.gameModelList, "Games"); } SetListOfModelProperties(ModelType.Prop, arcadeConfiguration.propModelList, "Props"); if (!Application.isPlaying) { return(true); } // TODO: Why true? if (arcadeConfiguration.arcadeType == ArcadeType.CylArcade.ToString()) { ArcadeManager.activeArcadeType = ArcadeType.CylArcade; ArcadeManager.arcadeHistory.Add(arcadeConfiguration.id); CylController cylController = ArcadeManager.arcadeControls[ArcadeType.CylArcade].GetComponentInChildren <CylController>(); cylController.SetupCylArcade(arcadeConfiguration); } if (arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString()) { ArcadeManager.activeArcadeType = ArcadeType.FpsArcade; ArcadeManager.arcadeHistory.Add(arcadeConfiguration.id); } if (arcadeConfiguration.arcadeType == ArcadeType.CylMenu.ToString()) { ArcadeManager.activeMenuType = ArcadeType.CylMenu; CylController cylController = ArcadeManager.arcadeControls[ArcadeType.CylMenu].GetComponentInChildren <CylController>(); cylController.SetupCylArcade(arcadeConfiguration); } if (arcadeConfiguration.arcadeType == ArcadeType.FpsMenu.ToString()) { ArcadeManager.activeMenuType = ArcadeType.FpsMenu; } TriggerManager.Setup(arcadeType); return(true); void SetListOfModelProperties(ModelType modelType, List <ModelProperties> list, string resourceFolder) { ArcadeType tempArcadeType = !Application.isPlaying ? ArcadeType.None : arcadeType; int count = list.Count; for (int i = 0; i < count; i++) { ModelProperties modelProperties = list[i]; AddModelToArcade(modelType, modelProperties, tempArcadeType, false); } } }
// Global Variables: // ArcadeManager.arcadeControls // ArcadeManager.arcadeState // ArcadeManager.activeArcadeType // ArcadeManager.activeMenuType //void Start() //{ // //arcadeControl = this.transform.parent.gameObject; //} void Update() { if ((arcadeControl == ArcadeManager.arcadeControls[ArcadeType.FpsArcade] || arcadeControl == ArcadeManager.arcadeControls[ArcadeType.CylArcade]) && ArcadeManager.arcadeState == ArcadeStates.ArcadeMenu) { return; } if ((arcadeControl == ArcadeManager.arcadeControls[ArcadeType.FpsMenu] || arcadeControl == ArcadeManager.arcadeControls[ArcadeType.CylMenu]) && !(ArcadeManager.arcadeState == ArcadeStates.ArcadeMenu)) { return; } if (!(ArcadeManager.arcadeState == ArcadeStates.Running || ArcadeManager.arcadeState == ArcadeStates.Game || ArcadeManager.arcadeState == ArcadeStates.MoveCabs || ArcadeManager.arcadeState == ArcadeStates.ArcadeMenu)) { return; } // If fps is active return if (ArcadeManager.activeArcadeType != arcadeType && !(ArcadeManager.arcadeState == ArcadeStates.ArcadeMenu)) { return; } if (ArcadeManager.activeMenuType != arcadeType && (ArcadeManager.arcadeState == ArcadeStates.ArcadeMenu)) { return; } if (Cursor.lockState != CursorLockMode.Locked) { return; } #if MOBILE_INPUT // Check if there is a touch int touchesCount = Input.touchCount; //Debug.Log("tocuCount:" + touchesCount); bool updateMouse = true; Touch updateTouch; for (int i = 0; i < touchesCount; i++) { Touch touch = Input.GetTouch(i); updateTouch = touch; // Debug.Log("touchnr: " + i + "on ui: " + EventSystem.current.IsPointerOverGameObject(touch.fingerId) + " with id: " + touch.fingerId); if (touch.phase == TouchPhase.Began || touch.phase == TouchPhase.Ended) { continue; } //Debug.Log("touchnr: " + i + "on ui: " + EventSystem.current.IsPointerOverGameObject(touch.fingerId) + " with id: " + touch.fingerId); if (EventSystem.current.IsPointerOverGameObject(touch.fingerId)) { updateMouse = false; continue; //Debug.Log("Ignore touches on ui, ie virtual joystick " + touch.fingerId); fingerSaved = touch.fingerId; // return; //Debug.Log("touchnr: " + i + "on ui: " + EventSystem.current.IsPointerOverGameObject(touch.fingerId) + " with id: " + touch.fingerId); } else { updateMouse = true; } //if (touch.position.x < Screen.width/2) //{ // return; //} //Debug.Log("finger: " + touch.fingerId + " count: " + touchesCount); //return; if (touch.phase == TouchPhase.Moved) { Vector2 delta = touch.deltaPosition; float rotationZ = delta.x * 5.0f * Time.deltaTime; //rotationZ = invertX ? rotationZ : rotationZ * -1; float rotationX = delta.y * 5.0f * Time.deltaTime; //rotationX = invertY ? rotationX : rotationX * -1; transform.localEulerAngles += new Vector3(-1 * rotationX, 0, 0); character.transform.localEulerAngles += new Vector3(0, rotationZ, 0); } //mouseDelta = new Vector2((float)(touch.deltaPosition.x * 0.04), (float)(touch.deltaPosition.y * 0.04)); //Debug.Log("finger: " + touch.fingerId + " count: " + touchesCount + " delta: " + mouseDelta); //mouseDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")); } if (!updateMouse) { return; } return; #else mouseDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")); #endif mouseDelta = Vector2.Scale(mouseDelta, new Vector2(sensitivity * smoothing, sensitivity * smoothing)); // The interpolated float result between the two float values //print("mouse hier x " + mouseDelta.x + " y " + mouseDelta.y); if ((ArcadeManager.activeArcadeType == ArcadeType.CylArcade && ArcadeManager.arcadeState != ArcadeStates.ArcadeMenu) || (arcadeType == ArcadeType.CylMenu && ArcadeManager.arcadeState == ArcadeStates.ArcadeMenu)) { if (mouseDelta.y == 0 && mouseDelta.x == 0) { return; } CylController c = arcadeControl.GetComponent <CylController>(); if (c.cylArcadeProperties.cameraLocalEularAngleRotation) { smoothV.x = Mathf.Lerp(smoothV.x, mouseDelta.x * (c.cylArcadeProperties.mouseLookReverse ? -1f : 1f), 1f / smoothing); smoothV.y = Mathf.Lerp(smoothV.y, mouseDelta.y * (c.cylArcadeProperties.mouseLookReverse ? -1f : 1f), 1f / smoothing); // Incrementally add to the camera look mouseLook.x = c.cylArcadeProperties.cameraLocalEularAngleX; mouseLook.y = c.cylArcadeProperties.cameraLocalEularAngleX; mouseLook += smoothV; if (mouseLook.y > c.cylArcadeProperties.cameraLocalMaxEularAngleRotation) { mouseLook.y = c.cylArcadeProperties.cameraLocalMaxEularAngleRotation; } if (mouseLook.y < c.cylArcadeProperties.cameraLocalMinEularAngleRotation) { mouseLook.y = c.cylArcadeProperties.cameraLocalMinEularAngleRotation; } if (mouseLook.x > c.cylArcadeProperties.cameraLocalMaxEularAngleRotation) { mouseLook.x = c.cylArcadeProperties.cameraLocalMaxEularAngleRotation; } if (mouseLook.x < c.cylArcadeProperties.cameraLocalMinEularAngleRotation) { mouseLook.x = c.cylArcadeProperties.cameraLocalMinEularAngleRotation; } c.cylArcadeProperties.cameraLocalEularAngleX = (c.cylArcadeProperties.mouseLookAxisY ? mouseLook.y : mouseLook.x); c.UpdateCamera(); c.timer = 1; } } else { smoothV.x = Mathf.Lerp(smoothV.x, mouseDelta.x, 1f / smoothing); smoothV.y = Mathf.Lerp(smoothV.y, mouseDelta.y, 1f / smoothing); // Incrementally add to the camera look mouseLook += smoothV; if (mouseLook.y < -70) { mouseLook.y = -70f; } if (mouseLook.y > 70) { mouseLook.y = 70f; } transform.localRotation = Quaternion.AngleAxis(-mouseLook.y, Vector3.right); arcadeControl.transform.localRotation = Quaternion.AngleAxis(mouseLook.x, arcadeControl.transform.up); } }