[ModelIO] Fix MDLAnimatedQuaternion bindings (#6991)

Quaternion does need our special marshalling.
This commit is contained in:
Alex Soto 2019-09-12 10:53:42 -04:00 коммит произвёл GitHub
Родитель 5511bb7ec6
Коммит a1fba90ecb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 42 добавлений и 2 удалений

Просмотреть файл

@ -1499,6 +1499,30 @@ namespace Xamarin.BindingMethods.Generator
}
);
data.Add (
new FunctionData {
Comment = " // void func (Quaternion, double)",
Prefix = "simd__",
Variants = Variants.NonStret,
Parameters = new ParameterData [] {
new ParameterData { TypeData = Types.QuatF },
new ParameterData { TypeData = Types.Double },
},
}
);
data.Add (
new FunctionData {
Comment = " // void func (Quaterniond, double)",
Prefix = "simd__",
Variants = Variants.NonStret,
Parameters = new ParameterData [] {
new ParameterData { TypeData = Types.QuatD },
new ParameterData { TypeData = Types.Double },
},
}
);
data.Add (
new FunctionData {
Comment = " // void func (Quaternion)",
@ -1522,6 +1546,18 @@ namespace Xamarin.BindingMethods.Generator
}
);
data.Add (
new FunctionData {
Comment = " // Quaternion func (double)",
Prefix = "simd__",
Variants = Variants.All,
ReturnType = Types.QuatF,
Parameters = new ParameterData [] {
new ParameterData { TypeData = Types.Double },
},
}
);
// Required for ModelIO
data.Add (
new FunctionData {

Просмотреть файл

@ -3047,12 +3047,15 @@ namespace ModelIO {
[iOS (13,0), Mac (10,15), TV (13,0)]
[BaseType (typeof (MDLAnimatedValue))]
interface MDLAnimatedQuaternion {
[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")]
[Export ("setFloatQuaternion:atTime:")]
void SetQuaternion (Quaternion value, double atTime);
[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")]
[Export ("setDoubleQuaternion:atTime:")]
void SetQuaternion (Quaterniond value, double atTime);
[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")]
[Export ("floatQuaternionAtTime:")]
Quaternion GetFloatQuaternion (double atTime);

Просмотреть файл

@ -485,8 +485,9 @@ namespace MonoTouchFixtures.ModelIO {
var quat = new Quaternion (1.1f, 2.2f, 3.3f, 4.4f);
animatedQuat.SetQuaternion (quat, 0);
Asserts.AreEqual (quat, animatedQuat.GetFloatQuaternion (0), "A");
var returnedQuat = animatedQuat.GetFloatQuaternion (0);
Asserts.AreEqual (quat, returnedQuat, "A");
animatedQuat.Reset (TestMatrices.QuaternionArray, TestMatrices.GetTimesArray (TestMatrices.QuaternionArray.Length));
var arr = animatedQuat.GetQuaternionValues (20);
Asserts.AreEqual (TestMatrices.QuaternionArray, arr, "C1");