public void Setup(List <Texture2D> textureList, string videoURL, float?animatedTextureSpeed, ModelComponentType modelComponentType, ModelProperties modelProperties, ModelSharedProperties modelSharedProperties) { //Debug.Log("videosetup " + gameObject.transform.parent.name + " imagecount " + textureList.Count + " " + videoURL + " " + (videoPlayer == null)); this.modelProperties = modelProperties; this.modelComponentType = modelComponentType; this.imageList = null; this.modelSharedProperties = modelSharedProperties; this.dummyNode = gameObject.transform.parent.transform.parent.gameObject; string layer = LayerMask.LayerToName(gameObject.layer); if (layer.StartsWith("Arcade")) { layerMask = LayerMask.GetMask("Arcade/ArcadeModels", "Arcade/GameModels", "Arcade/PropModels"); thisCamera = ArcadeManager.arcadeCameras[ArcadeType.FpsArcade]; arcadeLayer = true; } else { layerMask = LayerMask.GetMask("Menu/ArcadeModels", "Menu/GameModels", "Menu/PropModels"); thisCamera = ArcadeManager.arcadeCameras[ArcadeType.CylMenu]; arcadeLayer = false; } if (ArcadeManager.arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString() || ArcadeManager.arcadeConfiguration.arcadeType == ArcadeType.FpsMenu.ToString()) { isCylArcade = false; maxDistance = 5f; } else { isCylArcade = true; maxDistance = 10000f; } // Setup image, nescessary for magic pixels and to get an unique material instance. Texture2D tex = null; if (textureList.Count > 0) { tex = textureList[0]; } ModelImageSetup modelImageSetup = GetComponent <ModelImageSetup>(); if (modelImageSetup == null) { modelImageSetup = gameObject.AddComponent <ModelImageSetup>(); } modelImageSetup.Setup(tex, modelSharedProperties.renderSettings, modelProperties, modelComponentType); if (videoURL != null && videoPlayer == null) { videoPlayer = gameObject.GetComponent <UnityEngine.Video.VideoPlayer>(); } if (animatedTextureSpeed != null) { waitTime = animatedTextureSpeed.Value; } videoEnabled = (ModelVideoEnabled)System.Enum.Parse(typeof(ModelVideoEnabled), modelSharedProperties.videoOnModelEnabled); if (videoURL == null) { videoEnabled = ModelVideoEnabled.Never; } else { if (videoPlayer != null && videoEnabled != ModelVideoEnabled.Never) { videoPlayer.SetDirectAudioMute(0, true); videoPlayer.enabled = true; videoPlayer.url = videoURL; } } if (textureList.Count > 0) { imageList = textureList; if (renderer != null) { renderer.material.mainTexture = textureList[0]; } } else { if (renderer != null && transform.parent.CompareTag("gamemodel") && modelComponentType == ModelComponentType.Screen) { renderer.material.mainTexture = Texture2D.blackTexture; } } if (renderer != null && (textureList.Count > 0 || videoEnabled != ModelVideoEnabled.Never)) { SetupVideoPlayer(); } }
public void StartArcade(ArcadeConfiguration arcadeConfiguration, GameObject selectedArcadeModel) { Debug.Log("Loading Arcade Configuration " + arcadeConfiguration.id + " in ArcadeType " + arcadeConfiguration.arcadeType); if (arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString() || arcadeConfiguration.arcadeType == ArcadeType.CylArcade.ToString()) { ArcadeManager.arcadeState = ArcadeStates.LoadingArcade; } // We are loading stuff...dont do these RigidbodyFirstPersonController arcadeRigidbodyFirstPersonController = ArcadeManager.arcadeControls[ArcadeType.FpsArcade].GetComponent <RigidbodyFirstPersonController>(); if (arcadeRigidbodyFirstPersonController != null) { arcadeRigidbodyFirstPersonController.pause = true; } RigidbodyFirstPersonController menuRigidbodyFirstPersonController = ArcadeManager.arcadeControls[ArcadeType.FpsMenu].GetComponent <RigidbodyFirstPersonController>(); if (menuRigidbodyFirstPersonController != null) { menuRigidbodyFirstPersonController.pause = true; } Rigidbody arcadeCameraRigidBody = ArcadeManager.arcadeControls[ArcadeType.FpsArcade].GetComponent <Rigidbody>(); if (arcadeCameraRigidBody != null) { arcadeCameraRigidBody.isKinematic = true; } Rigidbody menuCameraRigidBody = ArcadeManager.arcadeControls[ArcadeType.FpsMenu].GetComponent <Rigidbody>(); if (menuCameraRigidBody != null) { menuCameraRigidBody.isKinematic = true; } CapsuleCollider arcadeCapsuleCollider = ArcadeManager.arcadeControls[ArcadeType.FpsArcade].GetComponent <CapsuleCollider>(); if (arcadeCapsuleCollider != null) { arcadeCapsuleCollider.enabled = false; } CapsuleCollider menuCapsuleCollider = ArcadeManager.arcadeControls[ArcadeType.FpsMenu].GetComponent <CapsuleCollider>(); if (menuCapsuleCollider != null) { menuCapsuleCollider.enabled = false; } // Arcade if (arcadeConfiguration.arcadeType == ArcadeType.FpsArcade.ToString() || arcadeConfiguration.arcadeType == ArcadeType.CylArcade.ToString()) { ArcadeManager.activeArcadeType = ArcadeType.None; ResetArcade(); // Reset current state to zero if (LoadArcade(arcadeConfiguration)) { UpdateController(ArcadeManager.activeArcadeType); TriggerManager.SendEvent(Event.ArcadeStarted); if (ArcadeManager.arcadeHistory.Count == 1) { TriggerManager.SendEvent(Event.MainMenuStarted); } if (ArcadeManager.activeArcadeType == ArcadeType.FpsArcade) { arcadeCameraRigidBody.isKinematic = false; arcadeCapsuleCollider.enabled = true; arcadeRigidbodyFirstPersonController.pause = false; } ArcadeManager.arcadeState = ArcadeStates.Running; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } else { Debug.Log("Loading the Arcade Configuration of type " + arcadeConfiguration.arcadeType + " Failed!"); // TODO: Show an error dialog! } } // Menu if (arcadeConfiguration.arcadeType == ArcadeType.CylMenu.ToString() || arcadeConfiguration.arcadeType == ArcadeType.FpsMenu.ToString()) { ArcadeManager.activeMenuType = ArcadeType.None; ResetMenu(); if (LoadArcade(arcadeConfiguration)) { UpdateController(Application.isPlaying ? ArcadeManager.activeMenuType : ArcadeManager.activeArcadeType); GameObject obj = ArcadeStateManager.selectedModel; if (obj != null && obj.transform.childCount > 1) { ModelVideoSetup modelVideoSetup = obj.transform.GetChild(1).GetComponent <ModelVideoSetup>(); if (modelVideoSetup != null) { modelVideoSetup.ReleasePlayer(); } ModelImageSetup modelImageSetup = obj.transform.GetChild(1).GetComponent <ModelImageSetup>(); if (modelImageSetup != null) { if (arcadeConfiguration.cylArcadeProperties.Count > 0) { if (arcadeConfiguration.cylArcadeProperties[0].cylArcadeOnScreenSelectedModel) { modelImageSetup.SetMenuTexture(); } } } ArcadeStateManager.savedArcadeModel = ArcadeStateManager.selectedModel; ArcadeStateManager.savedArcadeModelSetup = ArcadeStateManager.selectedModelSetup; } if (ArcadeManager.activeArcadeType == ArcadeType.FpsMenu) { arcadeCameraRigidBody.isKinematic = false; arcadeCapsuleCollider.enabled = true; arcadeRigidbodyFirstPersonController.pause = false; } ArcadeManager.activeMenuType = ArcadeType.CylMenu; ArcadeManager.arcadeState = ArcadeStates.ArcadeMenu; TriggerManager.SendEvent(Event.MenuStarted); Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; return; } else { Debug.Log("Loading the Arcade Configuration of type " + arcadeConfiguration.arcadeType + " Failed!"); // TODO: Show an error dialog! ArcadeManager.activeMenuType = ArcadeType.None; } // If the menu setup fails go back to the regular arcade. ArcadeManager.arcadeState = ArcadeStates.Running; return; } void UpdateController(ArcadeType arcadeType) { ArcadeManager.arcadeControls[arcadeType].transform.position = arcadeConfiguration.camera.position; ArcadeManager.arcadeControls[arcadeType].transform.rotation = Quaternion.identity; ArcadeManager.arcadeControls[arcadeType].transform.localRotation = Quaternion.identity; ArcadeManager.arcadeControls[arcadeType].transform.GetChild(0).transform.rotation = Quaternion.identity; ArcadeManager.arcadeControls[arcadeType].transform.GetChild(0).transform.localRotation = arcadeConfiguration.camera.rotation; ArcadeManager.arcadeControls[arcadeType].transform.GetChild(0).transform.position = Vector3.zero; ArcadeManager.arcadeControls[arcadeType].transform.GetChild(0).transform.localPosition = new Vector3(0, arcadeConfiguration.camera.height, 0); RigidbodyFirstPersonController rigidbodyFirstPersonController = ArcadeManager.arcadeControls[arcadeType].GetComponent <RigidbodyFirstPersonController>(); if (rigidbodyFirstPersonController != null) { rigidbodyFirstPersonController.Setup(); } ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].orthographic = arcadeConfiguration.camera.orthographic; ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].fieldOfView = arcadeConfiguration.camera.fieldOfView; ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].nearClipPlane = arcadeConfiguration.camera.nearClipPlane; ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].farClipPlane = arcadeConfiguration.camera.farClipPlane; ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].rect = arcadeConfiguration.camera.viewportRect; ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].allowDynamicResolution = arcadeConfiguration.camera.allowDynamicResolution; if (arcadeConfiguration.camera.aspectRatio != 0) { ArcadeManager.arcadeCameras[ArcadeType.FpsArcade].aspect = arcadeConfiguration.camera.aspectRatio; } } }