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(); }
protected override void UnloadContent() { eng.Dispose(); ContentVault.Clear(); }
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; }
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")); }
protected override void Dispose(bool disposing) { Scenes.Clear(); eng.Dispose(); ContentVault.Clear(); }