// Update is called once per frame public void UpdateTask() { float DeltaTime = Time.deltaTime; //m_Timer.Update(DeltaTime); DeviceInput.Update(); Smoothed.SetTimeStep(DeltaTime); //ClearString(); SOrientation AccMagOrientation = DeviceInput.AccMagOrientation; Quaternion RotationChange = DeviceInput.GetRotationChange(DeltaTime); SOrientation Orientation; if (DeviceInput.HasGyro) { m_SensorFusion.Update(AccMagOrientation, RotationChange, 0.9f); } m_SmoothedOrientation.Update(AccMagOrientation); if (m_UseSensorFusion) { Orientation = m_SensorFusion.Orientation; } else { Orientation = m_SmoothedOrientation.Orientation; } m_DebugText.PrintText(Orientation); m_DebugText.NewLine(); float heading = Orientation.Yaw; float pitch = Orientation.Pitch; float tilt = Orientation.Roll; int iFocus = -1; for (int i = 0; i < 4; i++) { // TaskPanel float Dist = Panels[i].UpdateAngles(heading, pitch); if (!Panels[i].IsFinished()) { if (m_Distance >= Dist && m_Distance >= Mathf.Abs(tilt)) { iFocus = i; if (0.6f < Panels[i].GetFocusTime()) { TakePicture(i); } else { Panels[i].SetStatus(TaskPanel.ETaskStatus.TS_Focus, m_FlashingFocus); } } else { Panels[i].SetStatus(TaskPanel.ETaskStatus.TS_Pending); } } } bool bAllFinished = IsAllFinished(); if (bAllFinished) { m_bTakingPointPhoto = true; } if (m_bTakingPointPhoto) { m_CompassStrip.SetActive(false); m_ButtonTakePicture.SetActive(true); } else { m_CompassStrip.SetActive(true); m_ButtonTakePicture.SetActive(false); } if (bAllFinished || m_bTakingPointPhoto) { StatusText.text = m_StringTakePhoto; } else if (iFocus >= 0) { StatusText.text = m_StringHoldStill;//"Halten Sie das Handy kurz ruhig" ; if (iFocus >= 0 && m_SnapIfAccurate) { tilt = 0.0f; float SnappedHeading = Panels[iFocus].Heading; float SnappedPitch = Panels[iFocus].Pitch; for (int i = 0; i < 4; i++) { Panels[i].UpdateAngles(SnappedHeading, SnappedPitch); } } } else if (Mathf.Abs(tilt) > 20.0f) { StatusText.text = m_StringLandscape;//"Halte das Handy im Landschaftsmodus" ; } else { StatusText.text = m_StringFocus;//"Bringe die roten Quadrate in den Rahmen um Fotos nach Norden, Osten, Süden und Westen zu machen"; } m_DebugText.PrintText("iFocus", iFocus); float RotZ = Div.getClamped(-2.0f * tilt, -35.0f, 35.0f); transform.localRotation = Quaternion.Euler(0.0f, 0.0f, RotZ); }