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); }
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); } } }