//Sets the frustum dimensions and sends them to all connected devices /// <summary> /// /// </summary> /// <param name="camera"></param> private void setFrustumSize(Camera camera) { //From: https://github.com/myuwbclasses/CSS451/blob/master/ClassExamples/Week9/Week9_Examples/ //1.DrawCameraFrustum/Assets/Source/UISupport/CameraManipulation_DrawFrustum.cs float tanFOV = Mathf.Tan(Mathf.Deg2Rad * 0.5f * camera.fieldOfView); // near plane dimension float n = camera.nearClipPlane + NEAR_DISTANCE; float nearPlaneHeight = 2f * n * tanFOV; float nearPlaneWidth = camera.aspect * nearPlaneHeight; frustum.SetNearPlaneSize(nearPlaneWidth, nearPlaneHeight); // far plane dimension float f = camera.nearClipPlane + CLIP_DISTANCE; float farPlaneHeight = 2f * f * tanFOV; float farPlaneWidth = camera.aspect * farPlaneHeight; frustum.SetFarPlaneSize(farPlaneWidth, farPlaneHeight); frustum.m_FarDist = f - n; //Todo: Separate this networked portion from the frustum resizing code //Send these dimensions as an array to the connected desktop float[] sendArray = { nearPlaneWidth, nearPlaneHeight, farPlaneWidth, farPlaneHeight, frustum.m_FarDist }; ARCameraASLObject.SendAndSetClaim(() => { ARCameraASLObject.SendFloatArray(sendArray); }); }
/// <summary> /// Sets the frustum's size and sends it to all connected devices. /// </summary> /// <param name="camera"></param> private void SetFrustumSize(Camera camera) { m_Frustum.SetFrustumSize(camera, m_NEAR_DISTANCE, m_CLIP_DISTANCE); float tanFOV = Mathf.Tan(Mathf.Deg2Rad * 0.5f * camera.fieldOfView); // near plane dimension float n = camera.nearClipPlane + m_NEAR_DISTANCE; float nearPlaneHeight = 2f * n * tanFOV; float nearPlaneWidth = camera.aspect * nearPlaneHeight; // far plane dimension float f = camera.nearClipPlane + m_CLIP_DISTANCE; float farPlaneHeight = 2f * f * tanFOV; float farPlaneWidth = camera.aspect * farPlaneHeight; //Send these dimensions as an array to the connected desktop float[] sendArray = { nearPlaneWidth, nearPlaneHeight, farPlaneWidth, farPlaneHeight, m_Frustum.m_FarDist }; m_ARCameraASLObject.SendAndSetClaim(() => { m_ARCameraASLObject.SendFloatArray(sendArray); }); }
//Sends all parameters to all peers via SendFloatArray() private void SynchronizePeers() { float[] floatArray = { FPS, ImageWidth, ImageHeight, GCCollectFreq, -1.0f }; if (IsStreaming) { floatArray[4] = 1; } else { floatArray[4] = 0; } aslObject.SendAndSetClaim(() => { aslObject.SendFloatArray(floatArray); }); }