예제 #1
0
        public void addRetained(EngineLayer retainedLayer)
        {
            D.assert(retainedLayer is _EngineLayerWrapper);
            D.assert(() => {
                _EngineLayerWrapper layer = retainedLayer as _EngineLayerWrapper;

                void recursivelyCheckChildrenUsedOnce(_EngineLayerWrapper parentLayer)
                {
                    _debugCheckUsedOnce(parentLayer, "retained layer");
                    parentLayer._debugCheckNotUsedAsOldLayer();

                    if (parentLayer._debugChildren == null || parentLayer._debugChildren.isEmpty())
                    {
                        return;
                    }

                    parentLayer._debugChildren.ForEach(recursivelyCheckChildrenUsedOnce);
                }

                recursivelyCheckChildrenUsedOnce(layer);

                return(true);
            });

            _EngineLayerWrapper wrapper = retainedLayer as _EngineLayerWrapper;

            SceneBuilder_addRetained(_ptr, wrapper._ptr);
        }
예제 #2
0
        bool _debugPushLayer(_EngineLayerWrapper newLayer)
        {
            D.assert(() => {
                if (_layerStack.isNotEmpty())
                {
                    _EngineLayerWrapper currentLayer = _layerStack.last();
                    currentLayer._debugChildren      = currentLayer._debugChildren ?? new List <_EngineLayerWrapper>();
                    currentLayer._debugChildren.Add(newLayer);
                }

                _layerStack.Add(newLayer);
                return(true);
            });
            return(true);
        }
예제 #3
0
        bool _debugCheckCanBeUsedAsOldLayer(_EngineLayerWrapper layer, string methodName)
        {
            D.assert(() => {
                if (layer == null)
                {
                    return(true);
                }

                layer._debugCheckNotUsedAsOldLayer();
                D.assert(_debugCheckUsedOnce(layer, $"oldLayer in {methodName}"));
                layer._debugWasUsedAsOldLayer = true;
                return(true);
            });
            return(true);
        }