public void ParseFile(string assetpath, ParseClassCallbackType cb) { FileStream fs = new FileStream(assetpath, FileMode.Open, FileAccess.Read, System.IO.FileShare.Read); BinaryReader br = new BinaryReader(fs); bool processing = true; while (processing) { string classname = MegaParse.ReadString(br); if (classname == "Done") { break; } int chunkoff = br.ReadInt32(); long fpos = fs.Position; cb(classname, br); fs.Position = fpos + chunkoff; } br.Close(); }
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); }
public bool ParseChan(BinaryReader br, string id) { //Debug.Log("ParseChan " + id); switch (id) { case "Target": currentChan.mTargetCache.Add(LoadTarget(br)); break; case "Name": currentChan.mName = MegaParse.ReadString(br); break; case "Percent": currentChan.Percent = br.ReadSingle(); break; case "SpinMax": currentChan.mSpinmax = br.ReadSingle(); break; case "SpinMin": currentChan.mSpinmin = br.ReadSingle(); break; case "UseLim": currentChan.mUseLimit = (br.ReadInt32() == 1); break; case "Override": currentChan.mActiveOverride = (br.ReadInt32() == 1); break; case "Curve": currentChan.mCurvature = br.ReadSingle(); break; //case "Anim": currentChan.control = LoadAnim(br); break; } return(true); }
//public delegate bool ParseBinCallbackType(BinaryReader br, string id); //public delegate void ParseClassCallbackType(string classname, BinaryReader br); static public void Parse(BinaryReader br, ParseBinCallbackType cb) { bool readchunk = true; while (readchunk) { string id = MegaParse.ReadString(br); if (id == "eoc") { break; } int skip = br.ReadInt32(); long fpos = br.BaseStream.Position; if (!cb(br, id)) { Debug.Log("Error Loading chunk id " + id); readchunk = false; // done break; } br.BaseStream.Position = fpos + skip; } }
public bool ParseTarget(BinaryReader br, string id) { //Debug.Log("ParseTarget " + id); switch (id) { case "Name": currentTarget.name = MegaParse.ReadString(br); break; case "Percent": currentTarget.percent = br.ReadSingle(); break; case "TPoints": currentTarget.points = MegaParse.ReadP3v(br); ConvertPoints(currentTarget.points); break; case "MoPoints": Debug.Log("Got morpho points"); break; } return(true); }