public static bool HasAnyUV(this MeshBuilderChannels channels) { foreach (var channel in channels.AsEnumerable()) { if ((int)channel >= (int)MeshBuilderChannel.UV) { return(true); } } return(false); }
/// <summary> /// Starts the mesh building process. /// This method must be called before adding vertex data or geometry. /// /// <see cref="AddVertex(ref VertexData)"/> /// <see cref="AddGeometry{T}(T)"/> /// /// When done building the mesh, you can write it via <see cref="WriteMeshData(Mesh)"/>. /// To reuse the mesh builder, call <see cref="Stop"/>. /// </summary> /// <param name="channels"></param> /// <param name="topology"></param> public void Start(MeshBuilderChannels channels, MeshTopology topology = MeshTopology.Triangles) { if (this.channels != MeshBuilderChannels.INVALID) { return; } this.channels = channels; this.topology = topology; Setup(); }
public void TestChannelEnumerator() { MeshBuilderChannels channels = MeshBuilderChannels.NORMALS | MeshBuilderChannels.TANGENTS | MeshBuilderChannels.COLORS; MeshBuilderChannel[] channelsArr = new MeshBuilderChannel[] { MeshBuilderChannel.NORMALS, MeshBuilderChannel.TANGENTS, MeshBuilderChannel.COLORS }; CollectionAssert.AreEquivalent(channelsArr, channels.AsEnumerable()); channels = MeshBuilderChannels.NORMALS | MeshBuilderChannels.TANGENTS | MeshBuilderChannels.UV | MeshBuilderChannels.UV8; channelsArr = new MeshBuilderChannel[] { MeshBuilderChannel.NORMALS, MeshBuilderChannel.TANGENTS, MeshBuilderChannel.UV, MeshBuilderChannel.UV8 }; CollectionAssert.AreEquivalent(channelsArr, channels.AsEnumerable()); }
public Enumerator(MeshBuilderChannels channels) { this.channels = channels; this.current = MeshBuilderChannel.INVALID; }
public ChannelsEnumerable(MeshBuilderChannels channels) { this.channels = channels; }
public static ChannelsEnumerable AsEnumerable(this MeshBuilderChannels channels) { return(new ChannelsEnumerable(channels)); }
/// <summary> /// Immediately stops a previously started mesh build process. /// <see cref="Start(MeshBuilderChannels, MeshTopology)"/> /// /// This will drop all data currently in this mesh builder. /// After calling this, you can again call <see cref="Start(MeshBuilderChannels, MeshTopology)"/> /// </summary> public void Stop() { this.channels = MeshBuilderChannels.INVALID; this.bounds = null; }