예제 #1
0
        protected override void LoadContent()
        {
            GameConsole.Write("LoadContent()");

            ContentVault.AddSound("menu_up", Content.Load <SoundEffect>("sfx\\menu_up"));
            ContentVault.AddSound("menu_down", Content.Load <SoundEffect>("sfx\\menu_down"));

            LoadGenericTextures();
            effect.Texture = ContentVault.Textures["test"];
            //effect.TextureEnabled = true;

            tint = new Texture2D(GraphicsDevice, 1, 1);
            tint.SetData(new Color[] { Color.Black });

            //load fonts
            GameConsole.Font = Content.Load <SpriteFont>("debug");
            font             = Content.Load <SpriteFont>("File");

            BigFileExists = FindBigFile();

            //loadmenu
            menu = new Menu(font);
            MenuRootComponent.Font = font;

            UpdateSplitscreenViewports();

            LoadCones();
        }
예제 #2
0
 protected override void UnloadContent()
 {
     eng.Dispose();
     ContentVault.Clear();
 }
예제 #3
0
        private void LoadLevel()
        {
            GameConsole.Write("LoadLevel()");

            RenderEnabled = false;

            //wait for the end of frame, in case we are still rendering.
            while (IsDrawing)
            {
            }
            ;

            //Dispose();
            eng.Clear();

            //making sure we have default stuff loaded. maybe should just allocate statically?
            LoadCones();
            LoadGenericTextures();

            TestLoadKart();
            TestLoadExtrenalModels();


            Stopwatch sw = new Stopwatch();

            sw.Start();


            GameConsole.Write("scenes parsed at: " + sw.Elapsed.TotalSeconds);

            //loading textures between scenes and conversion to monogame for alpha textures info
            LoadTextures();

            GameConsole.Write("textures extracted at: " + sw.Elapsed.TotalSeconds);

            foreach (Scene s in Scenes)
            {
                eng.MeshHigh.Add(CrashTeamRacingLoader.FromScene(s, Detail.Med));
                eng.MeshLow.Add(CrashTeamRacingLoader.FromScene(s, Detail.Low));
            }

            GameConsole.Write("converted scenes to monogame render at: " + sw.Elapsed.TotalSeconds);

            //force 1st scene sky and back color
            if (Scenes.Count > 0)
            {
                eng.BackgroundColor = DataConverter.ToColor(Scenes[0].header.backColor);
                if (Scenes[0].skybox != null)
                {
                    eng.sky = new MGLevel(Scenes[0].skybox);
                }
            }

            foreach (Scene s in Scenes)
            {
                if (s.unkadv != null)
                {
                    foreach (var pa in s.unkadv.smth)
                    {
                        eng.instanced.Add(new InstancedModel("limecone", DataConverter.ToVector3(pa.Position, 0.01f), Vector3.Zero, new Vector3(0.03f)));
                    }
                }

                if (s.header.ptru2 != 0)
                {
                    foreach (var v in s.posu2)
                    {
                        eng.instanced.Add(new InstancedModel("goldcone", DataConverter.ToVector3(v, 0.01f), Vector3.Zero, new Vector3(0.03f)));
                    }
                }

                if (s.header.ptrTrialData != UIntPtr.Zero)
                {
                    foreach (var v in s.posu1)
                    {
                        eng.instanced.Add(new InstancedModel("browncone", DataConverter.ToVector3(v.Position, 0.01f), Vector3.Zero, new Vector3(0.03f)));
                    }
                }
            }


            foreach (var scene in Scenes)
            {
                foreach (var model in scene.Models)
                {
                    ContentVault.AddModel(model.Name, DataConverter.ToTriList(model));
                }
            }

            foreach (Scene s in Scenes)
            {
                foreach (var pa in s.header.startGrid)
                {
                    eng.instanced.Add(new InstancedModel("purplecone", DataConverter.ToVector3(pa.Position), Vector3.Zero, new Vector3(0.03f)));
                }

                foreach (var ph in s.pickups)
                {
                    eng.instanced.Add(new InstancedModel(
                                          ph.ModelName,
                                          DataConverter.ToVector3(ph.Pose.Position),
                                          new Vector3(
                                              (float)(ph.Pose.Rotation.Y * Math.PI * 2f),
                                              (float)(ph.Pose.Rotation.X * Math.PI * 2f),
                                              (float)(ph.Pose.Rotation.Z * Math.PI * 2f)
                                              ),
                                          new Vector3(ph.Scale.Y, ph.Scale.X, ph.Scale.Z)
                                          ));
                }

                foreach (var n in s.restartPts)
                {
                    eng.paths.Add(new InstancedModel("cyancone", DataConverter.ToVector3(n.Position), Vector3.Zero, new Vector3(0.03f)));
                }

                if (s.nav.paths.Count == 3)
                {
                    foreach (NavFrame n in s.nav.paths[0].frames)
                    {
                        eng.paths.Add(new InstancedModel("greencone", DataConverter.ToVector3(n.position, 0.01f), Vector3.Zero, new Vector3(0.03f)));
                    }
                    foreach (NavFrame n in s.nav.paths[1].frames)
                    {
                        eng.paths.Add(new InstancedModel("yellowcone", DataConverter.ToVector3(n.position, 0.01f), Vector3.Zero, new Vector3(0.03f)));
                    }
                    foreach (NavFrame n in s.nav.paths[2].frames)
                    {
                        eng.paths.Add(new InstancedModel("redcone", DataConverter.ToVector3(n.position, 0.01f), Vector3.Zero, new Vector3(0.03f)));
                    }
                }
            }

            GameConsole.Write("extracted dynamics an bsp at: " + sw.Elapsed.TotalSeconds);

            foreach (Scene s in Scenes)
            {
                if (s.visdata.Count > 0)
                {
                    BspPopulate(s.visdata[0], s, 0);
                }

                GameConsole.Write(s.Info());
            }

            sw.Stop();

            GameConsole.Write("level done: " + sw.Elapsed.TotalSeconds);

            UpdateEffects();

            RenderEnabled = true;
        }
예제 #4
0
 void LoadGenericTextures()
 {
     ContentVault.AddTexture("test", Content.Load <Texture2D>("test"));
     ContentVault.AddTexture("flag", Content.Load <Texture2D>("flag"));
     ContentVault.AddTexture("logo", Content.Load <Texture2D>(IsChristmas ? "logo_xmas" : "logo"));
 }
예제 #5
0
 protected override void Dispose(bool disposing)
 {
     Scenes.Clear();
     eng.Dispose();
     ContentVault.Clear();
 }