Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaCustomConverters.cs
Evil Factory a0c6794b01 my attempt
2021-01-12 20:52:35 -03:00

60 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using MoonSharp.Interpreter;
using Microsoft.Xna.Framework;
namespace Barotrauma
{
public static class LuaCustomConverters
{
public static void RegisterAll()
{
// Vector 2
Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Table, typeof(Vector2),
dynVal => {
Table table = dynVal.Table;
float x = (float)((Double)table[1]);
float y = (float)((Double)table[2]);
return new Vector2(x, y);
}
);
Script.GlobalOptions.CustomConverters.SetClrToScriptCustomConversion<Vector2>(
(script, vector) => {
DynValue x = DynValue.NewNumber((double)vector.X);
DynValue y = DynValue.NewNumber((double)vector.Y);
DynValue dynVal = DynValue.NewTable(script, new DynValue[] { x, y });
return dynVal;
}
);
// Vector3
Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Table, typeof(Vector3),
dynVal => {
Table table = dynVal.Table;
float x = (float)((Double)table[1]);
float y = (float)((Double)table[2]);
float z = (float)((Double)table[3]);
return new Vector3(x, y, z);
}
);
Script.GlobalOptions.CustomConverters.SetClrToScriptCustomConversion<Vector3>(
(script, vector) => {
DynValue x = DynValue.NewNumber((double)vector.X);
DynValue y = DynValue.NewNumber((double)vector.Y);
DynValue z = DynValue.NewNumber((double)vector.Z);
DynValue dynVal = DynValue.NewTable(script, new DynValue[] { x, y, z });
return dynVal;
}
);
}
}
}