示例#1
0
        private void UpdateCameraMapCoordinates(MapCameraWrapper wrapper)
        {
            if (scene.MapCamera != null)
            {
                var cam = wrapper.CameraFile;

                Vector3 BoundingScale = new Vector3(cam.cameraData.BoundingWidth, 1, cam.cameraData.BoundingHeight);

                Vector3 CamTranslate       = new Vector3(cam.cameraData.PositionX, cam.cameraData.PositionY, cam.cameraData.PositionZ);
                Vector3 CamTargetTranslate = new Vector3(cam.cameraData.TargetX, cam.cameraData.TargetY, cam.cameraData.TargetZ);

                wrapper.MapCameraPosition.Position = CamTranslate;
                wrapper.MapCameraPosition.Scale    = BoundingScale;
                wrapper.MapCameraTarget.Position   = CamTargetTranslate;
            }
        }
示例#2
0
        public void LoadCourseInfo(System.Collections.IEnumerable by, string FilePath)
        {
            CourseFolder = System.IO.Path.GetDirectoryName(FilePath);
            scene        = new CourseMuuntScene(by);

            //Add collsion (switch)
            if (File.Exists($"{CourseFolder}/course_kcl.szs"))
            {
                scene.AddRenderableKcl($"{CourseFolder}/course_kcl.szs");
            }

            //Add collsion (wii u)
            if (File.Exists($"{CourseFolder}/course.kcl"))
            {
                scene.AddRenderableKcl($"{CourseFolder}/course.kcl");
            }

            //Add probe lighting config  (wii u)
            if (File.Exists($"{CourseFolder}/course.bglpbd"))
            {
                scene.AddParameterArchive($"{CourseFolder}/course.bglpbd");
            }

            //Add probe lighting config  (switch)
            if (File.Exists($"{CourseFolder}/course_bglpbd.szs"))
            {
                scene.AddParameterArchive($"{CourseFolder}/course_bglpbd.szs");
            }


            //Add course model
            if (File.Exists($"{CourseFolder}/course_model.szs"))
            {
                scene.AddRenderableBfres($"{CourseFolder}/course_model.szs");
            }

            //Add camera mini map parameters
            if (File.Exists($"{CourseFolder}/course_mapcamera.bin"))
            {
                scene.MapCamera = STFileLoader.OpenFileFormat($"{CourseFolder}/course_mapcamera.bin");
            }

            if (scene.MapCamera != null)
            {
                var cam = (Course_MapCamera_bin)scene.MapCamera;

                var wrapper = new MapCameraWrapper();
                wrapper.Text       = "course_mapcamera.bin";
                wrapper.CameraFile = cam;

                var pointConnection = new RenderableConnectedMapPoints(Color.Blue);

                Vector4 PositionColor = new Vector4(1, 0, 0, 1);
                Vector4 TargetColor   = new Vector4(0, 1, 0, 1);

                Vector3 BoundingScale = new Vector3(cam.cameraData.BoundingWidth, 1, cam.cameraData.BoundingHeight);

                Vector3 CamTranslate       = new Vector3(cam.cameraData.PositionX, cam.cameraData.PositionY, cam.cameraData.PositionZ);
                Vector3 CamTargetTranslate = new Vector3(cam.cameraData.TargetX, cam.cameraData.TargetY, cam.cameraData.TargetZ);

                wrapper.MapCameraPosition = new RenderablePathPoint(PositionColor, CamTranslate, new Vector3(0), new Vector3(100), cam);
                wrapper.MapCameraTarget   = new RenderablePathPoint(TargetColor, CamTargetTranslate, new Vector3(0), BoundingScale, cam);

                pointConnection.AddRenderable(wrapper.MapCameraPosition);
                pointConnection.AddRenderable(wrapper.MapCameraTarget);

                viewport.AddDrawable(pointConnection);
                viewport.AddDrawable(wrapper.MapCameraPosition);
                viewport.AddDrawable(wrapper.MapCameraTarget);

                treeView1.Nodes.Add(wrapper);
            }

            foreach (AAMP aamp in scene.ParameterArchives)
            {
                if (aamp.aampFileV1 != null)
                {
                    LoadParameters(aamp.aampFileV1);
                }
                else if (aamp.aampFileV2 != null)
                {
                    LoadParameters(aamp.aampFileV2);
                }
                else
                {
                    throw new Exception("Failed to load parameter file " + aamp.FileName);
                }
            }

            viewport.AddDrawable(new GL_EditorFramework.EditorDrawables.SingleObject(new OpenTK.Vector3(0)));

            viewport.LoadObjects();

            treeView1.Nodes.Add("Scene");


            foreach (var bfres in scene.BfresObjects)
            {
                viewport.AddDrawable(bfres.BFRESRender);
                treeView1.Nodes.Add(bfres);
                bfres.Checked = true;
            }

            if (scene.LapPaths.Count > 0)
            {
                AddPathDrawable("Lap Path", scene.LapPaths, Color.Blue);
            }
            if (scene.GravityPaths.Count > 0)
            {
                AddPathDrawable("Gravity Path", scene.GravityPaths, Color.Purple);
            }
            if (scene.EnemyPaths.Count > 0)
            {
                AddPathDrawable("Enemy Path", scene.EnemyPaths, Color.Red);
            }
            if (scene.GlidePaths.Count > 0)
            {
                AddPathDrawable("Glide Path", scene.GlidePaths, Color.Orange);
            }
            if (scene.ItemPaths.Count > 0)
            {
                AddPathDrawable("Item Path", scene.ItemPaths, Color.Yellow);
            }
            if (scene.PullPaths.Count > 0)
            {
                AddPathDrawable("Pull Path", scene.PullPaths, Color.GreenYellow);
            }
            if (scene.SteerAssistPaths.Count > 0)
            {
                AddPathDrawable("Steer Assist Path", scene.SteerAssistPaths, Color.Green);
            }
            if (scene.Paths.Count > 0)
            {
                AddPathDrawable("Path", scene.Paths, Color.Black);
            }
            if (scene.ObjPaths.Count > 0)
            {
                //  AddPathDrawable("Object Path", scene.ObjPaths, Color.DarkSeaGreen);
            }
            if (scene.JugemPaths.Count > 0)
            {
                AddPathDrawable("Jugem Path", scene.JugemPaths, Color.DarkSeaGreen);
            }
            if (scene.IntroCameras.Count > 0)
            {
                AddPathDrawable("IntroCamera", scene.IntroCameras, Color.Pink);
            }

            foreach (var kcl in scene.KclObjects)
            {
                //    viewport.AddDrawable(kcl.Renderer);
                //    treeView1.Nodes.Add(kcl);
                //   kcl.Checked = true;
            }


            IsLoaded = true;
        }