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); } } } }
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; } }
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); }
public abstract void OnBeingScanned(ScannerData scannerData);