public virtual bool MathLogic(CLS_Content env, logictoken code, object left, CLS_Content.Value right)
{
System.Reflection.MethodInfo call = null;
//var m = _type.GetMethods();
if (code == logictoken.more)//[2] = {Boolean op_GreaterThan(CLScriptExt.Vector3, CLScriptExt.Vector3)}
call = _type.GetMethod("op_GreaterThan");
else if (code == logictoken.less)//[4] = {Boolean op_LessThan(CLScriptExt.Vector3, CLScriptExt.Vector3)}
call = _type.GetMethod("op_LessThan");
else if (code == logictoken.more_equal)//[3] = {Boolean op_GreaterThanOrEqual(CLScriptExt.Vector3, CLScriptExt.Vector3)}
call = _type.GetMethod("op_GreaterThanOrEqual");
else if (code == logictoken.less_equal)//[5] = {Boolean op_LessThanOrEqual(CLScriptExt.Vector3, CLScriptExt.Vector3)}
call = _type.GetMethod("op_LessThanOrEqual");
else if (code == logictoken.equal)//[6] = {Boolean op_Equality(CLScriptExt.Vector3, CLScriptExt.Vector3)}
{
if (left == null || right.type == null)
{
return left == right.value;
}
call = _type.GetMethod("op_Equality");
if (call == null)
{
return left.Equals(right.value);
}
}
else if (code == logictoken.not_equal)//[7] = {Boolean op_Inequality(CLScriptExt.Vector3, CLScriptExt.Vector3)}
{
if (left == null || right.type == null)
{
return left != right.value;
}
call = _type.GetMethod("op_Inequality");
if (call == null)
{
return !left.Equals(right.value);
}
}
var obj = call.Invoke(null, new object[] { left, right.value });
return (bool)obj;
}