public void BeginCapture(bool captureAllPasses) { _camera = Scene.Current.FindComponent<Camera>(); if (_camera == null) { Log.Game.WriteWarning("ScreenCapturePlugin: Screen capture can only capture frames from a camera but the current scene doesn't contain one."); return; } _captureAllPasses = captureAllPasses; _frames = new BlockingCollection<CapturedFrame>(NumberOfCachedFrames); _streams.Clear(); _processingTasks = new[] { Task.Factory.StartNew(SaveBitmaps), Task.Factory.StartNew(SaveBitmaps), Task.Factory.StartNew(SaveBitmaps), Task.Factory.StartNew(SaveBitmaps) }; if (_captureAllPasses) { foreach (var pass in _camera.Passes) { var streamName = pass.ToString().Replace(" => ", "-"); var index = 0; while (_streams.ContainsKey(streamName)) streamName = streamName + "(" + index + ")"; _streams.Add(streamName, new ScreenCaptureStream(_frames, streamName, pass.Output, NumberOfCachedFrames)); } _camera.RenderPassCompleted += OnRenderPassCompleted; } else { _streams.Add("Frame", new ScreenCaptureStream(_frames, "Frame", null, NumberOfCachedFrames)); } _camera.RenderFrameCompleted += OnRenderFrameCompleted; }
private void OnCurrentCameraChanged(Camera prev, Camera next) { if (this.CurrentCameraChanged != null) this.CurrentCameraChanged(this, new CameraChangedEventArgs(prev, next)); }
public CamEntry(Camera cam) { this.cam = cam; }
public CameraChangedEventArgs(Camera prev, Camera next) { this.prevCam = prev; this.nextCam = next; }
public void SetCurrentCamera(Camera c) { if (c == null) c = this.nativeCamObj.Camera; if (c == this.camComp) return; Camera prev = this.camComp; if (c.GameObj == this.nativeCamObj) { this.camObj = this.nativeCamObj; this.camComp = this.camObj.Camera; this.camSelector.SelectedIndex = 0; } else { this.camObj = c.GameObj; this.camComp = c; this.camSelector.SelectedIndex = this.GetCameraSelectorIndex(c); } this.OnCurrentCameraChanged(prev, this.camComp); this.glControl.Invalidate(); }
private int GetCameraSelectorIndex(Camera c) { for (int i = 0; i < this.camSelector.Items.Count; i++) { if ((this.camSelector.Items[i] as CamEntry).Camera == c) return i; } return -1; }
private void OnCurrentCameraChanged(Camera prev, Camera next) { if (this.CurrentCameraChanged != null) this.CurrentCameraChanged(this, new CameraChangedEventArgs(prev, next)); if (prev != null) prev.RemoveEditorRendererFilter(this.RendererFilter); if (next != null) next.AddEditorRendererFilter(this.RendererFilter); }
void ICmpInitializable.OnInit(Component.InitContext context) { if (context == InitContext.Activate) { this.camComp = this.GameObj.GetComponent<Camera>(); this.GenerateStarField(); } }