Inheritance: Component, ICmpInitializable
        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;
        }
Esempio n. 2
0
		private void OnCurrentCameraChanged(Camera prev, Camera next)
		{
			if (this.CurrentCameraChanged != null)
				this.CurrentCameraChanged(this, new CameraChangedEventArgs(prev, next));
		}
Esempio n. 3
0
			public CamEntry(Camera cam)
			{
				this.cam = cam;
			}
Esempio n. 4
0
			public CameraChangedEventArgs(Camera prev, Camera next)
			{
				this.prevCam = prev;
				this.nextCam = next;
			}
Esempio n. 5
0
		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();
		}
Esempio n. 6
0
		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;
		}
Esempio n. 7
0
		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);
		}
Esempio n. 8
0
 void ICmpInitializable.OnInit(Component.InitContext context)
 {
     if (context == InitContext.Activate)
     {
         this.camComp = this.GameObj.GetComponent<Camera>();
         this.GenerateStarField();
     }
 }