예제 #1
0
		public override FormDrawer CreateDrawer(VideoModes videoModes, DrawerSettings drawerSettings)
		{
			switch(videoModes)
			{
				case VideoModes.DirectX:
					return new DirectXFormDrawer(GetDirectXScene(), drawerSettings);
				case VideoModes.Winforms:
					return new WinformsDrawer(_root, drawerSettings);
				case VideoModes.No:
					return null;
				default:
					throw new Exception("Video mode not supported");
			}
		}
예제 #2
0
        public override FormDrawer CreateDrawer(VideoModes videoModes, DrawerSettings drawerSettings)
        {
            switch (videoModes)
            {
            case VideoModes.DirectX:
                return(new DirectXFormDrawer(GetDirectXScene(), drawerSettings));

            case VideoModes.Winforms:
                return(new WinformsDrawer(_root, drawerSettings));

            case VideoModes.No:
                return(null);

            default:
                throw new Exception("Video mode not supported");
            }
        }
예제 #3
0
		public DrawerControl CreateAndRunDrawerInStandaloneForm(VideoModes videoMode, DrawerSettings drawerSettings, Func<Form> formFactory)
		{
			FormDrawer drawer = CreateDrawer(videoMode, drawerSettings);
			DrawerControl drawerControl = null;
			var localsync = new ManualResetEventSlim();
			var t = new Thread(() =>
				{
					var form = formFactory();
					drawerControl = new DrawerControl(drawer)
						{
							Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Bottom
						};
					form.Controls.Add(drawerControl);
					form.Shown += (o, e) => localsync.Set();
					Application.Run(form);
				});
			t.SetApartmentState(ApartmentState.STA);
			t.Start();
			localsync.Wait();
			if (drawer!=null)
				drawer.WaitForInitialization();
			return drawerControl;
		}
예제 #4
0
        public DrawerControl CreateAndRunDrawerInStandaloneForm(VideoModes videoMode, DrawerSettings drawerSettings, Func <Form> formFactory)
        {
            FormDrawer    drawer        = CreateDrawer(videoMode, drawerSettings);
            DrawerControl drawerControl = null;
            var           localsync     = new ManualResetEventSlim();
            var           t             = new Thread(() =>
            {
                var form      = formFactory();
                drawerControl = new DrawerControl(drawer)
                {
                    Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Bottom
                };
                form.Controls.Add(drawerControl);
                form.Shown += (o, e) => localsync.Set();
                Application.Run(form);
            });

            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            localsync.Wait();
            if (drawer != null)
            {
                drawer.WaitForInitialization();
            }
            return(drawerControl);
        }
예제 #5
0
 public abstract FormDrawer CreateDrawer(VideoModes videoModes, DrawerSettings drawerSettings);
예제 #6
0
 public DrawerControl CreateAndRunDrawerInStandaloneForm(VideoModes videoMode, DrawerSettings drawerSettings)
 {
     return(CreateAndRunDrawerInStandaloneForm(videoMode, drawerSettings, EmptyFormFactory));
 }
예제 #7
0
		public abstract FormDrawer CreateDrawer(VideoModes videoModes, DrawerSettings drawerSettings);
예제 #8
0
		public DrawerControl CreateAndRunDrawerInStandaloneForm(VideoModes videoMode, DrawerSettings drawerSettings)
		{
			return CreateAndRunDrawerInStandaloneForm(videoMode, drawerSettings, EmptyFormFactory);
		}