示例#1
0
        void glControl1_Load(object sender, EventArgs e)
        {
            Scene               = new Graphics.Scene();
            Application.Idle   += HandleApplicationIdle;
            Scene.OnFrameReady += Scene_OnFrameReady;

            glControl1.Resize              += glControl1_Resize;
            glControl1.MouseDown           += Scene.Camera.OnMouseDown;
            glControl1.MouseMove           += Scene.Camera.OnMouseMove;
            glControl1.MouseUp             += Scene.Camera.OnMouseUp;
            glControl1.MouseCaptureChanged += Scene.Camera.OnMouseCaptureChanged;

            var fileName     = @"C:\Users\seed\Documents\Halo 2 Modding\mainmenu.map";
            var directory    = Path.GetDirectoryName(fileName);
            var maps         = Directory.GetFiles(directory, "*.map", SearchOption.TopDirectoryOnly);
            var resourceMaps = maps.GroupBy(
                x =>
            {
                return(Halo2.CheckMapType(x));
            }
                ).Where(x => x.Key == MapType.MainMenu ||
                        x.Key == MapType.Shared ||
                        x.Key == MapType.SinglePlayerShared)
                               .Select(g => g.First()).ToList();

            resourceMaps.ForEach(x => Halo2.LoadResource(new MapStream(x)));
            Map = new MapStream(fileName);
            Scene.ObjectManager.Add(Map["hlmt", "masterchief"].Meta.Identifier,
                                    new ScenarioObject((ModelBlock)(Map["hlmt", "masterchief"].Deserialize())));


            var shaderTags = Map.Tags.Where(x => x.Type.ToString() == "shad").ToArray();

            listBox1.Items.AddRange(shaderTags);
            listBox1.DisplayMember = "Path";

            //  firing this method is meant to load the view-projection matrix values into
            //  the shader uniforms, and initalizes the camera
            glControl1_Resize(this, new EventArgs());
        }