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); }
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); }
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); }