private static Mesh.PrimitiveFlags ConvertPrimitiveFlags(MeshConnectivityBuilder.PrimitiveFlags flags) { Mesh.PrimitiveFlags newFlags = 0; newFlags |= (flags & MeshConnectivityBuilder.PrimitiveFlags.IsTrianglePair) != 0 ? Mesh.PrimitiveFlags.IsTrianglePair : Mesh.PrimitiveFlags.IsTriangle; if ((flags & MeshConnectivityBuilder.PrimitiveFlags.IsFlatConvexQuad) == MeshConnectivityBuilder.PrimitiveFlags.IsFlatConvexQuad) { newFlags |= Mesh.PrimitiveFlags.IsQuad; } return(newFlags); }
public void AabbLeaf <T>(OverlapAabbInput input, int primitiveKey, [NoAlias] ref T collector) where T : struct, IOverlapCollector { fixed(uint *keys = m_Keys) { keys[m_NumKeys++] = new ColliderKey(m_NumColliderKeyBits, (uint)(primitiveKey << 1)).Value; Mesh.PrimitiveFlags flags = m_Mesh->GetPrimitiveFlags(primitiveKey); if (Mesh.IsPrimitiveFlagSet(flags, Mesh.PrimitiveFlags.IsTrianglePair) && !Mesh.IsPrimitiveFlagSet(flags, Mesh.PrimitiveFlags.IsQuad)) { keys[m_NumKeys++] = new ColliderKey(m_NumColliderKeyBits, (uint)(primitiveKey << 1) | 1).Value; } } if (m_NumKeys > k_MaxKeys - 8) { Flush(ref collector); } }
private bool HasFlag(Mesh.PrimitiveFlags self, Mesh.PrimitiveFlags flag) { return((self & flag) == flag); }