Exemplo n.º 1
0
    private void DoScan()
    {
        Camera cam = _controlServices.ControlledCamera.Camera;

        if (!cam)
        {
            DisableScannedObject();
            return;
        }

        Ray        r = cam.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;

        if (!Physics.Raycast(r, out hitInfo, _maxGrabDistance))
        {
            DisableScannedObject();
            return;
        }

        GameObject      hitObject = hitInfo.collider.gameObject;
        ScannableObject scannable = hitObject.GetComponent <ScannableObject>();

        if (scannable != _highlighted)
        {
            DisableScannedObject();
            EnableScannedObject(scannable);
            return;
        }
    }
Exemplo n.º 2
0
    void ScanClosestObject()
    {
        currentIndex = (currentIndex < currentScannedObjects.Count) ? currentIndex : 0;

        Debug.Log(currentIndex);

        currentActive = currentScannedObjects[currentIndex].scannedableObject;
        activeChanged = true;
    }
Exemplo n.º 3
0
 private void DisableScannedObject()
 {
     if (_highlighted)
     {
         _highlighted.enabled = false;
         _highlighted         = null;
         MetablastUI.Instance.HudView.ContextMessageView.SetLowPriorityText("");
     }
 }
Exemplo n.º 4
0
 private void EnableScannedObject(ScannableObject scannable)
 {
     if (scannable)
     {
         scannable.enabled = true;
         _highlighted      = scannable;
         MetablastUI.Instance.HudView.ContextMessageView.SetLowPriorityText("Click to grab " + _highlighted.BiologEntry);
     }
 }
Exemplo n.º 5
0
    // Update is called once per frame
    void Update()
    {
        if (scan)
        {
            scanTimer -= Time.deltaTime;

            foreach (ScannedObject currentObject in currentScannedObjects)
            {
                Material mat = currentObject.scannedableObject.GetComponent <Renderer>().material;

                mat.SetFloat("_ScanPower", Mathf.PingPong(Time.time, 1f) * scanPower);
            }

            if (currentActive != null && activeChanged)
            {
                currentActive.baseObject.Unscan();
                activeChanged = false;
                currentActive.baseObject.ScanObject();
            }

            if (currentActive != null)
            {
                Material mat = currentActive.GetComponent <Renderer>().material;

                mat.SetFloat("_ScanPower", Mathf.PingPong(Time.time, 1f) * activeScanPower);
            }

            if (scanTimer <= 0f)
            {
                scan = false;
                foreach (ScannedObject currentObject in currentScannedObjects)
                {
                    Material mat = currentObject.scannedableObject.GetComponent <Renderer>().material;

                    mat.SetFloat("_ScanPower", 0f);
                }

                if (currentActive != null)
                {
                    currentActive.baseObject.Unscan();
                }

                currentActive = null;

                scanTimer = 0f;

                currentScannedObjects.Clear();

                particleSystem.Stop();
            }
        }
    }
Exemplo n.º 6
0
    public ObjectScannedLogEntry(Guid userGuid, ScannableObject scannedObject)
        : base(userGuid)
    {
        Vector3 position = scannedObject.transform.position;

        _data = JsonConvert.SerializeObject(
            new
        {
            BiologEntry = scannedObject.BiologEntry,
            GameObject  = new
            {
                Name     = scannedObject.gameObject.name,
                Location = new { X = position.x, Y = position.y, Z = position.z }
            }
        });
    }
Exemplo n.º 7
0
 private void EnableScannedObject(ScannableObject scannable)
 {
     if (scannable)
     {
         scannable.enabled = true;
         _highlighted      = scannable;
         if (GameContext.Instance.Player.BiologProgress.IsEntryUnlocked(scannable.BiologEntry))
         {
             MetablastUI.Instance.HudView.ContextMessageView.SetLowPriorityText("Left click to scan " + _highlighted.BiologEntry);
         }
         else
         {
             MetablastUI.Instance.HudView.ContextMessageView.SetLowPriorityText("Left click to scan unknown object");
         }
     }
 }
Exemplo n.º 8
0
    void ScanForObjects()
    {
        currentScannedObjects.Clear();

        Collider[] objects = Physics.OverlapSphere(transform.position, scanRadius);

        foreach (Collider currentObject in objects)
        {
            ScannableObject relay = currentObject.transform.GetComponent <ScannableObject>();
            if (relay != null)
            {
                float distance = Vector3.Distance(currentObject.transform.position, transform.position);

                currentScannedObjects.Add(new ScannedObject()
                {
                    scannedableObject = relay, initalDistance = distance
                });
            }
        }

        currentScannedObjects.Sort((a, b) => a.initalDistance > b.initalDistance ? 1 : -1);
    }
Exemplo n.º 9
0
 public ScannableObject Scan()
 {
     ActivateScanner(true);
     if (m_ObectToScanInRange)
     {
         //continue scanning
         if (m_timeLeftToScan > 0)
         {
             var scanCompletePerc = ScanTime > 0 ? (ScanTime - m_timeLeftToScan) / ScanTime : 1;
             m_ObectToScanInRange.OnScan(scanCompletePerc);
             m_timeLeftToScan -= Time.deltaTime;
         }
         //finish scanning
         else
         {
             m_ObectToScanInRange.OnScanStop();
             m_ScannedObject = m_ObectToScanInRange.GetScannedObject();
             return(m_ScannedObject);
         }
     }
     return(null);
 }
Exemplo n.º 10
0
    void UpdateIdle()
    {
        if (!_cameraController.Camera)
        {
            return;
        }

        Ray ray = _cameraController.Camera.ScreenPointToRay(Input.mousePosition);

        RaycastHit hitInfo;

        if (Physics.Raycast(ray, out hitInfo, _maxGrabDistance, _layerMask))
        {
            GameObject      hitObject     = hitInfo.collider.gameObject;
            GrabbableObject grabbedObject = hitObject.GetComponent <GrabbableObject>();
            ScannableObject scannable     = hitObject.GetComponent <ScannableObject>();

            if (scannable != _highlighted)
            {
                DisableScannedObject();
                EnableScannedObject(scannable);
            }
            if (!grabbedObject)
            {
                DisableScannedObject();
            }

            if (grabbedObject && !EventSystem.current.IsPointerOverGameObject() && Input.GetMouseButtonDown(0))
            {
                MetablastUI.Instance.HudView.ContextMessageView.SetLowPriorityText("");
                GrabObject(grabbedObject, hitInfo.point);
                _state = ImpulseGunState.Grabbing;
            }
        }
        else
        {
            DisableScannedObject();
        }
    }
Exemplo n.º 11
0
    public ScannableObject[] ObjectsToScan()
    {
        int numberOfScans = Random.Range(minScans, maxScans);
        List <ScannableObject> unchosenScanObjs = new List <ScannableObject>();
        List <ScannableObject> objsToRemove     = new List <ScannableObject>();

        foreach (ScannableObject so in scannableObjects)
        {
            if (so != null)
            {
                unchosenScanObjs.Add(so);
            }
            else
            {
                objsToRemove.Add(so);
            }
        }


        for (int i = 0; i < objsToRemove.Count; i++)
        {
            scannableObjects.Remove(objsToRemove[i]);
        }

        numberOfScans = Mathf.Clamp(numberOfScans, 1, scannableObjects.Count);
        ScannableObject[] chosenScanObjects = new ScannableObject[numberOfScans];

        for (int i = 0; i < numberOfScans; i++)
        {
            int randomNum = Random.Range(0, unchosenScanObjs.Count);
            chosenScanObjects[i] = unchosenScanObjs[randomNum];
            unchosenScanObjs.Remove(unchosenScanObjs[randomNum]);
        }

        return(chosenScanObjects);
    }