コード例 #1
0
        private static void AddTile(Mooege.Common.MPQ.FileFormats.World worldData, TileInfo tileInfo, Vector3D location)
        {
            var sceneChunk = new SceneChunk();

            sceneChunk.SNOHandle                       = new SNOHandle(tileInfo.SNOScene);
            sceneChunk.PRTransform                     = new PRTransform();
            sceneChunk.PRTransform.Quaternion          = new Quaternion();
            sceneChunk.PRTransform.Quaternion.W        = 1.0f;
            sceneChunk.PRTransform.Quaternion.Vector3D = new Vector3D(0, 0, 0);
            sceneChunk.PRTransform.Vector3D            = new Vector3D();
            sceneChunk.PRTransform.Vector3D            = location;



            var spec = new SceneSpecification();

            //scene.Specification = spec;
            spec.Cell = new Vector2D()
            {
                X = 0, Y = 0
            };
            spec.CellZ                      = 0;
            spec.SNOLevelAreas              = new int[] { -1, -1, -1, -1 };
            spec.SNOMusic                   = -1;
            spec.SNONextLevelArea           = -1;
            spec.SNONextWorld               = -1;
            spec.SNOPresetWorld             = -1;
            spec.SNOPrevLevelArea           = -1;
            spec.SNOPrevWorld               = -1;
            spec.SNOReverb                  = -1;
            spec.SNOWeather                 = 50542;
            spec.SNOCombatMusic             = -1;
            spec.SNOAmbient                 = -1;
            spec.ClusterID                  = -1;
            spec.Unknown1                   = 14;
            spec.Unknown3                   = 5;
            spec.Unknown4                   = -1;
            spec.Unknown5                   = 0;
            spec.SceneCachedValues          = new SceneCachedValues();
            spec.SceneCachedValues.Unknown1 = 63;
            spec.SceneCachedValues.Unknown2 = 96;
            spec.SceneCachedValues.Unknown3 = 96;
            var sceneFile = MPQStorage.Data.Assets[SNOGroup.Scene][tileInfo.SNOScene];
            var sceneData = (Mooege.Common.MPQ.FileFormats.Scene)sceneFile.Data;

            spec.SceneCachedValues.AABB1    = sceneData.AABBBounds;
            spec.SceneCachedValues.AABB2    = sceneData.AABBMarketSetBounds;
            spec.SceneCachedValues.Unknown4 = new int[4] {
                0, 0, 0, 0
            };

            sceneChunk.SceneSpecification = spec;


            worldData.SceneParams.SceneChunks.Add(sceneChunk);
            worldData.SceneParams.ChunkCount++;
        }
コード例 #2
0
ファイル: ScenarioView.cs プロジェクト: WAZAAAAA0/scnTool
        private bool f_extract_obj(SceneChunk scene)
        {
            var exporter = new Obj_Exporter();

            if (container == null)
            {
                return(false);
            }

            if (scene != null && scene.ChunkType == ChunkType.ModelData)
            {
                var folder = new FolderBrowserDialog();
                if (folder.ShowDialog() == DialogResult.OK)
                {
                    string file_name = scene.Name + ".obj";

                    exporter.Export(Path.Combine(folder.SelectedPath, file_name), scene as ModelChunk);
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
ファイル: ScenarioView.cs プロジェクト: WAZAAAAA0/scnTool
        private bool f_import_scene()
        {
            if (container == null)
            {
                return(false);
            }

            var file = new OpenFileDialog();

            file.Multiselect = true;
            file.Filter      = ".scn_part|*.scn_part";

            if (file.ShowDialog() == DialogResult.OK)
            {
                for (int i = 0; i < file.FileNames.Length; i++)
                {
                    using (var fs = new FileStream(file.FileName, FileMode.Open, FileAccess.Read, FileShare.None))
                        using (var br = new BinaryReader(fs))
                        {
                            SceneChunk chunk = null;

                            var    type    = br.ReadEnum <ChunkType>();
                            string name    = br.ReadCString();
                            string subname = br.ReadCString();

                            switch (type)
                            {
                            case ChunkType.Bone:
                                chunk = new BoneChunk(container)
                                {
                                    Name    = name,
                                    SubName = subname,
                                    Image   = Properties.Resources.bone
                                };

                                chunk.Deserialize(fs);
                                container.Add(chunk);
                                break;

                            case ChunkType.BoneSystem:
                                chunk = new BoneSystemChunk(container)
                                {
                                    Name    = name,
                                    SubName = subname,
                                    Image   = Properties.Resources.bone_system
                                };

                                chunk.Deserialize(fs);
                                container.Add(chunk);
                                break;

                            case ChunkType.Box:
                                chunk = new BoxChunk(container)
                                {
                                    Name    = name,
                                    SubName = subname,
                                    Image   = Properties.Resources.box
                                };

                                chunk.Deserialize(fs);
                                container.Add(chunk);
                                break;

                            case ChunkType.ModelData:
                                chunk = new ModelChunk(container)
                                {
                                    Name    = name,
                                    SubName = subname,
                                    Image   = Properties.Resources.model
                                };

                                chunk.Deserialize(fs);
                                container.Add(chunk);
                                break;

                            case ChunkType.Shape:
                                chunk = new ShapeChunk(container)
                                {
                                    Name    = name,
                                    SubName = subname,
                                    Image   = Properties.Resources.shape
                                };

                                chunk.Deserialize(fs);
                                container.Add(chunk);
                                break;

                            case ChunkType.SkyDirect1:
                                chunk = new SkyDirect1Chunk(container)
                                {
                                    Name    = name,
                                    SubName = subname,
                                    Image   = Properties.Resources.sky
                                };

                                chunk.Deserialize(fs);
                                container.Add(chunk);
                                break;

                            default:
                                return(false);
                            }
                        }
                }
                return(true);
            }
            return(false);
        }