Example #1
0
 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();
             }
         }
     }
 }
Example #2
0
        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);
        }