ModelData ModelDataClone(ModelData source) { ModelData dest = new ModelData(); dest.xyz = new float[source.GetXyzCount()]; for (int i = 0; i < source.GetXyzCount(); i++) { dest.xyz[i] = source.xyz[i]; } dest.uv = new float[source.GetUvCount()]; for (int i = 0; i < source.GetUvCount(); i++) { dest.uv[i] = source.uv[i]; } dest.rgba = new byte[source.GetRgbaCount()]; for (int i = 0; i < source.GetRgbaCount(); i++) { dest.rgba[i] = source.rgba[i]; } dest.indices = new int[source.GetIndicesCount()]; for (int i = 0; i < source.GetIndicesCount(); i++) { dest.indices[i] = source.indices[i]; } dest.SetVerticesCount(source.GetVerticesCount()); dest.SetIndicesCount(source.GetIndicesCount()); return(dest); }
public int Add(ModelData modelData, bool transparent, int texture, float centerX, float centerY, float centerZ, float radius) { int id; if (emptyCount > 0) { id = empty[emptyCount - 1]; emptyCount--; } else { id = modelsCount; modelsCount++; } Model model = game.platform.CreateModel(modelData); ListInfo li = models[id]; li.indicescount = modelData.GetIndicesCount(); li.centerX = centerX; li.centerY = centerY; li.centerZ = centerZ; li.radius = radius; li.transparent = transparent; li.empty = false; li.texture = GetTextureId(texture); li.model = model; return(id); }
public int Add(ModelData modelData, bool transparent, int texture, float centerX, float centerY, float centerZ, float radius) { int id; if (emptyCount > 0) { id = empty[emptyCount - 1]; emptyCount--; } else { id = modelsCount; modelsCount++; } Model model = game.platform.CreateModel(modelData); ListInfo li = models[id]; li.indicescount = modelData.GetIndicesCount(); li.centerX = centerX; li.centerY = centerY; li.centerZ = centerZ; li.radius = radius; li.transparent = transparent; li.empty = false; li.texture = GetTextureId(texture); li.model = model; return id; }
ModelData ModelDataClone(ModelData source) { ModelData dest = new ModelData(); #if !CITO unchecked { #endif dest.xyz = new float[source.GetXyzCount()]; for (int i = 0; i < source.GetXyzCount(); i++) { dest.xyz[i] = source.xyz[i]; } dest.uv = new float[source.GetUvCount()]; for (int i = 0; i < source.GetUvCount(); i++) { dest.uv[i] = source.uv[i]; } dest.rgba = new byte[source.GetRgbaCount()]; for (int i = 0; i < source.GetRgbaCount(); i++) { dest.rgba[i] = source.rgba[i]; } dest.indices = new int[source.GetIndicesCount()]; for (int i = 0; i < source.GetIndicesCount(); i++) { dest.indices[i] = source.indices[i]; } dest.SetVerticesCount(source.GetVerticesCount()); dest.SetIndicesCount(source.GetIndicesCount()); #if !CITO } #endif return dest; }
public override void DrawModelData(ModelData data) { GL.EnableClientState(ArrayCap.VertexArray); GL.EnableClientState(ArrayCap.ColorArray); GL.EnableClientState(ArrayCap.TextureCoordArray); float[] dataXyz = data.getXyz(); float[] dataUv = data.getUv(); byte[] dataRgba = data.getRgba(); for (int i = 0; i < data.GetXyzCount(); i++) { xyz[i] = dataXyz[i]; } for (int i = 0; i < data.GetUvCount(); i++) { uv[i] = dataUv[i]; } if (dataRgba == null) { for (int i = 0; i < data.GetRgbaCount(); i++) { rgba[i] = 255; } } else { for (int i = 0; i < data.GetRgbaCount(); i++) { rgba[i] = dataRgba[i]; } } GL.VertexPointer(3, VertexPointerType.Float, 3 * 4, xyz); GL.ColorPointer(4, ColorPointerType.UnsignedByte, 4 * 1, rgba); GL.TexCoordPointer(2, TexCoordPointerType.Float, 2 * 4, uv); BeginMode beginmode = BeginMode.Triangles; if (data.getMode() == DrawModeEnum.Triangles) { beginmode = BeginMode.Triangles; GL.Enable(EnableCap.Texture2D); } else if (data.getMode() == DrawModeEnum.Lines) { beginmode = BeginMode.Lines; GL.Disable(EnableCap.Texture2D); } else { throw new Exception(); } int[] dataIndices = data.getIndices(); for (int i = 0; i < data.GetIndicesCount(); i++) { indices[i] = (ushort)dataIndices[i]; } GL.DrawElements(beginmode, data.GetIndicesCount(), DrawElementsType.UnsignedShort, indices); GL.DisableClientState(ArrayCap.VertexArray); GL.DisableClientState(ArrayCap.ColorArray); GL.DisableClientState(ArrayCap.TextureCoordArray); GL.Disable(EnableCap.Texture2D); }