-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEntry.cs
46 lines (39 loc) · 1.7 KB
/
Entry.cs
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
using System.Runtime.InteropServices;
using Microsoft.Build.Locator;
namespace ScriptingCore;
internal static partial class Entry
{
[UnmanagedCallersOnly]
// ReSharper disable once UnusedMember.Global
internal static unsafe ManagedFunctionPayload Init(UnmanagedFunctionPayload unmanagedPayload)
{
MSBuildLocator.RegisterDefaults();
Workspace.WorkspaceGetAppPath = unmanagedPayload.WorkspaceGetAppPath;
Workspace.WorkspaceGetWorkspaceDir = unmanagedPayload.WorkspaceGetWorkspaceDir;
RenderCore.RenderDevice.GetDeviceUnmanaged = unmanagedPayload.DeviceGet;
RenderCore.DeviceContext.GetDeviceContextUnmanaged = unmanagedPayload.DeviceGetContext;
RenderCore.Log.LogUnmanaged = unmanagedPayload.GraphicsLog;
Log.LogUnmanaged = unmanagedPayload.ScriptCoreLog;
Workspace.Instance.Init();
ScriptingCore.Instance.Init();
ManagedFunctionPayload managedPayload;
managedPayload.UpdateManaged = &Update;
managedPayload.RenderManaged = &Render;
managedPayload.OnSourceFileChangedManaged = &Workspace.OnSourceFileChanged;
managedPayload.BuildAssembliesManaged = &Workspace.BuildAssemblies;
managedPayload.LoadAssembliesManaged = &Workspace.LoadAssemblies;
managedPayload.UnloadAssembliesManaged = &Workspace.UnloadAssemblies;
managedPayload.BuildAndLoadAssembliesManaged = &Workspace.BuildAndLoadAssemblies;
return managedPayload;
}
[UnmanagedCallersOnly]
internal static void Update(double dt)
{
ScriptingCore.Instance.Update(dt);
}
[UnmanagedCallersOnly]
internal static void Render()
{
// ScriptingCore.Instance.Render();
}
}