Replaced RefCounted with RefCounter

This commit is contained in:
Simon Lübeß
2021-10-13 09:52:12 +02:00
parent 2cd9ab3e69
commit 84daee95e4
18 changed files with 60 additions and 25 deletions
+17
View File
@@ -0,0 +1,17 @@
using System;
namespace GlitchyEngine.Core
{
/**
* Provides a reference counter that, when reaching 0, automatically deletes itself.
* Implements the IDisposable interface so that it can be used with a using-Block so that the counter
* will be decremented automatically after leaving the block.
*/
public class RefCounter : System.RefCounted, IDisposable
{
public void Dispose()
{
ReleaseRef();
}
}
}
+5 -4
View File
@@ -1,20 +1,21 @@
using System;
using DirectX.Common;
using GlitchyEngine.Core;
namespace GlitchyEngine
{
static
{
/// Releases the reference to destination, writes newValue into it and adds a reference to newValue.
public static mixin SetReference<T>(T destination, T newValue) where T: RefCounted
public static mixin SetReference<T>(T destination, T newValue) where T: RefCounter
{
destination?.ReleaseRef();
var oldDest = destination;
destination = newValue;
destination?.AddRef();
oldDest?.ReleaseRef();
}
/// Releases the reference to value and nullifies it.
public static mixin ReleaseRefAndNullify<T>(T value) where T: RefCounted
public static mixin ReleaseRefAndNullify<T>(T value) where T: RefCounter
{
value?.ReleaseRef();
value = null;
@@ -1,5 +1,6 @@
using GlitchyEngine.Math;
using System;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
namespace GlitchyEngine.Renderer.Animation
{
@@ -64,7 +65,7 @@ namespace GlitchyEngine.Renderer.Animation
}
}
class AnimationClip : RefCounted
class AnimationClip : RefCounter
{
private Skeleton _skeleton ~ _.ReleaseRef();
//public float FramesPerSecond;
@@ -1,9 +1,9 @@
using System;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
namespace GlitchyEngine.Renderer.Animation
{
public class Skeleton : RefCounted
public class Skeleton : RefCounter
{
public Joint[] Joints ~ delete _;
+3 -1
View File
@@ -1,5 +1,7 @@
using System;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
namespace GlitchyEngine.Renderer
{
public struct BlendStateDescription
@@ -70,7 +72,7 @@ namespace GlitchyEngine.Renderer
public static readonly Self Default = .(false, false, .(.Default, .Default, .Default, .Default, .Default, .Default, .Default, .Default));
}
public class BlendState : RefCounted
public class BlendState : RefCounter
{
protected GraphicsContext _context ~ _?.ReleaseRef();
+2 -1
View File
@@ -1,4 +1,5 @@
using System;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
@@ -80,7 +81,7 @@ namespace GlitchyEngine.Renderer
}
/// Represents a buffer containing binary data on the GPU.
public class Buffer : RefCounted
public class Buffer : RefCounter
{
internal GraphicsContext _context ~ _?.ReleaseRef();
@@ -1,4 +1,5 @@
using System;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
public enum DepthStencilFormat
@@ -11,7 +12,7 @@ namespace GlitchyEngine.Renderer
}
// TODO: add all features.
public class DepthStencilTarget : RefCounted
public class DepthStencilTarget : RefCounter
{
protected internal GraphicsContext _context ~ _?.ReleaseRef();
+2 -1
View File
@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Collections;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
@@ -89,7 +90,7 @@ namespace GlitchyEngine.Renderer
public bool Exists(String effectName) => _effects.ContainsKey(effectName);
}
public class Effect : RefCounted
public class Effect : RefCounter
{
protected GraphicsContext _context ~ _?.ReleaseRef();
internal VertexShader _vs ~ _?.ReleaseRef();
@@ -1,9 +1,10 @@
using System;
using System.Collections;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
public class GeometryBinding : RefCounted
public class GeometryBinding : RefCounter
{
internal GraphicsContext _context ~ _?.ReleaseRef();
@@ -1,9 +1,10 @@
using GlitchyEngine.Math;
using System;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
namespace GlitchyEngine.Renderer
{
public class GraphicsContext : RefCounted
public class GraphicsContext : RefCounter
{
private RasterizerState _currentRasterizerState;
+2 -1
View File
@@ -1,12 +1,13 @@
using System;
using System.Collections;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
using internal GlitchyEngine.Renderer;
namespace GlitchyEngine.Renderer
{
public class Material : RefCounted
public class Material : RefCounter
{
private Effect _effect ~ _?.ReleaseRef();
@@ -1,4 +1,6 @@
using System;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
public enum FillMode
@@ -50,7 +52,7 @@ namespace GlitchyEngine.Renderer
public static readonly RasterizerStateDescription Default = .(.Solid, .Back, false, 0, 0f, 0f, true, false, false, false);
}
public class RasterizerState : RefCounted
public class RasterizerState : RefCounter
{
internal GraphicsContext _context ~ _?.ReleaseRef();
private RasterizerStateDescription _description;
+3 -2
View File
@@ -1,4 +1,5 @@
using System;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
public struct RenderTarget2DDescription
@@ -32,7 +33,7 @@ namespace GlitchyEngine.Renderer
}
}
public class RenderTarget2D : RefCounted
public class RenderTarget2D : RefCounter
{
internal GraphicsContext _context;
+2 -1
View File
@@ -1,4 +1,5 @@
using System;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
using System.Collections;
@@ -285,7 +286,7 @@ namespace GlitchyEngine.Renderer
}
}
public class SamplerState : RefCounted
public class SamplerState : RefCounter
{
protected GraphicsContext _context ~ _?.ReleaseRef();
+2 -1
View File
@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Collections;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
@@ -18,7 +19,7 @@ namespace GlitchyEngine.Renderer
}
}
public abstract class Shader : RefCounted
public abstract class Shader : RefCounter
{
protected GraphicsContext _context ~ _?.ReleaseRef();
+2 -1
View File
@@ -1,6 +1,7 @@
using System;
using FreeType;
using GlitchyEngine.Math;
using GlitchyEngine.Core;
using System.Collections;
using msdfgen;
@@ -8,7 +9,7 @@ using internal GlitchyEngine.Renderer.Text;
namespace GlitchyEngine.Renderer.Text
{
public class Font : RefCounted
public class Font : RefCounter
{
internal class GlyphDescriptor
{
+2 -1
View File
@@ -1,9 +1,10 @@
using System;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
namespace GlitchyEngine.Renderer
{
public abstract class Texture : RefCounted
public abstract class Texture : RefCounter
{
protected GraphicsContext _context ~ _?.ReleaseRef();
+2 -1
View File
@@ -1,4 +1,5 @@
using System;
using GlitchyEngine.Core;
namespace GlitchyEngine.Renderer
{
@@ -78,7 +79,7 @@ namespace GlitchyEngine.Renderer
public static readonly uint32 AppendAligned = 0xffffffff;
}
public class VertexLayout : RefCounted
public class VertexLayout : RefCounter
{
private GraphicsContext _context ~ _?.ReleaseRef();