//[DllImport( "user32.dll", CharSet = CharSet.Auto, ExactSpelling = true )] //private static extern IntPtr GetForegroundWindow(); //[DllImport( "user32.dll", CharSet = CharSet.Auto, SetLastError = true )] //private static extern int GetWindowThreadProcessId( IntPtr handle, out int processId ); //static bool ApplicationIsActivated() //{ // var activatedHandle = GetForegroundWindow(); // if( activatedHandle == IntPtr.Zero ) // return false; // No window is currently activated // var procId = Process.GetCurrentProcess().Id; // int activeProcId; // GetWindowThreadProcessId( activatedHandle, out activeProcId ); // return activeProcId == procId; //} bool IsActive() { SoundChannelGroup masterGroup = MasterChannelGroup; bool masterGroupPaused = masterGroup == null || masterGroup.Pause; bool active = !masterGroupPaused; if (active && _SuspendWorkingWhenApplicationIsNotActive) { if (SystemSettings.CurrentPlatform == SystemSettings.Platform.Windows) { active = EngineApp.platform.ApplicationIsActivated(); //IntPtr h = hWnd; //while( h != IntPtr.Zero ) //{ // active = IsWindow( h ) != 0 && IsWindowVisible( h ) != 0 && IsIconic( h ) == 0; // if( !active ) // break; // h = GetParent( h ); //} } else { if (EngineApp.EnginePaused) { active = false; } } } return(active); }
public static void EngineApp_AppCreateAfter() { Log.Handlers.InvisibleInfoHandler += InvisibleLog_Handlers_InfoHandler; Log.Handlers.InfoHandler += Log_Handlers_InfoHandler; Log.Handlers.WarningHandler += Log_Handlers_WarningHandler; Log.Handlers.ErrorHandler += Log_Handlers_ErrorHandler; Log.Handlers.FatalHandler += Log_Handlers_FatalHandler; EngineApp.RegisterConfigParameter += EngineApp_RegisterConfigParameter; EngineConsole.Init(); //!!!! //GameControlsManager.Init(); //UIControl engineLoadingWindow = ResourceManager.LoadSeparateInstance<UIControl>( "Base\\UI\\Windows\\EngineLoadingWindow.ui", false, null ); //if( engineLoadingWindow != null ) // MainViewport.UIContainer.AddComponent( engineLoadingWindow ); ////Subcribe to callbacks during engine loading. We will render scene from callback. //LongOperationCallbackManager.Subscribe( LongOperationCallbackManager_LoadingCallback, programLoadingWindow ); EngineApp.Tick += EngineApp_Tick; ////finish initialization of materials and hide loading window. ////!!!!!! ////LongOperationCallbackManager.Unsubscribe(); //if( engineLoadingWindow != null ) // engineLoadingWindow.RemoveFromParent( true ); //subscribe to main viewport events { MainViewport.KeyDown += MainViewport_KeyDown; MainViewport.KeyPress += MainViewport_KeyPress; MainViewport.KeyUp += MainViewport_KeyUp; MainViewport.MouseDown += MainViewport_MouseDown; MainViewport.MouseUp += MainViewport_MouseUp; MainViewport.MouseDoubleClick += MainViewport_MouseDoubleClick; MainViewport.MouseMove += MainViewport_MouseMove; MainViewport.MouseWheel += MainViewport_MouseWheel; MainViewport.JoystickEvent += MainViewport_JoystickEvent; MainViewport.SpecialInputDeviceEvent += MainViewport_SpecialInputDeviceEvent; //!!!!!Tick += MainViewport.UpdateBegin += MainViewport_UpdateBegin; MainViewport.UpdateBeforeOutput += MainViewport_UpdateBeforeOutput; MainViewport.UpdateEnd += MainViewport_UpdateEnd; } //change application title if (EngineApp.CreatedInsideEngineWindow != null) { EngineApp.CreatedInsideEngineWindow.Title = ProjectSettings.Get.ProjectName; } //update sound volume if (EngineApp.DefaultSoundChannelGroup != null) { EngineApp.DefaultSoundChannelGroup.Volume = soundVolume; } //create music channel group musicChannelGroup = SoundWorld.CreateChannelGroup("Music"); if (musicChannelGroup != null) { SoundWorld.MasterChannelGroup.AddGroup(musicChannelGroup); musicChannelGroup.Volume = musicVolume; } PlayerInv.Name = "PlayerInv"; PlayerInv.InitialItems.Add("Water, 20"); PlayerInv.InitialItems.Add("Seed, 4"); PlayerInv.InitialItems.Add("Empty, 0"); PlayerInv.InitialItems.Add("Empty, 0"); PlayerInv.InitialItems.Add("Empty, 0"); PlayerInv.CalcInitialItems(); PlayerInv.CalcImagePaths(); }