/// <summary> /// Called when play mode is entered, sets up object in SceneTrack core /// </summary> public static void EnterPlayMode() { // Bail Out Check if (InPlayMode || InstanceHandle != 0) { return; } var fileName = Cache.GetNextTakeFilename(); if (!string.IsNullOrEmpty(FilenameOverride)) { // Find next number fileName = FilenameOverride; } // Start Recording InstanceHandle = Recording.CreateRecording(); int recordTime = Mathf.Clamp(EditorPrefs.GetInt("SceneTrack_AppendRecordFrames", 2), 1, 30); int framePool = EditorPrefs.GetInt("SceneTrack_MemoryReserveFramePool", 0); int frameDataPool = EditorPrefs.GetInt("SceneTrack_MemoryReserveFrameDataPool", 0); Recording.MemoryReserve(0, framePool); Recording.MemoryReserve(1, frameDataPool); // Setup the new take for recording, writing every 2 frames Recording.AppendSaveRecording(new StringBuilder(Cache.Folder + fileName + "." + Cache.FileExtension), Format.Binary, (uint)recordTime); // Create Schema Classes.CreateSchema(); // Set Flag InPlayMode = true; }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var tuple = await DuplicateAndComputeChecksum(request); var checksum = tuple.Item1; using (var forward = tuple.Item2) { using (var response = await this.Client.SendAsync(forward, cancellationToken)) { var recording = await Recording.CreateRecording(checksum, response); recording.Response.RequestMessage = request; session.Recordings.Enqueue(recording); return(recording.Response); } } }