private void Update()
        {
            _cameraMapUpdateTimer += Time.deltaTime;

            if (_cameraMapUpdateTimer > 16)
            {
                RemoveDestroyedCameras();
                _cameraMapUpdateTimer = 0;
            }

            if (_outlineResources != null && _renderers != null)
            {
                if (_updateRenderers)
                {
                    _renderers.Reset(false);
                }

                _commandBuffer.Clear();

                using (var renderer = new OutlineRenderer(_commandBuffer, BuiltinRenderTextureType.CameraTarget))
                {
                    renderer.Render(_renderers.GetList(), _outlineSettings.OutlineResources, _outlineSettings);
                }
            }
        }
Beispiel #2
0
        private void Update()
        {
            if (_outlineResources != null && _renderers != null)
            {
                _camerasToRemove.Clear();

                if (_updateRenderers)
                {
                    _renderers.Reset(false, _ignoreLayerMask);
                }

                foreach (var kvp in _cameraMap)
                {
                    var camera    = kvp.Key;
                    var cmdBuffer = kvp.Value;

                    if (camera)
                    {
                        cmdBuffer.Clear();
                        FillCommandBuffer(camera, cmdBuffer);
                    }
                    else
                    {
                        cmdBuffer.Dispose();
                        _camerasToRemove.Add(camera);
                    }
                }

                foreach (var camera in _camerasToRemove)
                {
                    _cameraMap.Remove(camera);
                }
            }
        }
 private void CreateRenderersIfNeeded()
 {
     if (_renderers == null)
     {
         _renderers = new OutlineRendererCollection(gameObject);
         _renderers.Reset(true);
     }
 }
Beispiel #4
0
 private void CreateRenderersIfNeeded()
 {
     if (_renderers == null)
     {
         _renderers = new OutlineRendererCollection(gameObject);
         _renderers.Reset(false, _layerMask);
     }
 }
Beispiel #5
0
        private void Update()
        {
            if (_outlineResources != null && _renderers != null)
            {
                _camerasToRemove.Clear();

                if (_updateRenderers)
                {
                    _renderers.Reset(false, _layerMask);
                }

                foreach (var kvp in _cameraMap)
                {
                    var camera    = kvp.Key;
                    var cmdBuffer = kvp.Value;

                    if (camera)
                    {
                        cmdBuffer.Clear();

                        if (_renderers.Count > 0)
                        {
                            using (var renderer = new OutlineRenderer(cmdBuffer, _outlineResources, camera.actualRenderingPath))
                            {
                                renderer.Render(_renderers.GetList(), _outlineSettings, name);
                            }
                        }
                    }
                    else
                    {
                        cmdBuffer.Dispose();
                        _camerasToRemove.Add(camera);
                    }
                }

                foreach (var camera in _camerasToRemove)
                {
                    _cameraMap.Remove(camera);
                }
            }
        }
        /// <inheritdoc/>
        public void Add(GameObject go)
        {
            if (go is null)
            {
                throw new ArgumentNullException(nameof(go));
            }

            if (!_outlineObjects.ContainsKey(go))
            {
                var renderers = new OutlineRendererCollection(go);
                renderers.Reset(false, _parentCollection.IgnoreLayerMask);
                _outlineObjects.Add(go, renderers);
            }
        }
        /// <summary>
        /// Adds a new object to the layer.
        /// </summary>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="go"/> is <see langword="null"/>.</exception>
        public void Add(GameObject go, int ignoreLayerMask)
        {
            if (ReferenceEquals(go, null))
            {
                throw new ArgumentNullException("go");
            }

            if (!_outlineObjects.ContainsKey(go))
            {
                var renderers = new OutlineRendererCollection(go);
                renderers.Reset(false, ignoreLayerMask);
                _outlineObjects.Add(go, renderers);
            }
        }
Beispiel #8
0
 /// <summary>
 /// Updates renderer list.
 /// </summary>
 /// <seealso cref="OutlineRenderers"/>
 public void UpdateRenderers()
 {
     _renderers?.Reset(false, _layerMask);
 }