public bool ParseTarget(BinaryReader br, string id) { switch (id) { case "Name": currentTarget.name = MegaParse.ReadString(br); break; case "Percent": currentTarget.percent = br.ReadSingle(); break; case "MoPoints": int count = br.ReadInt32(); if (count > 0) { currentTarget.loadpoints = new MOPoint[count]; for (int i = 0; i < count; i++) { MOPoint p = new MOPoint(); p.id = br.ReadInt32(); // we need to find the ids for this point (could be more than one) p.p = ConvertPoint(MegaParse.ReadP3(br)); p.w = br.ReadSingle(); currentTarget.loadpoints[i] = p; } } break; } return(true); }
static public bool Parse(BinaryReader br, string id) { switch (id) { case "Num": int num = br.ReadInt32(); con.Keys = new MegaBezVector3Key[num]; con.Times = new float[num]; break; case "Keys": for (int i = 0; i < con.Keys.Length; i++) { con.Keys[i] = new MegaBezVector3Key(); con.Keys[i].val = MegaParse.ReadP3(br); con.Keys[i].intan = MegaParse.ReadP3(br); con.Keys[i].outtan = MegaParse.ReadP3(br); con.Times[i] = br.ReadSingle(); } con.InitKeys(); break; } return(true); }
void LoadPC2() { MegaPointCache am = (MegaPointCache)target; mods = am.gameObject.GetComponent <MegaModifiers>(); string filename = EditorUtility.OpenFilePanel("Point Cache File", lastpath, "pc2"); if (filename == null || filename.Length < 1) { return; } lastpath = filename; // Clear what we have Verts.Clear(); FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, System.IO.FileShare.Read); BinaryReader br = new BinaryReader(fs); string sig = MegaParse.ReadStr(br); if (sig != "POINTCACHE2") { br.Close(); return; } int fileVersion = br.ReadInt32(); if (fileVersion != 1) { br.Close(); return; } int numPoints = br.ReadInt32(); br.ReadSingle(); br.ReadSingle(); int numSamples = br.ReadInt32(); am.Verts = new MegaPCVert[numPoints]; for (int i = 0; i < am.Verts.Length; i++) { am.Verts[i] = new MegaPCVert(); am.Verts[i].points = new Vector3[numSamples]; } for (int i = 0; i < numSamples; i++) { for (int v = 0; v < numPoints; v++) { am.Verts[v].points[i] = MegaParse.ReadP3(br); } } BuildData(mods, am, filename); br.Close(); }
public void LoadPC2(string filename) { MegaPointCache am = (MegaPointCache)target; oldverts = am.Verts; mods = am.gameObject.GetComponent <MegaModifiers>(); if (mods == null) { Debug.LogWarning("You need to add a Mega Modify Object component first!"); return; } lastpath = filename; // Clear what we have Verts.Clear(); FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, System.IO.FileShare.Read); long len = fs.Length; BinaryReader br = new BinaryReader(fs); string sig = MegaParse.ReadStr(br); if (sig != "POINTCACHE2") { EditorUtility.DisplayDialog("PC2 Importer", "The selected file does not appear to be a valid PC2 File", "Ok"); br.Close(); return; } int fileVersion = br.ReadInt32(); if (fileVersion != 1) { br.Close(); return; } int numPoints = br.ReadInt32(); br.ReadSingle(); br.ReadSingle(); int numSamples = br.ReadInt32(); long csamples = (len - 24) / (numPoints * 12); numSamples = (int)csamples; am.Verts = new MegaPCVert[numPoints]; for (int i = 0; i < am.Verts.Length; i++) { am.Verts[i] = new MegaPCVert(); am.Verts[i].points = new Vector3[numSamples]; } for (int i = 0; i < numSamples; i++) { for (int v = 0; v < numPoints; v++) { am.Verts[v].points[i] = MegaParse.ReadP3(br); } } BuildData(mods, am, filename); br.Close(); }
public bool ParseAnimMesh(BinaryReader br, string id) { switch (id) { case "Size": Vector3 sz = MegaParse.ReadP3(br); Vector3 min1, max1; Vector3 ex1 = Extents(mods.verts, out min1, out max1); int largest = 0; if (sz.x > sz.y) { if (sz.x > sz.z) { largest = 0; } else { largest = 2; } } else { if (sz.y > sz.z) { largest = 1; } else { largest = 2; } } scl = ex1[largest] / sz[largest]; break; case "V": Vector3 p = MegaParse.ReadP3(br) * scl; // Find all matching verts currentVert = new MegaAnimatedVert(); currentVert.startVert = p; currentVert.indices = FindVerts(p); if (currentVert.indices == null) { Debug.Log("Error! No match found"); } Verts.Add(currentVert); break; case "Anim": //currentVert.con = MegaBezVector3KeyControl.LoadBezVector3KeyControl(br); currentVert.con = MegaParseBezVector3Control.LoadBezVector3KeyControl(br); currentVert.con.Scale(scl); break; default: return(false); } return(true); }