Fixes for setting values in UserData
This commit is contained in:
parent
4a91629f98
commit
21e6d3af24
|
@ -30,8 +30,8 @@ namespace PorygonSharp.UserData
|
||||||
});
|
});
|
||||||
var setter = new SetterDelegate((ptr, val) =>
|
var setter = new SetterDelegate((ptr, val) =>
|
||||||
{
|
{
|
||||||
var evalValue = new EvalValue(val).GetObjectValue();
|
var obj = GCHandle.FromIntPtr(ptr).Target;
|
||||||
var obj = GCHandle.FromIntPtr(ptr).Target;
|
var evalValue = Convert.ChangeType(new EvalValue(val).GetObjectValue(), field.FieldType);
|
||||||
field.SetValue(obj, evalValue);
|
field.SetValue(obj, evalValue);
|
||||||
});
|
});
|
||||||
var scriptType = ScriptType.ScriptType.GetScriptType(field.FieldType);
|
var scriptType = ScriptType.ScriptType.GetScriptType(field.FieldType);
|
||||||
|
|
|
@ -138,12 +138,35 @@ end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Test10()
|
||||||
|
{
|
||||||
|
UserDataHandler.RegisterType("testObject", typeof(UserDataTestObject));
|
||||||
|
using (var script = Script.CreateScript(@"
|
||||||
|
function test(testObject v)
|
||||||
|
v['Foo'] = 20000
|
||||||
|
end
|
||||||
|
"))
|
||||||
|
{
|
||||||
|
var diags = script.Diagnostics.GetDiagnostics();
|
||||||
|
foreach (var diag in diags)
|
||||||
|
{
|
||||||
|
throw new Exception(diag.GetCode().ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
script.Evaluate();
|
||||||
|
|
||||||
|
var parameter = new UserDataTestObject();
|
||||||
|
script.CallFunction("test", parameter);
|
||||||
|
Assert.AreEqual(20000, parameter.Foo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestHash()
|
public void TestHash()
|
||||||
{
|
{
|
||||||
var hash = HashedString.ScriptHash("Foo");
|
var hash = HashedString.ScriptHash("Foo");
|
||||||
Assert.AreEqual(193501609, hash);
|
Assert.AreEqual(193501609, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue