public static TvS ConvertToSkinning <TvS>(this IVertexSkinning src) where TvS : struct, IVertexSkinning { if (src is TvS srcTyped) { return(srcTyped); } var srcWeights = src.MaxBindings > 0 ? src.GetBindings() : default; var dst = default(TvS); if (dst.MaxBindings > 0) { dst.SetBindings(srcWeights); } return(dst); }
public static TvS ConvertToSkinning <TvS>(this IVertexSkinning src) where TvS : struct, IVertexSkinning { if (src.GetType() == typeof(TvS)) { return((TvS)src); } var sparse = src.MaxBindings > 0 ? src.GetWeights() : default; var dst = default(TvS); if (dst.MaxBindings > 0) { dst.SetWeights(sparse); } return(dst); }
public static string _GetDebuggerDisplay(IVertexSkinning skin) { var txt = string.Empty; for (int i = 0; i < skin.MaxBindings; ++i) { var(joint, weight) = skin.GetBinding(i); if (weight == 0) { continue; } if (txt.Length != 0) { txt += " "; } txt += $"<𝐉:{joint} 𝐖:{weight}>"; } return(txt); }