Пример #1
0
 private static void InitializeOgre()
 {
     Splash splash = new Splash();
     splash.Show();
     try {
         LKernel.LoadInitialObjects(splash);
         GC.Collect();
     }
     finally {
         splash.Close();
         splash.Dispose();
     }
 }
        /// <summary>
        /// Load global objects on startup
        /// </summary>
        public static void LoadInitialObjects(Splash splash)
        {
            // this goes first since lots of things rely on it
            splash.Increment("Setting up level manager...");
            var levelManager = AddGlobalObject(new LevelManager());

            // mogre stuff
            splash.Increment("Initialising Mogre core...");
            var root		 = AddGlobalObject(InitRoot());
            splash.Increment("Initialising render system...");
            var renderSystem = AddGlobalObject(InitRenderSystem(root));
            splash.Increment("Creating render window...");
            var renderWindow = AddGlobalObject(InitRenderWindow(root, renderSystem));

            splash.Increment("Initialising resources and resource groups...");
            InitResources();
            LoadResourceGroups();

            // physics stuff
            splash.Increment("Initialising Bullet physics engine, collision reporter, trigger region reporter, and contact reporter...");
            try {
                AddGlobalObject(new PhysicsMain());
                AddGlobalObject(new CollisionShapeManager());
                AddGlobalObject(new CollisionReporter());
                AddGlobalObject(new TriggerReporter());
                AddGlobalObject(new PhysicsMaterialFactory());
            }
            catch {
                MessageBox.Show("BulletSharp loading unsuccessful! Try installing the 2010 VC++ Redistributable (x86) - google it!",
                    "Well, shit.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            // level
            splash.Increment("Creating scene manager...");
            AddGlobalObject(InitSceneManager(root));

            splash.Increment("Loading first level physics...");
            GetG<PhysicsMain>().LoadPhysicsLevel(Settings.Default.MainMenuName);

            splash.Increment("Creating player camera and viewport...");
            AddGlobalObject(InitViewport(renderWindow));
            AddGlobalObject(new CameraManager());

            // MOIS and input stuff
            splash.Increment("Starting input system...");
            AddGlobalObject(new InputMain());
            AddGlobalObject(new KeyBindingManager());
            AddGlobalObject(new InputSwallowerManager());
            AddGlobalObject(new Pauser());

            // spawner
            splash.Increment("Creating spawner...");
            AddGlobalObject(new WheelFactory());
            AddGlobalObject(new ThingDatabase());
            AddGlobalObject(new Spawner());
            AddGlobalObject(new AnimationManager());

            // networking
            splash.Increment("Creating Network manager...");
            AddGlobalObject(new NetworkManager());

            // Miyagi and stuff
            splash.Increment("Initialising Miyagi...");
            AddGlobalObject(new DebugOverlayManager());
            AddGlobalObject(new UIMain());
            AddGlobalObject(new LuaConsoleManager());
            AddGlobalObject(new MainMenuManager());
            AddGlobalObject(new GameUIManager());

            // lua needs these
            splash.Increment("Registering handlers and wrappers...");
            SetUpHandlers();

            // lua
            splash.Increment("Setting up Lua engine and wrappers...");
            var lua = AddGlobalObject(new LuaMain());
            LoadLuaWrappers();
            lua.RunRegisterEvent();

            // players
            splash.Increment("Spawning players...");
            AddGlobalObject(new PlayerManager());
            AddGlobalObject(new RaceCountdown());
            AddGlobalObject(new LapCounter());
            AddGlobalObject(new LThingHelperManager());

            //items
            splash.Increment("Loading items...");
            AddGlobalObject(new ItemManager());

            // more mogre stuff
            splash.Increment("Setting up static and instanced geometry managers...");
            AddGlobalObject(new StaticGeometryManager());
            AddGlobalObject(new InstancedGeometryManager());
            AddGlobalObject(new ImposterBillboarder());

            // sound stuff
            splash.Increment("Setting up sound system...");
            AddGlobalObject(new SoundMain());

            // handlers
            splash.Increment("Loading global handlers...");
            LoadGlobalHandlers();

            splash.Increment("Running post-initialisation events...");
            levelManager.RunPostInitEvents();
        }