private void OnHandInteractionStateChanged(GameObject target, PalmState fromState, PalmState toState) { if (!_stereoCameraObjectOutline) { _stereoCameraObjectOutline = GameObject.FindObjectOfType <StereoCameraObjectOutline>(); if (!_stereoCameraObjectOutline) { return; } } InteractionObjectOutlineSettings settings = target.GetComponent <InteractionObjectOutlineSettings>(); if (settings) { OutlineObjectVisualDecorator decorator = target.GetComponent <OutlineObjectVisualDecorator>(); if (!decorator) { decorator = target.AddComponent <OutlineObjectVisualDecorator>(); decorator.hideFlags = HideFlags.HideInInspector; } //Add or remove based on the event decorator.ChangeColorBasedOnState(toState); if (toState == PalmState.Idle) { _stereoCameraObjectOutline.RemoveOutlinedObject(decorator); } else if ((toState == PalmState.Hovering || toState == PalmState.Grabbing) && fromState == PalmState.Idle) { _stereoCameraObjectOutline.AddOutlinedObject(decorator); } } }
internal void Start() { _settings = GetComponent <InteractionObjectOutlineSettings>(); OutlineMaterial.SetColor(OutlineObjectVisualDecorator.OutlineShaderColorAttributeName, _settings.ObjectHoverColor); }