diff --git a/GlitchyEngine/src/Renderer/BufferCollection.bf b/GlitchyEngine/src/Renderer/BufferCollection.bf index 8893d3f..7700056 100644 --- a/GlitchyEngine/src/Renderer/BufferCollection.bf +++ b/GlitchyEngine/src/Renderer/BufferCollection.bf @@ -7,31 +7,37 @@ namespace GlitchyEngine.Renderer { typealias BufferEntry = (String Name, int Index, Buffer Buffer, bool OwnsBuffer); - List _buffers ~ delete:append _; + List _buffers ~ DeleteBufferEntries!(_); - Dictionary _strToBuf ~ delete:append _; - Dictionary _idxToBuf ~ delete:append _; + Dictionary _strToBuf ~ delete _; //delete:append _; + Dictionary _idxToBuf ~ delete _; //delete:append _; [AllowAppend] public this() { - let buffers = append List(); - let strToBuf = append Dictionary(); - let idxToBuf = append Dictionary(); + // Todo: append allocate as soon as it's fixed + let buffers = new List(); + let strToBuf = new Dictionary(); + let idxToBuf = new Dictionary(); _buffers = buffers; _strToBuf = strToBuf; _idxToBuf = idxToBuf; } - - public ~this() + + mixin DeleteBufferEntries(List entries) { - for(let entry in _buffers) + if(entries == null) + return; + + for(let entry in entries) { delete entry.Name; if(entry.OwnsBuffer) delete entry.Buffer; } + + delete entries; } public Buffer this[int idx] => _idxToBuf[idx]; diff --git a/GlitchyEngine/src/Renderer/Shader.bf b/GlitchyEngine/src/Renderer/Shader.bf index 8ad38e4..ec74f36 100644 --- a/GlitchyEngine/src/Renderer/Shader.bf +++ b/GlitchyEngine/src/Renderer/Shader.bf @@ -23,7 +23,7 @@ namespace GlitchyEngine.Renderer { protected GraphicsContext _context; - protected BufferCollection _buffers ~ delete:append _; + protected BufferCollection _buffers ~ delete _;//:append _; public GraphicsContext Context => _context; @@ -32,7 +32,8 @@ namespace GlitchyEngine.Renderer [AllowAppend] public this(GraphicsContext context, String source, String entryPoint, ShaderDefine[] macros = null) { - let buffers = append BufferCollection(); + // Todo: append as soon as it's fixed. + let buffers = new BufferCollection(); _buffers = buffers; _context = context;