Esempio n. 1
0
        public static void UpdateBoundingBox(this FLVER2.FLVERHeader header, NVector3 vertexPos)
        {
            var minX = Math.Min(header.BoundingBoxMin.X, vertexPos.X);
            var minY = Math.Min(header.BoundingBoxMin.Y, vertexPos.Y);
            var minZ = Math.Min(header.BoundingBoxMin.Z, vertexPos.Z);
            var maxX = Math.Max(header.BoundingBoxMax.X, vertexPos.X);
            var maxY = Math.Max(header.BoundingBoxMax.Y, vertexPos.Y);
            var maxZ = Math.Max(header.BoundingBoxMax.Z, vertexPos.Z);

            header.BoundingBoxMin = new NVector3(minX, minY, minZ);
            header.BoundingBoxMax = new NVector3(maxX, maxY, maxZ);
        }
Esempio n. 2
0
        private void LoadFLVER2(FLVER2 flver, bool useSecondUV, Dictionary <string, int> boneIndexRemap = null,
                                bool ignoreStaticTransforms = false)
        {
            Flver2Header = flver.Header;

            lock (_lock_submeshes)
            {
                Submeshes = new List <FlverSubmeshRenderer>();
            }

            foreach (var submesh in flver.Meshes)
            {
                // Blacklist some materials that don't have good shaders and just make the viewer look like a mess
                MTD mtd = null;// InterrootLoader.GetMTD(Path.GetFileName(flver.Materials[submesh.MaterialIndex].MTD));
                if (mtd != null)
                {
                    if (mtd.ShaderPath.Contains("FRPG_Water_Env"))
                    {
                        continue;
                    }
                    if (mtd.ShaderPath.Contains("FRPG_Water_Reflect.spx"))
                    {
                        continue;
                    }
                }
                var smm = new FlverSubmeshRenderer(this, flver, submesh, useSecondUV, boneIndexRemap, ignoreStaticTransforms);

                Bounds = new BoundingBox();

                lock (_lock_submeshes)
                {
                    Submeshes.Add(smm);
                    Bounds = BoundingBox.CreateMerged(Bounds, smm.Bounds);
                }
            }
        }