private void OnDestroy() { if (_childColliders != null && _childColliders.Count > 0) { foreach (Collider childCollider in _childColliders) { childCollider.enabled = true; } } if (_tempColliders != null) { foreach (CollisionControllerElement collisionControllerElement in _tempColliders) { collisionControllerElement.OnTriggerExitDelegate -= OnColliderExit; collisionControllerElement.OnCollisionEnterDelegate -= OnCollide; Destroy(collisionControllerElement.gameObject); } } _inputController?.EnableDrop(); ProjectData.GameModeChanged -= GameModeChanged; _highlight = gameObject.GetComponent <VarwinHighlightEffect>(); _highlight.SetConfiguration(_defaultHighlightConfig); }
private void HighlightObjectOnUnUse(object sender, ObjectInteraction.InteractableObjectEventArgs e) { if (_gameObject == null) { return; } VarwinHighlightEffect highlighter = _highlightOverriderGameObject ? _highlightOverriderGameObject.GetComponent <VarwinHighlightEffect>() : _gameObject.GetComponent <VarwinHighlightEffect>(); if (highlighter == null) { return; } if (highlighter.IsHighlightEnabled) { _lastHighlightedInputController?.UnHighlightObject(this, e); highlighter.SetHighlightEnabled(true); } highlighter.SetConfiguration(DefaultHighlightConfig); _lastHighlightedInputController = this; }
private void UnHighlightObject(object sender, ObjectInteraction.InteractableObjectEventArgs e) { if (_gameObject == null) { return; } VarwinHighlightEffect highlighter = _highlightOverriderGameObject ? _highlightOverriderGameObject.GetComponent <VarwinHighlightEffect>() : _gameObject.GetComponent <VarwinHighlightEffect>(); if (highlighter == null) { return; } highlighter.SetHighlightEnabled(false); if (_lastHighlightedInputController == this) { _lastHighlightedInputController = null; } else { _nextToHighlightInputController = this; } if (_nextToHighlightInputController != null) { if (_nextToHighlightInputController != this) { _nextToHighlightInputController.HighlightObject(this, e); } _nextToHighlightInputController = null; } if (sender == null) { return; } if (sender.GetType() == typeof(InputController)) { _nextToHighlightInputController = this; } }
private void AddHighLighter(IHighlightAware highlight) { DefaultHighlightConfig = highlight.HightLightConfig(); VarwinHighlightEffect highlighter = _highlightOverriderGameObject ? _highlightOverriderGameObject.GetComponent <VarwinHighlightEffect>() : _gameObject.GetComponent <VarwinHighlightEffect>(); if (highlighter == null) { highlighter = _highlightOverriderGameObject ? _highlightOverriderGameObject.AddComponent <VarwinHighlightEffect>() : _gameObject.AddComponent <VarwinHighlightEffect>(); } try { highlighter.SetConfiguration(DefaultHighlightConfig); } catch (Exception) { LogManager.GetCurrentClassLogger().Error($"Can not add highlight to game object = {_gameObject}"); } }
public void InitializeController(InputController inputController = null) { _inputController = inputController; if (_inputController != null) { _defaultHighlightConfig = _inputController.DefaultHighlightConfig; } else { var defHighlighter = gameObject.AddComponent <DefaultHightlighter>(); _defaultHighlightConfig = defHighlighter.HightLightConfig(); } _highlight = gameObject.GetComponent <VarwinHighlightEffect>(); if (_highlight == null) { _highlight = gameObject.AddComponent <VarwinHighlightEffect>(); } HightLightConfig config = new HightLightConfig(true, 0.3f, Color.red, false, 0.2f, 0.1f, 0.3f, Color.red, false, 0.8f, 0.5f, Color.red, true, 0.5f, 1.0f, Color.red); _collisionControllerHighlightConfig = config; _highlight.SetConfiguration(_collisionControllerHighlightConfig); _tempColliders = new List <CollisionControllerElement>(); _childColliders = new List <Collider>(); List <GameObject> objectsWithColliders = new List <GameObject>(); Collider[] children = GetComponentsInChildren <Collider>(); foreach (Collider child in children) { if (!child.isTrigger && child.enabled) { _childColliders.Add(child); if (!objectsWithColliders.Contains(child.gameObject)) { objectsWithColliders.Add(child.gameObject); } } } foreach (GameObject objectWithCollider in objectsWithColliders) { CollisionControllerElement triggerObject = CreateTriggersColliders(objectWithCollider); triggerObject.OnCollisionEnterDelegate += OnCollide; triggerObject.OnTriggerExitDelegate += OnColliderExit; _tempColliders.Add(triggerObject); } ProjectData.GameModeChanged += GameModeChanged; }