private void Update()
        {
            if (m_scanningEffect.IsScanning)
            {
                // pass the color and intensity to let object determine interaction
                ScannerData scannerData = new ScannerData(m_scanningEffect.MaterialColor, m_scanningEffect.CurrentIntensity, m_scanningEffect.CurrentIntensityRatio);

                // scan all scannable every frame
                foreach (Scannable scannable in m_registeredScannables)
                {
                    if (Vector3.Distance(m_scanningEffect.ScannerOriginPosition, scannable.transform.position) <= m_scanningEffect.CurrentScanningDistance)
                    {
                        scannable.OnBeingScanned(scannerData);
                    }
                }
            }
        }
Esempio n. 2
0
        public override void OnBeingScanned(ScannerData scannerData)
        {
            if (m_isScanned)
            {
                return;
            }

            if (ColorMath.ColorDistance01(scannerData.color, targetColor) <= 0.3f)
            {
                if (OnSuccessfulScannedEvents != null)
                {
                    OnSuccessfulScannedEvents.Invoke();
                }

                m_isScanned = true;
            }
        }
Esempio n. 3
0
        public override void OnBeingScanned(ScannerData scannerData)
        {
            // already interacted , don't trigger again
            if (m_isScanned)
            {
                return;
            }

            if (ColorMath.ColorDistance01(scannerData.color, m_targetColor) <= interactThreshold)
            {
                m_light.enabled = true;
                m_isScanned     = true;

                StartCoroutine(LightUpCoroutine());
                StartCoroutine(Maintainence());
            }

            // set up command buffer
            Camera.main.AddCommandBuffer(CameraEvent.AfterForwardAlpha, m_commandBuffer);
        }
Esempio n. 4
0
 public abstract void OnBeingScanned(ScannerData scannerData);