diff --git a/GlitchyEngine/src/Scripting/ScriptGlue.bf b/GlitchyEngine/src/Scripting/ScriptGlue.bf
index 5f7ad75..d14efe0 100644
--- a/GlitchyEngine/src/Scripting/ScriptGlue.bf
+++ b/GlitchyEngine/src/Scripting/ScriptGlue.bf
@@ -163,7 +163,7 @@ struct EngineFunctionsGeneratorAttribute : Attribute, IComptimeTypeApply
parameters.AppendF($"{csharpType}");
}
-
+
String csharpFunctionPointer = scope $" public delegate* unmanaged[Cdecl]<{parameters}{(parameters.IsEmpty ? "" : ", ")}{method.ReturnType}> {method.Name};\n";
outString.Append(csharpFunctionPointer);
}
@@ -796,9 +796,9 @@ static class ScriptGlue
}
[RegisterCall("ScriptGlue::Entity_FindEntityWithName")]
- static void Entity_FindEntityWithName(MonoString* monoName, UUID* outUuid)
+ static void Entity_FindEntityWithName(MonoString* monoName, out UUID outUuid)
{
- *outUuid = UUID(0);
+ outUuid = UUID(0);
char8* entityName = Mono.mono_string_to_utf8(monoName);
@@ -809,7 +809,7 @@ static class ScriptGlue
Mono.mono_free(entityName);
if (entityResult case .Ok(let entity))
- *outUuid = entity.UUID;
+ outUuid = entity.UUID;
}
[RegisterCall("ScriptGlue::Entity_GetScriptInstance")]
diff --git a/ScriptCore/Core/Camera.cs b/ScriptCore/Core/Camera.cs
index ba2b631..1348f3e 100644
--- a/ScriptCore/Core/Camera.cs
+++ b/ScriptCore/Core/Camera.cs
@@ -5,6 +5,7 @@ namespace GlitchyEngine.Core;
///
/// The type of projection used by a camera.
///
+[EngineClass("GlitchyEngine.World.SceneCamera.ProjectionType")]
public enum ProjectionType : byte
{
///
diff --git a/ScriptCore/Core/Transform.cs b/ScriptCore/Core/Transform.cs
index 12ede09..4d2e46e 100644
--- a/ScriptCore/Core/Transform.cs
+++ b/ScriptCore/Core/Transform.cs
@@ -99,6 +99,6 @@ public class Transform : Component
ScriptGlue.Transform_GetScale(Entity.UUID, out float3 scale);
return scale;
}
- set => ScriptGlue.Transform_SetScale(Entity.UUID, in value);
+ set => ScriptGlue.Transform_SetScale(Entity.UUID, value);
}
}
diff --git a/ScriptCore/Core/UUID.cs b/ScriptCore/Core/UUID.cs
index 01bc07a..61570ba 100644
--- a/ScriptCore/Core/UUID.cs
+++ b/ScriptCore/Core/UUID.cs
@@ -7,7 +7,7 @@ namespace GlitchyEngine.Core;
///
[DebuggerDisplay("{ToString()}")]
[EngineClass("GlitchyEngine.Core.UUID")]
-[EngineClass("GlitchyEngine.Core.AssetHandle")]
+[EngineClass("GlitchyEngine.Content.AssetHandle")]
public struct UUID
{
private ulong _uuid;
@@ -32,7 +32,7 @@ public struct UUID
/// The newly created
public static UUID CreateNew()
{
- ScriptGlue.UUID_CreateNew(out UUID id);
+ ScriptGlue.UUID_Create(out UUID id);
return id;
}
diff --git a/ScriptCore/Entity.cs b/ScriptCore/Entity.cs
index 0b09d00..fb8e9fc 100644
--- a/ScriptCore/Entity.cs
+++ b/ScriptCore/Entity.cs
@@ -21,7 +21,7 @@ public class Entity : EngineObject
///
public string Name
{
- get => ScriptGlue.Entity_GetName(_uuid);
+ get => "TODO!";//ScriptGlue.Entity_GetName(_uuid);
set => ScriptGlue.Entity_SetName(_uuid, value);
}
diff --git a/ScriptCore/Graphics/Material.cs b/ScriptCore/Graphics/Material.cs
index a5d382a..b6bc975 100644
--- a/ScriptCore/Graphics/Material.cs
+++ b/ScriptCore/Graphics/Material.cs
@@ -9,6 +9,7 @@ namespace GlitchyEngine.Graphics;
///
public class Material : Asset
{
+ [EngineClass("GlitchyEngine.Renderer.ShaderVariableType")]
internal enum ShaderVariableType : byte
{
Bool,
diff --git a/ScriptCore/Graphics/Text/HorizontalTextAlignment.cs b/ScriptCore/Graphics/Text/HorizontalTextAlignment.cs
index c71f47b..91792f3 100644
--- a/ScriptCore/Graphics/Text/HorizontalTextAlignment.cs
+++ b/ScriptCore/Graphics/Text/HorizontalTextAlignment.cs
@@ -1,8 +1,11 @@
-namespace GlitchyEngine.Graphics.Text;
+using GlitchyEngine.Core;
+
+namespace GlitchyEngine.Graphics.Text;
///
/// The horizontal alignment of text.
///
+[EngineClass("GlitchyEngine.Renderer.Text.FontRenderer.HorizontalTextAlignment")]
public enum HorizontalTextAlignment : byte
{
///
diff --git a/ScriptCore/Math/RotationAxisAngle.cs b/ScriptCore/Math/RotationAxisAngle.cs
index 425f610..01e7ba1 100644
--- a/ScriptCore/Math/RotationAxisAngle.cs
+++ b/ScriptCore/Math/RotationAxisAngle.cs
@@ -1,4 +1,5 @@
using System.Runtime.InteropServices;
+using GlitchyEngine.Core;
namespace GlitchyEngine.Math;
@@ -6,6 +7,7 @@ namespace GlitchyEngine.Math;
/// Represents a rotation around an axis by a specific angle.
///
[StructLayout(LayoutKind.Sequential, Pack=1)]
+[EngineClass("GlitchyEngine.Scripting.ScriptGlue.AxisAngle")]
public struct RotationAxisAngle
{
///
diff --git a/ScriptCore/Physics/BodyType.cs b/ScriptCore/Physics/BodyType.cs
index 9e8f1aa..6cecc9b 100644
--- a/ScriptCore/Physics/BodyType.cs
+++ b/ScriptCore/Physics/BodyType.cs
@@ -1,12 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
+using GlitchyEngine.Core;
namespace GlitchyEngine.Physics;
///
/// Describes whether the rigid body is static, dynamic or kinematic.
///
+[EngineClass("GlitchyEngine.World.Rigidbody2DComponent.BodyType")]
public enum BodyType : byte
{
///
diff --git a/ScriptCore/ScriptCore.csproj b/ScriptCore/ScriptCore.csproj
index 4878077..b6c6dc4 100644
--- a/ScriptCore/ScriptCore.csproj
+++ b/ScriptCore/ScriptCore.csproj
@@ -2,8 +2,7 @@
net9.0
latest
-
-
+
true
GlitchyEngine
true
@@ -14,8 +13,6 @@
true
true
-
-
$(ProjectDir)../generated/ScriptGlue.json
diff --git a/ScriptCore/ScriptGlue.cs b/ScriptCore/ScriptGlue.cs
index 5f8993f..bf64a5f 100644
--- a/ScriptCore/ScriptGlue.cs
+++ b/ScriptCore/ScriptGlue.cs
@@ -19,20 +19,21 @@ using GlitchyEngine.Graphics.Text;
using GlitchyEngine.Math;
using GlitchyEngine.Physics;
using GlitchyEngine.Serialization;
+using ImGuiNET;
namespace GlitchyEngine;
[StructLayout(LayoutKind.Sequential)]
internal unsafe partial struct EngineFunctions
{
- public delegate* unmanaged[Cdecl] Log_LogMessage;
+ //public delegate* unmanaged[Cdecl] Log_LogMessage;
}
///
/// All methods in here are glued to the ScriptGlue.bf in the engine.
/// TODO: This could be auto-generated fairly easily
///
-internal static partial class ScriptGlue
+internal static unsafe partial class ScriptGlue
{
#region Script Glueing infrastructure
@@ -469,429 +470,429 @@ internal static partial class ScriptGlue
#endregion
-#region Log
+//#region Log
- // public unsafe static void Log_LogMessage(GlitchyEngine.Log.LogLevel logLevel, string messagePtr, string fileNamePtr, int lineNumber)
- // {
- // fixed (char* messagePtrConverted = messagePtr) {
- // fixed (char* fileNamePtrConverted = fileNamePtr) {
- // _engineFunctions.Log_LogMessage(logLevel, messagePtrConverted, fileNamePtrConverted, lineNumber);
- // }
- // }
- //
- //
- // }
- //internal static unsafe void Log_LogMessage(Log.LogLevel logLevel, string message, string filePath, int line)
- //{
- // // unsafe
- // // {
- // // byte* mess = (byte*)Marshal.StringToCoTaskMemUTF8(message);
- // //
- // // fixed (char* messagePtr = message)
- // // fixed (char* filePathPtr = filePath)
- // // {
- // // _engineFunctions.Log_LogMessage(logLevel, messagePtr, filePathPtr, line);
- // // }
- // //
- // // Marshal.FreeCoTaskMem((IntPtr)mess);
- // // }
- //}
+// //public unsafe static void Log_LogMessage(GlitchyEngine.Log.LogLevel logLevel, string messagePtr, string fileNamePtr, int lineNumber)
+// //{
+// // fixed (char* messagePtrConverted = messagePtr) {
+// // fixed (char* fileNamePtrConverted = fileNamePtr) {
+// // _engineFunctions.Log_LogMessage(logLevel, messagePtrConverted, fileNamePtrConverted, lineNumber);
+// // }
+// // }
+// //
+// //
+// //}
+// //internal static unsafe void Log_LogMessage(Log.LogLevel logLevel, string message, string filePath, int line)
+// //{
+// // // unsafe
+// // // {
+// // // byte* mess = (byte*)Marshal.StringToCoTaskMemUTF8(message);
+// // //
+// // // fixed (char* messagePtr = message)
+// // // fixed (char* filePathPtr = filePath)
+// // // {
+// // // _engineFunctions.Log_LogMessage(logLevel, messagePtr, filePathPtr, line);
+// // // }
+// // //
+// // // Marshal.FreeCoTaskMem((IntPtr)mess);
+// // // }
+// //}
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern void Log_LogException(Exception exception);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern void Log_LogException(Exception exception);
-#endregion
+//#endregion
-#region Entity
+//#region Entity
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_Create(object scriptInstance, string? entityName, Type[]? componentTypes, out UUID entityId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_Create(object scriptInstance, string? entityName, Type[]? componentTypes, out UUID entityId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_Destroy(UUID entityId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_Destroy(UUID entityId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_CreateInstance(UUID entityId, out UUID newEntityId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_CreateInstance(UUID entityId, out UUID newEntityId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_AddComponent(UUID entityId, Type componentType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_AddComponent(UUID entityId, Type componentType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_AddComponents(UUID entityId, Type[] componentTypes);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_AddComponents(UUID entityId, Type[] componentTypes);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Entity_HasComponent(UUID entityId, Type componentType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Entity_HasComponent(UUID entityId, Type componentType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_RemoveComponent(UUID entityId, Type componentType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_RemoveComponent(UUID entityId, Type componentType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_FindEntityWithName(string name, out UUID uuid);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_FindEntityWithName(string name, out UUID uuid);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_GetScriptInstance(UUID entityId, out object? instance);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_GetScriptInstance(UUID entityId, out object? instance);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern object Entity_SetScript(UUID entityId, Type scriptType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern object Entity_SetScript(UUID entityId, Type scriptType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Entity_RemoveScript(UUID entityId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Entity_RemoveScript(UUID entityId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern string Entity_GetName(UUID entityId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern string Entity_GetName(UUID entityId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern string Entity_SetName(UUID entityId, string name);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern string Entity_SetName(UUID entityId, string name);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern void Entity_GetEditorFlags(UUID uuid, out EditorFlags flags);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern void Entity_GetEditorFlags(UUID uuid, out EditorFlags flags);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern void Entity_SetEditorFlags(UUID uuid, EditorFlags editorFlags);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern void Entity_SetEditorFlags(UUID uuid, EditorFlags editorFlags);
-#endregion Entity
+//#endregion Entity
-#region TransformComponent
+//#region TransformComponent
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetParent(UUID entityId, out UUID parentId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetParent(UUID entityId, out UUID parentId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetParent(UUID entityId, in UUID parentId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetParent(UUID entityId, in UUID parentId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetTranslation(UUID entityId, out float3 translation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetTranslation(UUID entityId, out float3 translation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetTranslation(UUID entityId, in float3 translation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetTranslation(UUID entityId, in float3 translation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetWorldTranslation(UUID entityId, out float3 translation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetWorldTranslation(UUID entityId, out float3 translation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetWorldTranslation(UUID entityId, in float3 translation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetWorldTranslation(UUID entityId, in float3 translation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetRotation(UUID entityId, out Quaternion rotation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetRotation(UUID entityId, out Quaternion rotation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetRotation(UUID entityId, in Quaternion rotation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetRotation(UUID entityId, in Quaternion rotation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetRotationEuler(UUID entityId, out float3 rotationEuler);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetRotationEuler(UUID entityId, out float3 rotationEuler);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetRotationEuler(UUID entityId, in float3 rotationEuler);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetRotationEuler(UUID entityId, in float3 rotationEuler);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetRotationAxisAngle(UUID entityId, out RotationAxisAngle translation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetRotationAxisAngle(UUID entityId, out RotationAxisAngle translation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetRotationAxisAngle(UUID entityId, RotationAxisAngle translation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetRotationAxisAngle(UUID entityId, RotationAxisAngle translation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_GetScale(UUID entityId, out float3 scale);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_GetScale(UUID entityId, out float3 scale);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Transform_SetScale(UUID entityId, in float3 scale);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Transform_SetScale(UUID entityId, in float3 scale);
-#endregion TransformComponent
+//#endregion TransformComponent
-#region RigidBody2D
+//#region RigidBody2D
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_ApplyForce(UUID entityId, in float2 force, float2 point, bool wakeUp);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_ApplyForce(UUID entityId, in float2 force, float2 point, bool wakeUp);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_ApplyForceToCenter(UUID entityId, in float2 force, bool wakeUp);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_ApplyForceToCenter(UUID entityId, in float2 force, bool wakeUp);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetPosition(UUID entityId, in float2 position);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetPosition(UUID entityId, in float2 position);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_GetPosition(UUID entityId, out float2 position);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_GetPosition(UUID entityId, out float2 position);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetRotation(UUID entityId, in float rotation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetRotation(UUID entityId, in float rotation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_GetRotation(UUID entityId, out float rotation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_GetRotation(UUID entityId, out float rotation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetLinearVelocity(UUID entityId, in float2 velocity);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetLinearVelocity(UUID entityId, in float2 velocity);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_GetLinearVelocity(UUID entityId, out float2 velocity);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_GetLinearVelocity(UUID entityId, out float2 velocity);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetAngularVelocity(UUID entityId, in float velocity);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetAngularVelocity(UUID entityId, in float velocity);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_GetAngularVelocity(UUID entityId, out float velocity);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_GetAngularVelocity(UUID entityId, out float velocity);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_GetBodyType(UUID entityId, out BodyType bodyType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_GetBodyType(UUID entityId, out BodyType bodyType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetBodyType(UUID entityId, in BodyType bodyType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetBodyType(UUID entityId, in BodyType bodyType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_IsFixedRotation(UUID entityId, out bool isFixedRotation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_IsFixedRotation(UUID entityId, out bool isFixedRotation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetFixedRotation(UUID entityId, in bool isFixedRotation);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetFixedRotation(UUID entityId, in bool isFixedRotation);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_GetGravityScale(UUID entityId, out float gravityScale);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_GetGravityScale(UUID entityId, out float gravityScale);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Rigidbody2D_SetGravityScale(UUID entityId, in float gravityScale);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Rigidbody2D_SetGravityScale(UUID entityId, in float gravityScale);
-#endregion RigidBody2D
+//#endregion RigidBody2D
-#region Camera
+//#region Camera
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetProjectionType(UUID entityId, out ProjectionType projectionType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetProjectionType(UUID entityId, out ProjectionType projectionType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetProjectionType(UUID entityId, in ProjectionType projectionType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetProjectionType(UUID entityId, in ProjectionType projectionType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetPerspectiveFovY(UUID entityId, out float fovY);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetPerspectiveFovY(UUID entityId, float fovY);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetPerspectiveFovY(UUID entityId, out float fovY);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetPerspectiveFovY(UUID entityId, float fovY);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetPerspectiveNearPlane(UUID entityId, out float nearPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetPerspectiveNearPlane(UUID entityId, float nearPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetPerspectiveNearPlane(UUID entityId, out float nearPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetPerspectiveNearPlane(UUID entityId, float nearPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetPerspectiveFarPlane(UUID entityId, out float farPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetPerspectiveFarPlane(UUID entityId, float farPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetPerspectiveFarPlane(UUID entityId, out float farPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetPerspectiveFarPlane(UUID entityId, float farPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetOrthographicHeight(UUID entityId, out float height);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetOrthographicHeight(UUID entityId, float height);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetOrthographicHeight(UUID entityId, out float height);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetOrthographicHeight(UUID entityId, float height);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetOrthographicNearPlane(UUID entityId, out float nearPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetOrthographicNearPlane(UUID entityId, float nearPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetOrthographicNearPlane(UUID entityId, out float nearPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetOrthographicNearPlane(UUID entityId, float nearPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetOrthographicFarPlane(UUID entityId, out float farPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetOrthographicFarPlane(UUID entityId, float farPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetOrthographicFarPlane(UUID entityId, out float farPlane);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetOrthographicFarPlane(UUID entityId, float farPlane);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetAspectRatio(UUID entityId, out float aspectRatio);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetAspectRatio(UUID entityId, float aspectRatio);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetAspectRatio(UUID entityId, out float aspectRatio);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetAspectRatio(UUID entityId, float aspectRatio);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_GetFixedAspectRatio(UUID entityId, out bool fixedAspectRatio);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Camera_SetFixedAspectRatio(UUID entityId, bool fixedAspectRatio);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_GetFixedAspectRatio(UUID entityId, out bool fixedAspectRatio);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Camera_SetFixedAspectRatio(UUID entityId, bool fixedAspectRatio);
-#endregion
+//#endregion
-#region Physics2D
+//#region Physics2D
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Physics2D_GetGravity(out float2 gravity);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Physics2D_GetGravity(out float2 gravity);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Physics2D_SetGravity(in float2 gravity);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Physics2D_SetGravity(in float2 gravity);
-#endregion Physics2D
+//#endregion Physics2D
-#region CircleRenderer
+//#region CircleRenderer
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void CircleRenderer_GetColor(UUID entityId, out ColorRGBA color);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void CircleRenderer_GetColor(UUID entityId, out ColorRGBA color);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void CircleRenderer_SetColor(UUID entityId, ColorRGBA color);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void CircleRenderer_SetColor(UUID entityId, ColorRGBA color);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void CircleRenderer_GetUvTransform(UUID entityId, out float4 uvTransform);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void CircleRenderer_GetUvTransform(UUID entityId, out float4 uvTransform);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void CircleRenderer_SetUvTransform(UUID entityId, float4 uvTransform);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void CircleRenderer_SetUvTransform(UUID entityId, float4 uvTransform);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void CircleRenderer_GetInnerRadius(UUID entityId, out float innerRadius);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void CircleRenderer_GetInnerRadius(UUID entityId, out float innerRadius);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void CircleRenderer_SetInnerRadius(UUID entityId, float innerRadius);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void CircleRenderer_SetInnerRadius(UUID entityId, float innerRadius);
-#endregion
+//#endregion
-#region SpriteRenderer
+//#region SpriteRenderer
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void SpriteRenderer_GetColor(UUID entityId, out ColorRGBA color);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void SpriteRenderer_GetColor(UUID entityId, out ColorRGBA color);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void SpriteRenderer_SetColor(UUID entityId, ColorRGBA color);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void SpriteRenderer_SetColor(UUID entityId, ColorRGBA color);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void SpriteRenderer_GetUvTransform(UUID entityId, out UVTransform uvTransform);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void SpriteRenderer_GetUvTransform(UUID entityId, out UVTransform uvTransform);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void SpriteRenderer_SetUvTransform(UUID entityId, UVTransform uvTransform);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void SpriteRenderer_SetUvTransform(UUID entityId, UVTransform uvTransform);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void SpriteRenderer_GetMaterial(UUID entityId, out UUID materialId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void SpriteRenderer_GetMaterial(UUID entityId, out UUID materialId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void SpriteRenderer_SetMaterial(UUID entityId, UUID materialId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void SpriteRenderer_SetMaterial(UUID entityId, UUID materialId);
-#endregion
+//#endregion
-#region TextRenderer
+//#region TextRenderer
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool TextRenderer_GetIsRichText(UUID entityId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool TextRenderer_GetIsRichText(UUID entityId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_SetIsRichText(UUID entityId, bool isRichText);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_SetIsRichText(UUID entityId, bool isRichText);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_GetText(UUID entityId, out string text);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_GetText(UUID entityId, out string text);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_SetText(UUID entityId, string text);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_SetText(UUID entityId, string text);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_GetColor(UUID entityId, out ColorRGBA color);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_GetColor(UUID entityId, out ColorRGBA color);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_SetColor(UUID entityId, ColorRGBA color);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_SetColor(UUID entityId, ColorRGBA color);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_GetHorizontalAlignment(UUID entityId, out HorizontalTextAlignment horizontalAlignment);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_GetHorizontalAlignment(UUID entityId, out HorizontalTextAlignment horizontalAlignment);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_SetHorizontalAlignment(UUID entityId, HorizontalTextAlignment horizontalAlignment);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_SetHorizontalAlignment(UUID entityId, HorizontalTextAlignment horizontalAlignment);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_GetFontSize(UUID uuid, out float fontSize);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_GetFontSize(UUID uuid, out float fontSize);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void TextRenderer_SetFontSize(UUID uuid, float fontSize);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void TextRenderer_SetFontSize(UUID uuid, float fontSize);
-#endregion
+//#endregion
-#region MeshRenderer
+//#region MeshRenderer
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void MeshRenderer_GetMaterial(UUID entityId, out UUID materialId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void MeshRenderer_GetMaterial(UUID entityId, out UUID materialId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void MeshRenderer_SetMaterial(UUID entityId, UUID materialId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void MeshRenderer_SetMaterial(UUID entityId, UUID materialId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void MeshRenderer_GetSharedMaterial(UUID entityId, out UUID materialId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void MeshRenderer_GetSharedMaterial(UUID entityId, out UUID materialId);
-#endregion
+//#endregion
-#region Math
+//#region Math
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern float modf_float(float x, out float integerPart);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern float modf_float(float x, out float integerPart);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern float2 modf_float2(float2 x, out float2 integerPart);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern float2 modf_float2(float2 x, out float2 integerPart);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern float3 modf_float3(float3 x, out float3 integerPart);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern float3 modf_float3(float3 x, out float3 integerPart);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern float4 modf_float4(float4 x, out float4 integerPart);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern float4 modf_float4(float4 x, out float4 integerPart);
-#endregion
+//#endregion
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void UUID_CreateNew(out UUID uuid);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void UUID_CreateNew(out UUID uuid);
-#region Application
+//#region Application
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Application_IsEditor();
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Application_IsEditor();
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Application_IsPlayer();
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Application_IsPlayer();
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Application_IsInEditMode();
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Application_IsInEditMode();
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Application_IsInPlayMode();
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Application_IsInPlayMode();
-#endregion
+//#endregion
-#region Serialization
+//#region Serialization
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Serialization_SerializeField(IntPtr serializationContext, SerializationType type, string name, object? value, string? fullTypeName = null);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Serialization_SerializeField(IntPtr serializationContext, SerializationType type, string name, object? value, string? fullTypeName = null);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Serialization_CreateObject(IntPtr currentContext, bool isStatic, string fullTypeName, out IntPtr context, out UUID id);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Serialization_CreateObject(IntPtr currentContext, bool isStatic, string fullTypeName, out IntPtr context, out UUID id);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern unsafe void Serialization_DeserializeField(IntPtr internalContext, SerializationType expectedType, string fieldName, byte* value, out SerializationType actualType);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern unsafe void Serialization_DeserializeField(IntPtr internalContext, SerializationType expectedType, string fieldName, byte* value, out SerializationType actualType);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern void Serialization_GetObject(IntPtr internalContext, UUID id, out IntPtr objectContext);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern void Serialization_GetObject(IntPtr internalContext, UUID id, out IntPtr objectContext);
- [MethodImpl(MethodImplOptions.InternalCall)]
- public static extern void Serialization_GetObjectTypeName(IntPtr internalContext, out string fullTypeName);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// public static extern void Serialization_GetObjectTypeName(IntPtr internalContext, out string fullTypeName);
-#endregion
+//#endregion
-#region Asset
+//#region Asset
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Asset_GetIdentifier(UUID assetId, out string text);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Asset_GetIdentifier(UUID assetId, out string text);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void Asset_SetIdentifier(UUID assetId, string text);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void Asset_SetIdentifier(UUID assetId, string text);
-#endregion
+//#endregion
-#region Material
+//#region Material
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern unsafe bool Material_SetVariable(UUID assetId, string variableName, Material.ShaderVariableType elementType, int rows, int columns, int arrayLength, void* rawData, int dataLength);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern unsafe bool Material_SetVariable(UUID assetId, string variableName, Material.ShaderVariableType elementType, int rows, int columns, int arrayLength, void* rawData, int dataLength);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Material_ResetVariable(UUID assetId, string variableName);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Material_ResetVariable(UUID assetId, string variableName);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Material_SetTexture(UUID materialId, string textureName, UUID textureId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Material_SetTexture(UUID materialId, string textureName, UUID textureId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Material_GetTexture(UUID materialId, string textureName, out UUID textureId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Material_GetTexture(UUID materialId, string textureName, out UUID textureId);
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool Material_ResetTexture(UUID materialId, string textureName);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool Material_ResetTexture(UUID materialId, string textureName);
-#endregion
+//#endregion
-#region ImGui
+//#region ImGui
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern void ImGuiExtension_ListElementGrabber();
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern void ImGuiExtension_ListElementGrabber();
- [MethodImpl(MethodImplOptions.InternalCall)]
- internal static extern bool ImGuiExtension_ShowAssetDropTarget(ref UUID assetId);
+// [MethodImpl(MethodImplOptions.InternalCall)]
+// internal static extern bool ImGuiExtension_ShowAssetDropTarget(ref UUID assetId);
-#endregion
+//#endregion
}
diff --git a/ScriptCoreGenerator/ScriptGlueGenerator.cs b/ScriptCoreGenerator/ScriptGlueGenerator.cs
index e838542..46c88c5 100644
--- a/ScriptCoreGenerator/ScriptGlueGenerator.cs
+++ b/ScriptCoreGenerator/ScriptGlueGenerator.cs
@@ -86,7 +86,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
context.RegisterSourceOutput(combinedProvider, GenerateCode);
}
- public class MappedType
+ private class MappedType
{
public string BeefTypeName;
public string? UnderlyingEnumTypeName;
@@ -95,7 +95,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
private string _cSharpTypeName;
private string _cSharpWrapperType;
- public MappedType? CSharpUnderlyingEnumType;
+ public (MappedType, TypeModifier)? CSharpUnderlyingEnumType;
public string? WrapperConvertInput;
public string? WrapperCleanupInput;
@@ -115,11 +115,37 @@ public class ScriptGlueGenerator : IIncrementalGenerator
}
}
- private static MappedType DecodeType(string beefType, Dictionary beefTypeToMappedType)
+ private enum TypeModifier
{
+ None,
+ Ref,
+ In,
+ Out
+ }
+
+ private static (MappedType Type, TypeModifier Modifier) DecodeType(string beefType, Dictionary beefTypeToMappedType)
+ {
+ TypeModifier modifier = TypeModifier.None;
+
+ if (beefType.StartsWith("ref "))
+ {
+ modifier = TypeModifier.Ref;
+ beefType = beefType.Substring(4);
+ }
+ else if (beefType.StartsWith("out "))
+ {
+ modifier = TypeModifier.Out;
+ beefType = beefType.Substring(4);
+ }
+ else if (beefType.StartsWith("in "))
+ {
+ modifier = TypeModifier.In;
+ beefType = beefType.Substring(3);
+ }
+
if (beefTypeToMappedType.TryGetValue(beefType, out MappedType? mappedType))
{
- return mappedType;
+ return (mappedType, modifier);
}
int colonIndex = beefType.IndexOf(':');
@@ -141,7 +167,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
mappedType.CSharpUnderlyingEnumType = DecodeType(underlyingEnumType, beefTypeToMappedType);
}
- return mappedType;
+ return (mappedType, modifier);
}
}
@@ -155,7 +181,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
beefTypeToMappedType[beefType] = newMapping;
beefTypeToMappedType[beefTypeName] = newMapping;
- return newMapping;
+ return (newMapping, modifier);
}
private static void InitializeTypes(Dictionary beefTypeToMappedType)
@@ -166,6 +192,42 @@ public class ScriptGlueGenerator : IIncrementalGenerator
ReturnValueConversion = null
});
+ beefTypeToMappedType.Add("Mono.MonoString*", new MappedType
+ {
+ BeefTypeName = "object /*TODO: Mono.MonoString**/",
+ ReturnValueConversion = null
+ });
+
+ beefTypeToMappedType.Add("Mono.MonoException*", new MappedType
+ {
+ BeefTypeName = "object /*TODO: Mono.MonoException**/",
+ ReturnValueConversion = null
+ });
+
+ beefTypeToMappedType.Add("Mono.MonoArray*", new MappedType
+ {
+ BeefTypeName = "object /*TODO: Mono.MonoArray**/",
+ ReturnValueConversion = null
+ });
+
+ beefTypeToMappedType.Add("Mono.MonoObject*", new MappedType
+ {
+ BeefTypeName = "object /*TODO: Mono.MonoObject**/",
+ ReturnValueConversion = null
+ });
+
+ beefTypeToMappedType.Add("Mono.MonoReflectionType*", new MappedType
+ {
+ BeefTypeName = "object /*TODO: Mono.MonoReflectionType**/",
+ ReturnValueConversion = null
+ });
+
+ beefTypeToMappedType.Add("uint8*", new MappedType
+ {
+ BeefTypeName = "uint8*",
+ CSharpTypeName = "byte*"
+ });
+
beefTypeToMappedType.Add("char16*", new MappedType
{
BeefTypeName = "char16*",
@@ -175,20 +237,45 @@ public class ScriptGlueGenerator : IIncrementalGenerator
WrapperConvertInput = "fixed (char* {0} = {1}) {{",
WrapperCleanupInput = "}}"
});
+
+ beefTypeToMappedType.Add("int32", new MappedType
+ {
+ BeefTypeName = "int32",
+ CSharpTypeName = "int"
+ });
+
+ beefTypeToMappedType.Add("GlitchyEngine.Math.Quaternion", new MappedType
+ {
+ BeefTypeName = "System.Numerics.Quaternion",
+ ReturnValueConversion = null
+ });
}
private static void GenerateFunctionPointer(GlueMethod method, Dictionary beefTypeToMappedType, StringBuilder output)
{
- MappedType returnType = DecodeType(method.ReturnType, beefTypeToMappedType);
+ var (returnType, _) = DecodeType(method.ReturnType, beefTypeToMappedType);
List parameters = new();
StringBuilder parameterText = new();
foreach (var param in method.Parameters)
{
- MappedType parameterType = DecodeType(param.Type, beefTypeToMappedType);
+ var (parameterType, parameterModifier) = DecodeType(param.Type, beefTypeToMappedType);
parameters.Add(parameterType);
+ switch (parameterModifier)
+ {
+ case TypeModifier.In:
+ parameterText.Append("in ");
+ break;
+ case TypeModifier.Out:
+ parameterText.Append("out ");
+ break;
+ case TypeModifier.Ref:
+ parameterText.Append("ref ");
+ break;
+ }
+
parameterText.Append(parameterType.CSharpTypeName);
parameterText.Append(", ");
}
@@ -206,7 +293,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
StringBuilder cleanup = new();
StringBuilder call = new();
- MappedType returnType = DecodeType(method.ReturnType, beefTypeToMappedType);
+ var (returnType, _) = DecodeType(method.ReturnType, beefTypeToMappedType);
if (returnType.ReturnValueConversion is not null)
{
@@ -217,7 +304,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
foreach (var param in method.Parameters)
{
- MappedType parameterType = DecodeType(param.Type, beefTypeToMappedType);
+ var (parameterType, parameterModifier) = DecodeType(param.Type, beefTypeToMappedType);
parameters.Add(parameterType);
if (parameterText.Length > 0)
@@ -226,8 +313,34 @@ public class ScriptGlueGenerator : IIncrementalGenerator
call.Append(", ");
}
+ switch (parameterModifier)
+ {
+ case TypeModifier.In:
+ parameterText.Append("in ");
+ break;
+ case TypeModifier.Out:
+ parameterText.Append("out ");
+ break;
+ case TypeModifier.Ref:
+ parameterText.Append("ref ");
+ break;
+ }
+
parameterText.Append($"{parameterType.CSharpWrapperType} {param.Name}");
+ switch (parameterModifier)
+ {
+ case TypeModifier.In:
+ call.Append("in ");
+ break;
+ case TypeModifier.Out:
+ call.Append("out ");
+ break;
+ case TypeModifier.Ref:
+ call.Append("ref ");
+ break;
+ }
+
if (parameterType.WrapperConvertInput is not null)
{
string convertedParamName = $"{param.Name}Converted";
@@ -289,7 +402,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
if (beefTypeName is null)
continue;
- MappedType newMapping = DecodeType(beefTypeName, beefTypeToMappedType);
+ (MappedType newMapping, _) = DecodeType(beefTypeName, beefTypeToMappedType);
newMapping.CSharpTypeName = csharpTypeName;
}
}
@@ -305,7 +418,6 @@ public class ScriptGlueGenerator : IIncrementalGenerator
unsafe internal partial struct EngineFunctions
{
- /*
""");
wrappers.Append("""
@@ -314,7 +426,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
namespace GlitchyEngine;
- unsafe internal partial class ScriptGlue
+ internal static unsafe partial class ScriptGlue
{
""");
@@ -338,20 +450,7 @@ public class ScriptGlueGenerator : IIncrementalGenerator
}
}
- //
- // foreach (var type in input.enumerations)
- // {
- // if (type is null)
- // continue;
- //
- // GenerateCode(type, output);
- // var typeNamespace = type.ContainingNamespace.IsGlobalNamespace
- // ? null
- // : $"{type.ContainingNamespace}.";
- //
- // }
-
- engineFunctions.Append("\n*/}");
+ engineFunctions.Append("\n}");
wrappers.Append("\n}");
context.AddSource("EngineFunctions.g.cs", engineFunctions.ToString());