forked from 3DRadSpace/3D_Rad_Space
-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathEffectManager.cs
More file actions
52 lines (39 loc) · 1.6 KB
/
Copy pathEffectManager.cs
File metadata and controls
52 lines (39 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System.Runtime.InteropServices;
namespace Engine3DRadSpace.Graphics;
public class EffectManager : NatPtrWrapper
{
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_EffectManager_Create")]
extern static IntPtr _create();
[DllImport("3DRadSpace.FFI.dll", CharSet = CharSet.Ansi, EntryPoint = "E3DRSP_EffectManager_AddShader")]
extern static IntPtr _addShader(IntPtr manager, string name, IntPtr shader);
[DllImport("3DRadSpace.FFI.dll", CharSet = CharSet.Ansi, EntryPoint = "E3DRSP_EffectManager_AddEffect")]
extern static IntPtr _addEffect(IntPtr manager, string name, IntPtr effect);
[DllImport("3DRadSpace.FFI.dll", CharSet = CharSet.Ansi, EntryPoint = "E3DRSP_EffectManager_GetEffect")]
extern static IntPtr _getEffect(IntPtr manager, string name);
[DllImport("3DRadSpace.FFI.dll", CharSet = CharSet.Ansi, EntryPoint = "E3DRSP_EffectManager_GetShader")]
extern static IntPtr _getShader(IntPtr manager, string name);
[DllImport("3DRadSpace.FFI.dll", EntryPoint = "E3DRSP_EffectManager_Destroy")]
extern static void _destroy(IntPtr manager);
public EffectManager() : base(_create(), _destroy)
{
}
public EffectManager(IntPtr handle) : base(handle, _destroy)
{
}
public void AddShader(string name, IShader shader)
{
_addShader(_handle, name, shader.Handle);
}
public void AddEffect(string name, Effect effect)
{
_addEffect(_handle, name, effect.Handle);
}
public Effect GetEffect(string name)
{
return new Effect(_getEffect(_handle, name), ownsHandle: false);
}
public IShader GetShader(string name)
{
return new InstIShader(_getShader(_handle, name), ownsHandle: false);
}
}