public void ResetMorph(GameObject gao) { // First, reset vertex buffer if (Settings.s.platform == Settings.Platform.N64) { foreach (GeometricObjectElementVisualList.GeometricElementListEntry entry in elementsVisual.Value.elements) { if (entry.element.Value is GeometricObjectElementTriangles) { GeometricObjectElementTriangles el = entry.element.Value as GeometricObjectElementTriangles; el.ResetVertexBuffer(); } } } for (int i = 0; i < num_elementsVisual; i++) { ROMStruct entry1 = elementsVisual.Value.elements[i].element.Value; if (entry1 != null && entry1 is GeometricObjectElementTriangles) { GeometricObjectElementTriangles tris1 = entry1 as GeometricObjectElementTriangles; MeshFilter[] mfs = gao.GetComponentsInChildren <MeshFilter>(); MeshFilter mf = mfs.FirstOrDefault(m => m.name == "ElementTriangles @ " + tris1.Offset); if (mf != null) { tris1.ResetMorph(mf.sharedMesh, this); //mf.mesh.RecalculateNormals(); } } } }
public Type Resolve(Reader reader) { if (this.type == 0xFFFF) { return(null); } R2ROMLoader l = MapLoader.Loader as R2ROMLoader; FATEntry.Type entryType = FATEntry.GetEntryType(this.type); System.Type type = null; foreach (KeyValuePair <System.Type, FATEntry.Type> typePair in FATEntry.types) { if (typePair.Value == entryType) { type = typePair.Key; break; } } ushort index = forceFix ? (ushort)(this.index | (ushort)FATEntry.Flag.Fix) : this.index; switch (entryType) { case FATEntry.Type.GeometricElementTriangles: Value = l.GetOrRead <GeometricObjectElementTriangles>(reader, index); break; case FATEntry.Type.GeometricElementSprites: Value = l.GetOrRead <GeometricObjectElementSprites>(reader, index); break; case FATEntry.Type.VisualMaterial: Value = l.GetOrRead <VisualMaterial>(reader, index); break; case FATEntry.Type.GeometricElementCollideTriangles: Value = l.GetOrRead <GeometricObjectElementCollideTriangles>(reader, index); break; case FATEntry.Type.GeometricElementCollideAlignedBoxes: Value = l.GetOrRead <GeometricObjectElementCollideAlignedBoxes>(reader, index); break; case FATEntry.Type.GeometricElementCollideSpheres: Value = l.GetOrRead <GeometricObjectElementCollideSpheres>(reader, index); break; case FATEntry.Type.GameMaterial: Value = l.GetOrRead <GameMaterial>(reader, index); break; case FATEntry.Type.PhysicalObject: Value = l.GetOrRead <PhysicalObject>(reader, index); break; case FATEntry.Type.Sector: Value = l.GetOrRead <Sector>(reader, index); break; default: UnityEngine.Debug.LogWarning("GenericReference: Unsupported struct with type " + entryType + "(" + this.type + ")"); break; } return(type); }