UniVRM/UniGLTF/Core/Scripts/IO/TriangleUtil.cs
ousttrue 1d108052de Merge commit '2a19c831f8440eed1279b9930ef33115c61d7d82' as 'UniGLTF'
Co-authored-by: Akihiko Odaki <nekomanma@pixiv.co.jp>
Co-authored-by: Emiliana <vtemiliana@gmail.com>
Co-authored-by: junichi_hirose <junichi_hirose@dwango.co.jp>
Co-authored-by: Masataka SUMI <santarh@gmail.com>
Co-authored-by: ousttrue <oustrrue@gmail.com>
Co-authored-by: ousttrue <ousttrue@gmail.com>
Co-authored-by: TORISOUP <tori.birdstrike@gmail.com>
Co-authored-by: Yuki Shimada <emadurandal@gmail.com>
Co-authored-by: yutopp <yutopp@gmail.com>
2018-12-28 20:16:54 +09:00

52 lines
1.2 KiB
C#

using System;
using System.Linq;
using System.Collections.Generic;
public static class TriangleUtil
{
public static IEnumerable<int> FlipTriangle(IEnumerable<Byte> src)
{
return FlipTriangle(src.Select(x => (Int32)x));
}
public static IEnumerable<int> FlipTriangle(IEnumerable<UInt16> src)
{
return FlipTriangle(src.Select(x => (Int32)x));
}
public static IEnumerable<int> FlipTriangle(IEnumerable<UInt32> src)
{
return FlipTriangle(src.Select(x => (Int32)x));
}
public static IEnumerable<int> FlipTriangle(IEnumerable<Int32> src)
{
var it = src.GetEnumerator();
while (true)
{
if (!it.MoveNext())
{
yield break;
}
var i0 = it.Current;
if (!it.MoveNext())
{
yield break;
}
var i1 = it.Current;
if (!it.MoveNext())
{
yield break;
}
var i2 = it.Current;
yield return i2;
yield return i1;
yield return i0;
}
}
}