//accessed by game controller when need to reset the player public void ResetAlto() { StopAlto(); altoState = AltoBoardState.Static; HUDController.ActivateGameUI(); //TODO: smooth teleportation of Alto player to start position transform.position = originPosition; AltoInput.ResetAlto(); }
private void InitializeAltoController() { //was hoping to overwrite entire transform but read only have to set pos and rot separately SpeedUIPosition = new List <Vector3>(); SpeedUIRotation = new List <Quaternion>(); //Vive = 0, Oculus = 1, MR = 2, the same as the device enum values SpeedUIPosition.Add(new Vector3(0.0f, 0.01f, -0.052f)); SpeedUIPosition.Add(new Vector3(0.018f, 0.007f, -0.05f)); SpeedUIPosition.Add(new Vector3(0.0f, 0.009f, -0.051f)); SpeedUIRotation.Add(Quaternion.Euler(270.0f, 0.0f, 0.0f)); SpeedUIRotation.Add(Quaternion.Euler(305.0f, -1.0f, 13.5f)); SpeedUIRotation.Add(Quaternion.Euler(285.0f, 0.0f, 0.0f)); //TODO: add to this to cover all HMD's string device = XRDevice.model; int deviceIndex = -1; if (device.Contains("Oculus")) { currentDevice = HMDDevice.Oculus_Rift; //oculus buttons can only be accessed through SteamVR_Controller with openVR deviceIndex = (int)jetPackControl.controllerIndex; //if this controller device # is not set before play sometimes checks the class before it has started and returns 0 if (deviceIndex == -1) { deviceIndex = 1; Debug.Log("unable to find device index, please make sure controllers are on. Index set to 1"); } oculusController = SteamVR_Controller.Input(deviceIndex); } else if (device.Contains("Vive")) { currentDevice = HMDDevice.HTC_Vive; } else { currentDevice = HMDDevice.MR_HMD; } //need the lists entries to match the device enum entries HUDController.ControllerSpeedUI.transform.localPosition = SpeedUIPosition[(int)currentDevice]; HUDController.ControllerSpeedUI.transform.localRotation = SpeedUIRotation[(int)currentDevice]; rigidBody = GetComponent <Rigidbody>(); originPosition = transform.position; altoHaptics = gameObject.AddComponent <AltoHaptics>(); //set variables from config rigidBody.mass = AltoInput.GetConfigFloat("Player", "Mass"); rigidBody.drag = AltoInput.GetConfigFloat("Player", "Drag"); rigidBody.angularDrag = AltoInput.GetConfigFloat("Player", "AngularDrag"); step = AltoInput.GetConfigFloat("Player", "Step"); userSpeed = AltoInput.GetConfigFloat("Player", "UserStartingSpeed"); AltoSpeed = AltoInput.GetConfigFloat("Player", "AltoSpeed"); UserSpeedIncremenet = AltoInput.GetConfigFloat("Player", "UserSpeedIncrement"); JetPackForce = AltoInput.GetConfigFloat("Player", "JetPackForce"); FallingForceAdjustment = AltoInput.GetConfigFloat("Player", "FallingForceAdjustment"); calibDirection = AltoInput.GetConfigFloat("Alto", "Offset"); altoHoverAudio = AltoPuck.GetComponent <AudioSource>(); HUDController.SetSpeedRange(minSpeedMulitplier, maxSpeedMulitplier); setupComplete = true; }
void Update() { if (!isLocalPlayer) { return; } if (AltoInput.IsPresent()) { ProcessAltoInput(); if (!altoInactive) { ProcessAltoState(); } altoHaptics.RunHapticFeedback(userVelocity, altoMagnitude); } else { //Debug.Log("Cannot detect Alto, check port and Alto.cfg"); } }
///Alto functions/// private void ProcessAltoInput() { //get input values from Input class float altoInputDirection = AltoInput.GetDirection(); Debug.Log("AltoInputDirection = " + AltoInput.GetDirection()); float altoInputMagnitudeNorm = AltoInput.GetMagnitudeNormalised(); Debug.Log("AltoInputMagnitudeNorm = " + AltoInput.GetMagnitudeNormalised()); //apply to HUD GUI HUDController.UpdateMagnitude(altoInputMagnitudeNorm); altoDirection = (Quaternion.AngleAxis(altoInputDirection - calibDirection + 90, Vector3.up)) * calibVector; altoMagnitude = step * altoInputMagnitudeNorm; Vector3 PuckRot = Quaternion.AngleAxis(altoInputDirection + 90, Vector3.up) * Vector3.forward; AltoPuck.transform.eulerAngles = PuckRot * (altoInputMagnitudeNorm * 20); HUDController.SetAltoInput(altoDirection, altoMagnitude); }
private void HapticFeedback(string name, int intensity) { AltoInput.SendHapticCommand(name, intensity); }