private Vertices readVertices (DataInput input, int vertexCount) throws IOException { int verticesLength = vertexCount << 1; Vertices vertices = new Vertices(); if (!input.readBoolean()) { vertices.vertices = readFloatArray(input, verticesLength, scale); return vertices; } FloatArray weights = new FloatArray(verticesLength * 3 * 3); IntArray bonesArray = new IntArray(verticesLength * 3); for (int i = 0; i < vertexCount; i++) { int boneCount = input.readInt(true); bonesArray.add(boneCount); for (int ii = 0; ii < boneCount; ii++) { bonesArray.add(input.readInt(true)); weights.add(input.readFloat() * scale); weights.add(input.readFloat() * scale); weights.add(input.readFloat()); } } vertices.vertices = weights.toArray(); vertices.bones = bonesArray.toArray(); return vertices; }
/** @return May be null. */ private Skin readSkin (DataInput input, String skinName, boolean nonessential) throws IOException { int slotCount = input.readInt(true); if (slotCount == 0) return null; Skin skin = new Skin(skinName); for (int i = 0; i < slotCount; i++) { int slotIndex = input.readInt(true); for (int ii = 0, nn = input.readInt(true); ii < nn; ii++) { String name = input.readString(); Attachment attachment = readAttachment(input, skin, slotIndex, name, nonessential); if (attachment != null) skin.addAttachment(slotIndex, name, attachment); } } return skin; }
private float[] readFloatArray (DataInput input, int n, float scale) throws IOException { float[] array = new float[n]; if (scale == 1) { for (int i = 0; i < n; i++) array[i] = input.readFloat(); } else { for (int i = 0; i < n; i++) array[i] = input.readFloat() * scale; } return array; }
private short[] readShortArray (DataInput input) throws IOException { int n = input.readInt(true); short[] array = new short[n]; for (int i = 0; i < n; i++) array[i] = input.readShort(); return array; }
private void readCurve (DataInput input, int frameIndex, CurveTimeline timeline) throws IOException { switch (input.readByte()) { case CURVE_STEPPED: timeline.setStepped(frameIndex); break; case CURVE_BEZIER: setCurve(timeline, frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); break; } }
/** @return May be null. */ private Skin readSkin (DataInput input, String skinName, boolean nonessential) throws IOException { int slotCount = input.readInt(true); if (slotCount == 0) return null; Skin skin = new Skin(skinName); for (int i = 0; i < slotCount; i++) { int slotIndex = input.readInt(true); for (int ii = 0, nn = input.readInt(true); ii < nn; ii++) { String name = input.readString(); skin.addAttachment(slotIndex, name, readAttachment(input, skin, name, nonessential)); } } return skin; }
private float[] readFloatArray (DataInput input, float scale) throws IOException { int n = input.readInt(true); float[] array = new float[n]; if (scale == 1) { for (int i = 0; i < n; i++) array[i] = input.readFloat(); } else { for (int i = 0; i < n; i++) array[i] = input.readFloat() * scale; } return array; }
private int[] readIntArray (DataInput input) throws IOException { int n = input.readInt(true); int[] array = new int[n]; for (int i = 0; i < n; i++) array[i] = input.readInt(true); return array; }
/** * @param path путь к карте * @param local если true, то карта в локальном хранилище, иначe в internal * (assets) */ public MapEntry(String path, boolean local) { this.local = local; this.path = path; FileHandle fh; if (local) { fh = Gdx.files.local(path); } else { fh = Gdx.files.internal(path); } if (!fh.exists()) { name = "Not found"; } else { try { ZipInputStream zis = new ZipInputStream(fh.read()); zis.getNextEntry(); DataInput data = new DataInput(zis); name = data.readUTF(); maxGamers = data.readInt(); w = data.readInt(); h = data.readInt(); data.close(); zis.close(); } catch (IOException e) { e.printStackTrace(); } } }
/** @return May be null. */ private Skin readSkin (DataInput input, String skinName, boolean nonessential) throws IOException { int slotCount = input.readInt(true); if (slotCount == 0) return null; Skin skin = new Skin(skinName); for (int i = 0; i < slotCount; i++) { int slotIndex = input.readInt(true); for (int ii = 0, nn = input.readInt(true); ii < nn; ii++) { String name = input.readString(); skin.addAttachment(slotIndex, name, readAttachment(input, skin, slotIndex, name, nonessential)); } } return skin; }