Готовые примеры

Пример файла Program.cs

В коде отражён плагин "MyPlugin", где происходит запуск изображения заставки, аудио, видео и браузера под разные проекты движка.

  1. #define AUDIO_LOG
  2. //#define BROWSER_LOG
  3. #define LOCALIZATION_LOG
  4. #define VIDEO_LOG
  5. /** API BusEngine.Game - пользовательский код */
  6. [assembly: BusEngine.Tooltip("Это описание сборки для BusEngine.Editor")]
  7. namespace BusEngine.Game {
  8.     /** API BusEngine.Plugin */
  9.     [BusEngine.Tooltip("Это описание класса для BusEngine.Editor")]
  10.     public class MyPlugin : BusEngine.Plugin {
  11.         [BusEngine.Tooltip("Это описание поля для BusEngine.Editor")]
  12.         private static System.Windows.Forms.Form SplashScreen;
  13.         // при запуске BusEngine до создания формы
  14.         public override void Initialize() {
  15.             // загружаем свой язык
  16.             BusEngine.Localization.OnLoadStatic += (BusEngine.Localization l, string language) => {
  17.                 #if LOCALIZATION_LOG
  18.                 BusEngine.Log.Info("Язык изменился: {0}", language);
  19.                 BusEngine.Log.Info("Язык изменился: {0}", l.GetLanguage("error"));
  20.                 #endif
  21.             };
  22.             new BusEngine.Localization().Load("Ukrainian");
  23.             // добавляем стартовую обложку
  24.             SplashScreen = new System.Windows.Forms.Form();
  25.             SplashScreen.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  26.             SplashScreen.Width = 640;
  27.             SplashScreen.Height = 360;
  28.             SplashScreen.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  29.             if (System.IO.File.Exists(System.IO.Path.GetFullPath(BusEngine.Engine.DataDirectory + "Textures/UI/splashscreen.png"))) {
  30.                 SplashScreen.BackgroundImage = System.Drawing.Image.FromFile(BusEngine.Engine.DataDirectory + "Textures/UI/splashscreen.png");
  31.             }
  32.             SplashScreen.Show();
  33.             // запускаем аудио
  34.             if (BusEngine.Engine.Platform == "Windows" || BusEngine.Engine.Platform == "WindowsLauncher") {
  35.                 BusEngine.Audio x = new BusEngine.Audio("Audios/BusEngine.mp3").Play();
  36.                 x.OnEnd += (BusEngine.Audio a, string url) => {
  37.                     a.Dispose();
  38.                 };
  39.                 //System.Threading.Thread.Sleep(3000);
  40.                 System.Threading.Tasks.Task.Delay(3000).Wait();
  41.                 x.Stop();
  42.             } else {
  43.                 //System.Threading.Thread.Sleep(1000);
  44.                 System.Threading.Tasks.Task.Delay(1000).Wait();
  45.             }
  46.         }
  47.         // при запуске BusEngine после создания формы Canvas
  48.         public override void InitializeСanvas() {
  49.             // убираем стартовую обложку
  50.             SplashScreen.Close();
  51.             SplashScreen.Dispose();
  52.             // запускаем аудио
  53.             if (BusEngine.Engine.Platform == "Windows" || BusEngine.Engine.Platform == "WindowsLauncher") {
  54.                 // создаём массив ссылок или путей
  55.                 string[] audios = {"Audios/BusEngine.mp3", "Audios/BusEngine.mp3", "Audios/BusEngine.mp3"};
  56.                 // создаём новый объект аудио
  57.                 BusEngine.Audio _audio = new BusEngine.Audio(audios).Play();
  58.                 // создаём событие клавиатуры внутри метода
  59.                 System.Windows.Forms.KeyEventHandler KeyDownAudio = (o, e) => {
  60.                     // выбираем клавишу пробела
  61.                     if (e.KeyCode == System.Windows.Forms.Keys.Enter) {
  62.                         if (!_audio.IsDispose) {
  63.                             _audio.Stop();
  64.                             #if AUDIO_LOG
  65.                             BusEngine.Log.Info("Stop Audio");
  66.                             #endif
  67.                         }
  68.                     }
  69.                 };
  70.                 _audio.OnDispose += (BusEngine.Audio a, string url) => {
  71.                     #if AUDIO_LOG
  72.                     BusEngine.Log.Info("Dispose Audio");
  73.                     #endif
  74.                     // удаляем событие клавиш
  75.                     BusEngine.UI.Canvas.WinForm.KeyDown -= KeyDownAudio;
  76.                     /* здесь пишем код запуска другого кода */
  77.                 };
  78.                 // добавляем событие клавиш
  79.                 BusEngine.UI.Canvas.WinForm.KeyDown += KeyDownAudio;
  80.             }
  81.             // запускаем видео
  82.             if (BusEngine.Engine.Platform == "Windows" || BusEngine.Engine.Platform == "WindowsLauncher") {
  83.                 // создаём массив ссылок или путей
  84.                 string[] videos = {"Videos/BusEngine.mp4", "Videos/BusEngine.mp4", "Videos/BusEngine.mp4"};
  85.                 // создаём новый объект видео
  86.                 BusEngine.Video _video = new BusEngine.Video(videos).Play();
  87.                 // создаём событие клавиатуры внутри метода
  88.                 System.Windows.Forms.KeyEventHandler KeyDownVideo = (o, e) => {
  89.                     // выбираем клавишу пробела
  90.                     if (e.KeyCode == System.Windows.Forms.Keys.Space) {
  91.                         if (!_video.IsDispose) {
  92.                             _video.Stop();
  93.                             #if VIDEO_LOG
  94.                             BusEngine.Log.Info("Stop Video");
  95.                             #endif
  96.                         }
  97.                     }
  98.                 };
  99.                 _video.OnDispose += (BusEngine.Video v, string url) => {
  100.                     #if VIDEO_LOG
  101.                     BusEngine.Log.Info("Dispose Video");
  102.                     #endif
  103.                     // удаляем событие клавиш
  104.                     BusEngine.UI.Canvas.WinForm.KeyDown -= KeyDownVideo;
  105.                     // запускаем браузер
  106.                     if (BusEngine.Engine.Platform == "WindowsLauncher") {
  107.                         Browser("index.html");
  108.                     }
  109.                 };
  110.                 // добавляем событие клавиш
  111.                 BusEngine.UI.Canvas.WinForm.KeyDown += KeyDownVideo;
  112.             }
  113.             // запускаем браузер
  114.             if (BusEngine.Engine.Platform == "WindowsEditor") {
  115.                 Browser("https://threejs.org/editor/");
  116.             }
  117.         }
  118.         // запускаем браузер WinForm только в одном потоке =(
  119.         private void Browser(string url) {
  120.             BusEngine.Browser.Initialize(url);                          
  121.             BusEngine.Browser.OnPostMessageStatic += (string message) => {
  122.                 if (message == "Exit") {
  123.                     BusEngine.Engine.Shutdown();
  124.                 } else if (message == "Debug") {
  125.                     BusEngine.Log.Info("JavaScript: Привет CSharp!");
  126.                     BusEngine.Log.Info("На команду: " + message);
  127.                     BusEngine.Browser.ExecuteJSStatic("document.dispatchEvent(new CustomEvent('BusEngineMessage', {bubbles: true, detail: {hi: 'CSharp: Прювэт JavaScript!', data: 'Получил твою команду! Вось яна: " + message + "'}}));");
  128.                 } else {
  129.                     if (message.Substring(0, 8) == "console|") {
  130.                         System.Console.ForegroundColor = System.ConsoleColor.Cyan;
  131.                         BusEngine.Log.Info("Console: {0}", message.Substring(8));
  132.                         System.Console.ResetColor();
  133.                     }
  134.                 }
  135.             };
  136.         }
  137.     }
  138.     /** API BusEngine.Plugin */
  139. }
  140. /** API BusEngine.Game - пользовательский код */
Наверх