Reworked Camera Movement in Replay Viewer

Finally made Replay Trimming work
Fixed and dried ReplayProcess pathTick() method
This commit is contained in:
Marius Metzger
2015-03-31 01:10:01 +02:00
parent 11e26e0129
commit becbf47088
19 changed files with 237 additions and 247 deletions

View File

@@ -1,28 +1,43 @@
package eu.crushedpixel.replaymod.studio;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import com.google.gson.JsonObject;
import net.minecraft.network.play.server.S3EPacketTeams;
import de.johni0702.replaystudio.PacketData;
import de.johni0702.replaystudio.filter.ChangeTimestampFilter;
import de.johni0702.replaystudio.filter.RemoveFilter;
import de.johni0702.replaystudio.filter.SquashFilter;
import de.johni0702.replaystudio.io.ReplayOutputStream;
import de.johni0702.replaystudio.stream.PacketStream;
import de.johni0702.replaystudio.studio.ReplayStudio;
import eu.crushedpixel.replaymod.recording.ReplayMetaData;
import eu.crushedpixel.replaymod.utils.ReplayFileIO;
public class StudioImplementation {
public static void trimReplay(InputStream replayFileStream, boolean isTmcpr, int beginning, int ending, File outputFile) throws IOException {
public static void trimReplay(File replayFile, boolean isTmcpr, int beginning, int ending, File outputFile) throws IOException {
ReplayStudio studio = new ReplayStudio();
PacketStream stream = studio.createReplayStream(replayFileStream, isTmcpr);
studio.setWrappingEnabled(false);
PacketStream stream = studio.createReplayStream(new FileInputStream(replayFile), isTmcpr);
stream.addFilter(new SquashFilter(), -1, beginning);
stream.addFilter(new RemoveFilter(), ending, -1);
outputFile.createNewFile();
ChangeTimestampFilter ctf = new ChangeTimestampFilter();
JsonObject cfg = new JsonObject();
cfg.addProperty("offset", -beginning);
ctf.init(studio, cfg);
FileOutputStream fos = new FileOutputStream(outputFile);
stream.addFilter(ctf, beginning, ending);
File temp = File.createTempFile("trimmed", "tmcpr");
temp.deleteOnExit();
FileOutputStream fos = new FileOutputStream(temp);
ReplayOutputStream out = new ReplayOutputStream(studio, fos);
PacketData packetData;
@@ -32,6 +47,15 @@ public class StudioImplementation {
for(PacketData data : stream.end()) {
out.write(data);
}
out.close();
ReplayMetaData metaData = ReplayFileIO.getMetaData(replayFile);
ending = Math.min(metaData.getDuration(), ending);
metaData.setDuration(ending-beginning);
outputFile.createNewFile();
ReplayFileIO.writeReplayFile(outputFile, temp, metaData);
}
}