UniVRM/Assets/VRM10/Runtime/IO/VrmLookAtAdapter.cs
ousttrue d53942a7bd merge vrm10
* MeshUtility を UniGLTF 下に移動
* Assets/VRM10 を追加
* JsonSchemaからのコード生成 UniGLTF/Editor/Generator を追加
2021-01-07 13:37:24 +09:00

64 lines
2.3 KiB
C#

using System;
using VrmLib;
namespace UniVRM10
{
public static class LookAtAdapter
{
public static LookAtRangeMap FromGltf(this UniGLTF.Extensions.VRMC_vrm.LookAtRangeMap map)
{
return new LookAtRangeMap
{
InputMaxValue = map.InputMaxValue.Value,
OutputScaling = map.OutputScale.Value,
};
}
public static LookAtType FromGltf(this UniGLTF.Extensions.VRMC_vrm.LookAtType src)
{
switch (src)
{
case UniGLTF.Extensions.VRMC_vrm.LookAtType.bone: return LookAtType.Bone;
case UniGLTF.Extensions.VRMC_vrm.LookAtType.blendShape: return LookAtType.Expression;
}
throw new NotImplementedException();
}
public static LookAt FromGltf(this UniGLTF.Extensions.VRMC_vrm.LookAt src)
{
return new LookAt
{
OffsetFromHeadBone = src.OffsetFromHeadBone.ToVector3(),
LookAtType = src.LookAtType.FromGltf(),
HorizontalInner = src.LookAtHorizontalInner.FromGltf(),
HorizontalOuter = src.LookAtHorizontalOuter.FromGltf(),
VerticalUp = src.LookAtVerticalUp.FromGltf(),
VerticalDown = src.LookAtVerticalDown.FromGltf(),
};
}
public static UniGLTF.Extensions.VRMC_vrm.LookAtRangeMap ToGltf(this LookAtRangeMap map)
{
return new UniGLTF.Extensions.VRMC_vrm.LookAtRangeMap
{
InputMaxValue = map.InputMaxValue,
OutputScale = map.OutputScaling,
};
}
public static UniGLTF.Extensions.VRMC_vrm.LookAt ToGltf(this LookAt lookAt)
{
var dst = new UniGLTF.Extensions.VRMC_vrm.LookAt
{
LookAtType = (UniGLTF.Extensions.VRMC_vrm.LookAtType)lookAt.LookAtType,
LookAtHorizontalInner = lookAt.HorizontalInner.ToGltf(),
LookAtHorizontalOuter = lookAt.HorizontalOuter.ToGltf(),
LookAtVerticalUp = lookAt.VerticalUp.ToGltf(),
LookAtVerticalDown = lookAt.VerticalDown.ToGltf(),
OffsetFromHeadBone = lookAt.OffsetFromHeadBone.ToFloat3(),
};
return dst;
}
}
}