Exemplo n.º 1
0
    // Start is called before the first frame update
    void Start()
    {
        id      = this.transform.GetComponent <IDInteractable>();
        audioFX = this.transform.GetComponent <AudioSource>();

        if (screen)
        {
            originalTexture = screen.GetComponent <MeshRenderer>().material.mainTexture;
        }
    }
Exemplo n.º 2
0
    //public void DisplayTextUsingTargetingColor(string text) {
    //    scan.color = targetTextColor;
    //    displayText = text;
    //}

    //public void DisplayTextUsingModeColor(string text) {
    //    scan.color = DisplayModeColor;
    //    displayText = text;
    //}

    public void DisplayReticleText()
    {
        scan.text = displayText;

        if (currentID != null)
        {
            float    distanceToID;
            Collider col = null;

            if (currentID.GetType() == typeof(IDInteractable))
            {
                IDInteractable IDThing = (IDInteractable)currentID;

                if (IDThing.switchColliderWithPointerColliders && IDThing.currentSwitchCollider != null)
                {
                    col = IDThing.currentSwitchCollider;
                }
                else
                {
                    col = IDThing.transform.GetComponent <Collider>();
                }
            }
            else
            {
                col = currentID.transform.GetComponent <Collider>();
            }


            distanceToID = Vector3.Distance(col.ClosestPoint(bCam.transform.position), bCam.transform.position);

            if (distanceToID < currentID.maxDistanceToActivate)
            {
                scan.color = DisplayModeColor;
            }
            else
            {
                scan.color = DisplayModeOutOfRangeColor;
            }
        }

        scan.enabled = true;
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void FixedUpdate()
    {
        maxIDRange = maxIDRangeFactor * (100 / bCamCamera.fieldOfView);

        if (camMaster.gamePaused)
        {
            rigid.constraints = RigidbodyConstraints.FreezeAll;
        }
        else
        {
            rigid.constraints &= ~RigidbodyConstraints.FreezePosition;
        }

        if (rightEyeLock)
        {
            if (tedTrack)
            {
                this.transform.LookAt(tedHead.transform.position);
                lockIndicator.texture   = tedTrackIcon;
                sixDOFIndicator.texture = levelTiltIcon;
            }
            else
            {
                lockIndicator.texture = eyeLockedIcon;
            }
        }
        else
        {
            lockIndicator.texture = eyeUnlockedIcon;
            if (sixDOF)
            {
                sixDOFIndicator.texture = sixDOFIcon;
            }
            else
            {
                sixDOFIndicator.texture = levelTiltIcon;
            }
        }

        //if (rightEyeLock)   {lockIndicator.enabled = true;}
        //else                {lockIndicator.enabled = false;}

        if (camMaster.reticleEnabled || !camMaster.reticleEnabled)
        {
            //lockIndicator.enabled = true;

            RaycastHit hit;
            //if (camMaster.rightEyeLodged) {
            //    scanFrom = this.transform.TransformPoint(0, 0, 15);
            //}
            //if (bCam.bodyControl && !camMaster.rightEyeLodged) {
            //    scanFrom = leftEye.transform;
            //} else {
            //    scanFrom = bCam.transform;
            //}

            scanFrom = bCam.transform;

            //if (bCam.IsHoldingDocument()) { scanner.HideReticleAndText(true); }

            if (rightEyeAbilitiesAvailable && !bCam.IsHoldingDocument() && !bCam.Using() && Physics.Raycast(scanFrom.position, scanFrom.TransformDirection(Vector3.forward),
                                                                                                            out hit, maxIDRange, Physics.DefaultRaycastLayers, QueryTriggerInteraction.Ignore))
            {
                targetInfoCleared = false;

                // Set important AI components of target, if present
                Transform targetTran;

                if (hit.collider.GetComponent <PointerToID>())
                {
                    scanObject = hit.collider.GetComponent <PointerToID>().desiredID;
                    targetTran = hit.collider.GetComponent <PointerToID>().desiredID.transform;

                    if (scanObject.GetType() == typeof(IDInteractable))
                    {
                        IDInteractable IDThing = (IDInteractable)scanObject;

                        if (hit.collider.GetComponent <PointerToID>().makeDesiredActivateThisCollider)
                        {
                            IDThing.currentSwitchCollider = hit.collider;

                            if (!IDThing.switchColliders.Contains(hit.collider))
                            {
                                IDThing.switchColliders.Add(hit.collider);
                            }

                            foreach (Collider col in hit.collider.GetComponent <PointerToID>().otherCollidersToActivate)
                            {
                                if (!IDThing.switchColliders.Contains(col))
                                {
                                    IDThing.switchColliders.Add(col);
                                }
                            }

                            IDThing.switchColliderWithPointerColliders = true;
                        }
                    }
                }
                else
                {
                    targetTran = hit.collider.transform;
                    if (targetTran.GetComponent <ID>() != null)
                    {
                        scanObject = targetTran.GetComponent <ID>();

                        scanObject.ClearSwitchColliders();
                    }
                    else
                    {
                        scanObject = null;
                    }
                }

                if (targetTran.GetComponent <Ghost>() != null)
                {
                    targetedGhost = targetTran.GetComponent <Ghost>();
                }
                else
                {
                    targetedGhost = null;
                }
                if (targetTran.GetComponent <TextAndSpeech>() != null)
                {
                    targetedSpeech = targetTran.GetComponent <TextAndSpeech>();
                }
                else
                {
                    targetedSpeech = null;
                }
                if (targetTran.GetComponent <NPCIntelligence>() != null)
                {
                    targetedAI = targetTran.GetComponent <NPCIntelligence>();
                }
                else
                {
                    targetedAI = null;
                }
                if (targetTran.GetComponent <AudioSource>() != null)
                {
                    targetedAudio = targetTran.GetComponent <AudioSource>();
                }
                else
                {
                    targetedAudio = null;
                }

                // Activating comms with a Waterman rapidly increases its alert level
                if (hit.collider.transform.GetComponent <CyclopsAI>() != null && commsControl.textActive && hit.collider.transform.GetComponent <CyclopsAI>().alertLevel < 100)
                {
                    hit.collider.transform.GetComponent <CyclopsAI>().alertLevel += Time.deltaTime * hit.collider.transform.GetComponent <CyclopsAI>().alertMultiplier;
                }

                if (scanObject != null)
                {
                    //if (!toolSelect.toolSelectorOpen) {

                    //}
                    if (previousTargetedID == scanObject)
                    {
                        if (scanObject.GetType() == typeof(IDCharacter))
                        {
                            IDCharacter idChar = (IDCharacter)scanObject;
                            foreach (Transform mark in idChar.markers)
                            {
                                if (scanObject.hacked && camMaster.reticleEnabled)
                                {
                                    mark.GetComponent <MeshRenderer>().enabled = true;
                                }
                                else
                                {
                                    mark.GetComponent <MeshRenderer>().enabled = false;
                                }
                            }
                        }
                    }

                    if (scanObject.GetType() == typeof(IDInteractable))
                    {
                        IDInteractable interactableTarget = (IDInteractable)scanObject;

                        bCam.TriggerVehicleInteriorAnimation(interactableTarget.interiorVehicleAnimationTrigger);
                    }
                    else
                    {
                        bCam.TriggerVehicleInteriorAnimation("");
                    }

                    // Display info panel for ID holder (based on ID type)
                    // Vaultable objects need the scanning entity passed into the DisplayID method--the vault command is only displayed when in range to vault
                    if (scanObject.GetType() == typeof(IDVaultObject) && camMaster.rightEyeLodged && bCam.bodyControl)
                    {
                        IDVaultObject vaultID = (IDVaultObject)scanObject;

                        vaultID.DisplayID(hostID);
                    }
                    else
                    {
                        scanObject.DisplayID();
                    }

                    previousObject     = targetTran;
                    previousTargetedID = scanObject;

                    //if (Input.GetButton("Square Button") && !camMaster.gamePaused) {
                    //    if (!scanObject.KnowDescription) {
                    //        if ((((Time.time - scanStart) * 40) > hit.collider.bounds.size.magnitude)) {
                    //            scanObject.KnowDescription = true;
                    //        }
                    //    }
                    //}
                }
                else
                {
                    if (previousTargetedID != null)
                    {
                        previousTargetedID.ClearSwitchColliders();
                    }

                    scanObject = null;

                    //if (!toolSelect.toolSelectorOpen) {
                    //    scanner.DisplayTextUsingModeColor(scanner.displayModeText);
                    //}

                    scanStart = Time.time;
                    scanner.DisableInfoPanel();

                    if (previousTargetedID != null && previousTargetedID.GetType() == typeof(IDCharacter))
                    {
                        IDCharacter idChar = (IDCharacter)previousTargetedID;
                        foreach (Transform mark in idChar.markers)
                        {
                            mark.GetComponent <MeshRenderer>().enabled = false;
                        }
                    }

                    bCam.TriggerVehicleInteriorAnimation("");
                }
            }
            else
            {
                if (previousTargetedID != null && previousTargetedID.GetType() == typeof(IDInteractable))
                {
                    IDInteractable IDThing = (IDInteractable)previousTargetedID;

                    IDThing.switchColliders.Clear();
                    IDThing.switchColliderWithPointerColliders = false;
                }

                scanObject     = null;
                targetedGhost  = null;
                targetedSpeech = null;
                targetedAI     = null;
                targetedAudio  = null;

                // If tool selector isn't up, set the reticle display text to display mode color
                //if (!toolSelect.toolSelectorOpen) {
                //    scanner.DisplayTextUsingModeColor(scanner.displayModeText);
                //}

                // Clear the info box info
                if (!bCam.IsHoldingDocument())
                {
                    scanner.DisableInfoPanel();
                }
                scanStart = Time.time;

                // If the previous target was a character, clear its markers
                if (!targetInfoCleared && previousTargetedID != null && previousTargetedID.GetType() == typeof(IDCharacter))
                {
                    IDCharacter idChar = (IDCharacter)previousTargetedID;
                    foreach (Transform mark in idChar.markers)
                    {
                        mark.GetComponent <MeshRenderer>().enabled = false;
                    }
                    targetInfoCleared = true;
                }

                bCam.TriggerVehicleInteriorAnimation("");
            }
        }
        else
        {
            scanText.enabled = false;
            //scanner.DisplayBlurb("", string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false);                              // keeps Infoscan box from remaining when switching control away from right eye
            scanner.DisableInfoPanel();

            //lockIndicator.enabled = false;
            sixDOFIndicator.enabled = false;

            rightEyeScreen.enabled = false;
            if (!camMaster.rightEyeLodged)
            {
                rightEyeScreenPIP.enabled = true;
            }
            else
            {
                rightEyeScreenPIP.enabled = false;
            }
        }

        if (rightEyeActive)                                                                                         // If the right eye is active...
        {
            rightEyeScreen.enabled    = true;
            rightEyeScreenPIP.enabled = false;

            if (!rightEyeLock && camMaster.commsEnabled == false && !camMaster.gamePaused)                                                                                      //      If view isn't locked...

            {
                float moveX = Input.GetAxis("Left Joystick Horizontal") + Input.GetAxis("Horizontal");                                                          //          Side movement (A-D), loc x
                float moveY = 0;
                float moveZ = 0;

                if (sixDOF)
                {
                    if (Input.GetButton("Left Stick Press"))
                    {
                        moveY = Input.GetAxis("Left Joystick Vertical") + Input.GetAxis("Vertical");
                        moveZ = 0;                                                            //          Forward-back movement (W-S), loc z
                    }
                    else
                    {
                        moveY = 0;
                        moveZ = Input.GetAxis("Left Joystick Vertical") + Input.GetAxis("Vertical");
                    }
                }
                else
                {
                    moveZ = Input.GetAxis("Left Joystick Vertical") + Input.GetAxis("Vertical");
                }
                this.transform.Translate(moveX * rightEyeSpeed * Time.fixedDeltaTime,
                                         moveY * depthSpeed * Time.fixedDeltaTime,
                                         moveZ * rightEyeSpeed * Time.fixedDeltaTime, Space.Self);                       //          Translation, * rightEyeSpeed factor



                float rotX = (Input.GetAxis("Right Joystick Vertical") - Input.GetAxis("Mouse Y")) * bCamCamera.fieldOfView;                    //          Vert rotation, loc x, default inverted
                float rotY = (Input.GetAxis("Right Joystick Horizontal") + Input.GetAxis("Mouse X")) * bCamCamera.fieldOfView;                  //          Horiz rotation, loc y
                float rotZ = -Input.GetAxis("Triggers") + Input.GetAxis("Tilt");                                                                //          Tilt, loc z (inverted), for 6dof mode



                if (sixDOF)                                                                                         //          If in 6dof mode...
                {
                    this.transform.Rotate(rotX * rightEyeLookSens,
                                          rotY * rightEyeLookSens,
                                          rotZ * tiltSpeed);                                                        //              Rotation, * sens and tilt factors
                    //sixDOFIndicator.enabled = true;
                }
                else                                                                                                //          If not in 6dof mode...
                {
                    this.transform.Rotate(rotX * rightEyeLookSens, 0, 0);                                           //              Rotation, vertical, why separate??              !!!
                    this.transform.Rotate(0, rotY * rightEyeLookSens, 0, Space.World);                              //              Rotation, horizontal, why separate??            !!!

                    this.transform.localEulerAngles = new Vector3(this.transform.localEulerAngles.x,
                                                                  this.transform.localEulerAngles.y,
                                                                  0);                                           //          If not in 6dof mode, zero loc z-rot
                    //sixDOFIndicator.enabled = false;
                }
            } //else {
              //if (tedTrack) {
              //    this.transform.LookAt(ted.transform.position + new Vector3(0, 55, 0));                          //          Eye rotation follows Ted (origin + 55 y)
              //}
            //}                                                                                                       //      If view is locked...
        }
    }
Exemplo n.º 4
0
    private void SetBBColor(ID IDThing)
    {
        Color startColor, endColor;

        startColor = boundingBoxOutOfRangeColor;
        endColor   = boundingBoxOutOfRangeColor;

        float distance = Vector3.Distance(bCam.transform.position, IDThing.transform.GetComponent <Collider>().ClosestPoint(bCam.transform.position));

        if (IDThing.GetType() == typeof(IDCharacter))
        {
            IDCharacter thing = (IDCharacter)IDThing;

            //if (distance <= thing.discernibilityRange) {

            //    if (thing.tedsFavorabilityRatingWith < thing.favorabilityNeutralRangeLow) { startColor = boundingBoxDangerousColor; }
            //    else if (thing.tedsFavorabilityRatingWith > thing.favorabilityNeutralRangeHigh) { startColor = boundingBoxFriendColor; }
            //    else { startColor = boundingBoxNeutralColor; }


            //    if (distance <= thing.maxDistanceToActivate) {
            //        endColor = startColor;
            //    }
            //    else {
            //        endColor = boundingBoxNoColor;
            //    }
            //}
            //else {
            //    startColor = boundingBoxOutOfRangeColor;
            //    endColor = boundingBoxNoColor;
            //}

            if (distance <= thing.discernibilityRange)
            {
                if (thing.tedsFavorabilityRatingWith < thing.favorabilityNeutralRangeLow)
                {
                    startColor = boundingBoxDangerousColor;
                }
                else if (thing.tedsFavorabilityRatingWith > thing.favorabilityNeutralRangeHigh)
                {
                    startColor = boundingBoxFriendColor;
                }
                else
                {
                    startColor = boundingBoxNeutralColor;
                }
            }
            else
            {
                startColor = boundingBoxOutOfRangeColor;
            }

            endColor = startColor;
        }
        else if (IDThing.GetType() == typeof(IDInteractable))
        {
            IDInteractable thing = (IDInteractable)IDThing;

            if (thing.switchColliderWithPointerColliders)
            {
                distance = Vector3.Distance(thing.currentSwitchCollider.ClosestPoint(bCam.transform.position), bCam.transform.position);
            }

            startColor = boundingBoxUsableColor;
            endColor   = startColor;

            //if (distance <= IDThing.maxDistanceToActivate) {
            //    endColor = startColor;
            //}
            //else {
            //    endColor = boundingBoxNoColor;
            //}
        }
        else
        {
            startColor = boundingBoxOutOfRangeColor;
            endColor   = startColor;
        }

        if (distance > IDThing.maxDistanceToActivate)
        {
            startColor = new Color(startColor.r, startColor.g, startColor.b, startColor.a / boundingBoxOutOfRangeAlphaReducer);
        }

        endColor = startColor;

        foreach (LineRenderer rend in bbRend)
        {
            rend.startColor = startColor;
            rend.endColor   = endColor;
        }
    }
Exemplo n.º 5
0
    public void DisplayBoundingBoxCorners()
    {
        //Transform parentOfID = currentID.transform.parent;

        Vector3 boundBoxCenter = Vector3.zero;
        float   bbDepth        = 0;
        float   bbWidth        = 0;
        float   bbHeight       = 0;
        float   minDimLength;

        Vector3 corner1, corner2, corner3, corner4, corner5, corner6, corner7, corner8;

        corner1 = Vector3.zero;
        corner2 = Vector3.zero;
        corner3 = Vector3.zero;
        corner4 = Vector3.zero;
        corner5 = Vector3.zero;
        corner6 = Vector3.zero;
        corner7 = Vector3.zero;
        corner8 = Vector3.zero;

        minDimLength = 0;

        bool colliderFound = false;
        bool switchingColliders;

        IDInteractable IDThing = null;

        if (currentID.GetType() == typeof(IDInteractable))
        {
            IDThing = (IDInteractable)currentID;

            if (IDThing.switchColliderWithPointerColliders)
            {
                switchingColliders = true;
            }
            else
            {
                switchingColliders = false;
            }
        }
        else
        {
            switchingColliders = false;
        }

        //float distanceToTarget = 0;

        if (switchingColliders && IDThing != null)
        {
            if (IDThing.switchColliders.Count > 0)
            {
                colliderFound = true;

                //foreach (Collider col in IDThing.switchColliders) {
                //    boundBoxCenter += col.bounds.center;
                //}

                //boundBoxCenter = boundBoxCenter / (IDThing.switchColliders.Count);

                Vector3 firstColExtents = IDThing.switchColliders[0].bounds.extents;
                Vector3 firstColCenter  = IDThing.switchColliders[0].bounds.center;

                float minX, maxX, minY, maxY, minZ, maxZ;

                minX = Mathf.Min(firstColCenter.x + firstColExtents.x, firstColCenter.x - firstColExtents.x);
                maxX = Mathf.Max(firstColCenter.x + firstColExtents.x, firstColCenter.x - firstColExtents.x);
                minY = Mathf.Min(firstColCenter.y + firstColExtents.y, firstColCenter.y - firstColExtents.y);
                maxY = Mathf.Max(firstColCenter.y + firstColExtents.y, firstColCenter.y - firstColExtents.y);
                minZ = Mathf.Min(firstColCenter.z + firstColExtents.z, firstColCenter.z - firstColExtents.z);
                maxZ = Mathf.Max(firstColCenter.z + firstColExtents.z, firstColCenter.z - firstColExtents.z);

                foreach (Collider col in IDThing.switchColliders)
                {
                    minX = Mathf.Min(minX, col.bounds.center.x + col.bounds.extents.x, col.bounds.center.x - col.bounds.extents.x);
                    maxX = Mathf.Max(maxX, col.bounds.center.x + col.bounds.extents.x, col.bounds.center.x - col.bounds.extents.x);
                    minY = Mathf.Min(minY, col.bounds.center.y + col.bounds.extents.y, col.bounds.center.y - col.bounds.extents.y);
                    maxY = Mathf.Max(maxY, col.bounds.center.y + col.bounds.extents.y, col.bounds.center.y - col.bounds.extents.y);
                    minZ = Mathf.Min(minZ, col.bounds.center.z + col.bounds.extents.z, col.bounds.center.z - col.bounds.extents.z);
                    maxZ = Mathf.Max(maxZ, col.bounds.center.z + col.bounds.extents.z, col.bounds.center.z - col.bounds.extents.z);
                }

                boundBoxCenter = new Vector3((minX + maxX) / 2, (minY + maxY) / 2, (minZ + maxZ) / 2);

                bbWidth  = (Mathf.Abs(firstColCenter.x - boundBoxCenter.x) + firstColExtents.x);
                bbHeight = (Mathf.Abs(firstColCenter.y - boundBoxCenter.y) + firstColExtents.y);
                bbDepth  = (Mathf.Abs(firstColCenter.z - boundBoxCenter.z) + firstColExtents.z);

                foreach (Collider col in IDThing.switchColliders)
                {
                    bbWidth  = Mathf.Max(bbWidth, Mathf.Abs(col.bounds.center.x - boundBoxCenter.x) + col.bounds.extents.x);
                    bbHeight = Mathf.Max(bbHeight, Mathf.Abs(col.bounds.center.y - boundBoxCenter.y) + col.bounds.extents.y);
                    bbDepth  = Mathf.Max(bbDepth, Mathf.Abs(col.bounds.center.z - boundBoxCenter.z) + col.bounds.extents.z);
                }
            }

            //distanceToTarget = (IDThing.currentSwitchCollider.ClosestPoint(bCam.transform.position) - bCam.transform.position).magnitude;
        }
        else
        {
            if (currentID.GetComponent <Collider>() != null)
            {
                colliderFound = true;
                Collider coll = currentID.GetComponent <Collider>();
                boundBoxCenter = coll.bounds.center;

                bbDepth  = coll.bounds.extents.z;
                bbWidth  = coll.bounds.extents.x;
                bbHeight = coll.bounds.extents.y;

                //distanceToTarget = (parentOfID.transform.GetComponent<Collider>().ClosestPoint(bCam.transform.position) - bCam.transform.position).magnitude;
            }
            else if (currentID.GetComponent <CapsuleCollider>() != null)
            {
                colliderFound = true;
                CapsuleCollider coll = currentID.GetComponent <CapsuleCollider>();
                boundBoxCenter = coll.bounds.center;

                bbDepth  = coll.bounds.extents.z;
                bbWidth  = coll.bounds.extents.x;
                bbHeight = coll.bounds.extents.y;

                //distanceToTarget = (parentOfID.transform.GetComponent<CapsuleCollider>().ClosestPoint(bCam.transform.position) - bCam.transform.position).magnitude;
            }

            //colliderFound = true;

            //Mesh mesh = parentOfID.GetComponent<MeshFilter>().sharedMesh;

            //boundBoxCenter = parentOfID.TransformPoint(mesh.bounds.center);

            //// Meshes imported from blender must be flipped -90 on x (?)
            //bbDepth = mesh.bounds.extents.y;
            //bbWidth = mesh.bounds.extents.x;
            //bbHeight = mesh.bounds.extents.z;

            //Debug.Log(boundBoxCenter + ", " + bbDepth);
        }

        if (colliderFound)
        {
            float distanceToTarget = currentID.GetDistanceToActiveIDCollider(bCam.transform.position);

            minDimLength = Mathf.Min(ObjectDimensionAdjuster(bbDepth), ObjectDimensionAdjuster(bbWidth), ObjectDimensionAdjuster(bbHeight));

            corner1 = boundBoxCenter + new Vector3(bbWidth, bbHeight, bbDepth);
            corner2 = boundBoxCenter + new Vector3(-bbWidth, bbHeight, bbDepth);
            corner3 = boundBoxCenter + new Vector3(bbWidth, bbHeight, -bbDepth);
            corner4 = boundBoxCenter + new Vector3(-bbWidth, bbHeight, -bbDepth);
            corner5 = boundBoxCenter + new Vector3(bbWidth, -bbHeight, bbDepth);
            corner6 = boundBoxCenter + new Vector3(-bbWidth, -bbHeight, bbDepth);
            corner7 = boundBoxCenter + new Vector3(bbWidth, -bbHeight, -bbDepth);
            corner8 = boundBoxCenter + new Vector3(-bbWidth, -bbHeight, -bbDepth);

            List <Vector3> corners = new List <Vector3>()
            {
                corner1, corner2, corner3, corner4, corner5, corner6, corner7, corner8
            };

            Camera cam = bCam.transform.GetComponent <Camera>();

            float minX = cam.WorldToViewportPoint(corner1).x;
            float maxX = cam.WorldToViewportPoint(corner1).x;
            float minY = cam.WorldToViewportPoint(corner1).y;
            float maxY = cam.WorldToViewportPoint(corner1).y;

            foreach (Vector3 corner in corners)
            {
                minX = Mathf.Min(cam.WorldToViewportPoint(corner).x, minX);
                maxX = Mathf.Max(cam.WorldToViewportPoint(corner).x, maxX);
                minY = Mathf.Min(cam.WorldToViewportPoint(corner).y, minY);
                maxY = Mathf.Max(cam.WorldToViewportPoint(corner).y, maxY);
            }

            float bbBoxWidth  = maxX - minX;
            float bbBoxHeight = maxY - minY;

            foreach (LineRenderer rend in bbRend)
            {
                rend.enabled       = true;
                rend.positionCount = 3;
                rend.startWidth    = bbLineRendererThickness * bCam.GetFOV() * bbLineRendThicknessFOVCoeff;
                rend.endWidth      = bbLineRendererThickness * bCam.GetFOV() * bbLineRendThicknessFOVCoeff;
            }

            float segX = Mathf.Sqrt(bbBoxWidth) * bbLineRendBaseLength;
            float segY = Mathf.Sqrt(bbBoxHeight) * bbLineRendBaseLength;

            bbRend[0].SetPosition(0, cam.ViewportToWorldPoint(new Vector3(minX, maxY - segY, bbLineRendererDepth)));
            bbRend[0].SetPosition(1, cam.ViewportToWorldPoint(new Vector3(minX, maxY, bbLineRendererDepth)));
            bbRend[0].SetPosition(2, cam.ViewportToWorldPoint(new Vector3(minX + segX, maxY, bbLineRendererDepth)));

            bbRend[1].SetPosition(0, cam.ViewportToWorldPoint(new Vector3(maxX - segX, maxY, bbLineRendererDepth)));
            bbRend[1].SetPosition(1, cam.ViewportToWorldPoint(new Vector3(maxX, maxY, bbLineRendererDepth)));
            bbRend[1].SetPosition(2, cam.ViewportToWorldPoint(new Vector3(maxX, maxY - segY, bbLineRendererDepth)));

            bbRend[2].SetPosition(0, cam.ViewportToWorldPoint(new Vector3(maxX, minY + segY, bbLineRendererDepth)));
            bbRend[2].SetPosition(1, cam.ViewportToWorldPoint(new Vector3(maxX, minY, bbLineRendererDepth)));
            bbRend[2].SetPosition(2, cam.ViewportToWorldPoint(new Vector3(maxX - segX, minY, bbLineRendererDepth)));

            bbRend[3].SetPosition(0, cam.ViewportToWorldPoint(new Vector3(minX + segX, minY, bbLineRendererDepth)));
            bbRend[3].SetPosition(1, cam.ViewportToWorldPoint(new Vector3(minX, minY, bbLineRendererDepth)));
            bbRend[3].SetPosition(2, cam.ViewportToWorldPoint(new Vector3(minX, minY + segY, bbLineRendererDepth)));

            //float seg;
            //if (Time.time - boundingBoxLineStretchTimerRef < boundingBoxLineStretchTime) {
            //    seg = (minDimLength * (distanceToTarget / 500) * (bCam.GetFOV() * 0.01f) + 0.5f) * (Time.time - boundingBoxLineStretchTimerRef) / boundingBoxLineStretchTime;
            //}
            //else {
            //    seg = (minDimLength * (distanceToTarget / 500) * (bCam.GetFOV() * 0.01f) + 0.5f);
            //}
            //float segWidth = 0.01f * distanceToTarget * (bCam.GetFOV() * 0.01f) + 0.1f;

            //for (int i = 0; i < bbRend.Length; i++) {
            //    bbRend[i].enabled = true;
            //    bbRend[i].positionCount = 5;
            //    bbRend[i].startWidth = segWidth;
            //    bbRend[i].endWidth = segWidth;
            //}

            //bbRend[0].SetPosition(1, corner1 + new Vector3(-seg, 0, 0));
            //bbRend[1].SetPosition(0, corner1);
            //bbRend[1].SetPosition(1, corner1 + new Vector3(0, -seg, 0));
            //bbRend[2].SetPosition(0, corner1);
            //bbRend[2].SetPosition(1, corner1 + new Vector3(0, 0, -seg));

            //bbRend[3].SetPosition(0, corner2);
            //bbRend[3].SetPosition(1, corner2 + new Vector3(seg, 0, 0));
            //bbRend[4].SetPosition(0, corner2);
            //bbRend[4].SetPosition(1, corner2 + new Vector3(0, -seg, 0));
            //bbRend[5].SetPosition(0, corner2);
            //bbRend[5].SetPosition(1, corner2 + new Vector3(0, 0, -seg));

            //bbRend[6].SetPosition(0, corner3);
            //bbRend[6].SetPosition(1, corner3 + new Vector3(-seg, 0, 0));
            //bbRend[7].SetPosition(0, corner3);
            //bbRend[7].SetPosition(1, corner3 + new Vector3(0, -seg, 0));
            //bbRend[8].SetPosition(0, corner3);
            //bbRend[8].SetPosition(1, corner3 + new Vector3(0, 0, seg));

            //bbRend[9].SetPosition(0, corner4);
            //bbRend[9].SetPosition(1, corner4 + new Vector3(seg, 0, 0));
            //bbRend[10].SetPosition(0, corner4);
            //bbRend[10].SetPosition(1, corner4 + new Vector3(0, -seg, 0));
            //bbRend[11].SetPosition(0, corner4);
            //bbRend[11].SetPosition(1, corner4 + new Vector3(0, 0, seg));

            //bbRend[12].SetPosition(0, corner5);
            //bbRend[12].SetPosition(1, corner5 + new Vector3(-seg, 0, 0));
            //bbRend[13].SetPosition(0, corner5);
            //bbRend[13].SetPosition(1, corner5 + new Vector3(0, seg, 0));
            //bbRend[14].SetPosition(0, corner5);
            //bbRend[14].SetPosition(1, corner5 + new Vector3(0, 0, -seg));

            //bbRend[15].SetPosition(0, corner6);
            //bbRend[15].SetPosition(1, corner6 + new Vector3(seg, 0, 0));
            //bbRend[16].SetPosition(0, corner6);
            //bbRend[16].SetPosition(1, corner6 + new Vector3(0, seg, 0));
            //bbRend[17].SetPosition(0, corner6);
            //bbRend[17].SetPosition(1, corner6 + new Vector3(0, 0, -seg));

            //bbRend[18].SetPosition(0, corner7);
            //bbRend[18].SetPosition(1, corner7 + new Vector3(-seg, 0, 0));
            //bbRend[19].SetPosition(0, corner7);
            //bbRend[19].SetPosition(1, corner7 + new Vector3(0, seg, 0));
            //bbRend[20].SetPosition(0, corner7);
            //bbRend[20].SetPosition(1, corner7 + new Vector3(0, 0, seg));

            //bbRend[21].SetPosition(0, corner8);
            //bbRend[21].SetPosition(1, corner8 + new Vector3(seg, 0, 0));
            //bbRend[22].SetPosition(0, corner8);
            //bbRend[22].SetPosition(1, corner8 + new Vector3(0, seg, 0));
            //bbRend[23].SetPosition(0, corner8);
            //bbRend[23].SetPosition(1, corner8 + new Vector3(0, 0, seg));
        }
    }