static public void SetPEEmitState(PEType eType, bool bIsEmit) { string strName = ""; switch (eType) { case PEType.eBubbles: strName = "Bubbles"; break; case PEType.eFireworks: strName = "Fireworks"; break; case PEType.eWinFireworks: strName = "WinFireworks"; break; } GameObject cPEObj = GameObject.Find(strName); if (!cPEObj) { return; } ParticleEmitter cPE = cPEObj.GetComponent(typeof(ParticleEmitter)) as ParticleEmitter; cPE.emit = bIsEmit; }
static public void ChangePEPosition(PEType eType) { string strName = ""; switch (eType) { case PEType.eBubbles: strName = "Bubbles"; break; case PEType.eFireworks: strName = "Fireworks"; break; } GameObject cPEObj = GameObject.Find(strName); if (!cPEObj) { return; } switch (eType) { case PEType.eBubbles: cPEObj.transform.localPosition = new Vector3(206f, 0, 1230f); break; case PEType.eFireworks: switch ((int)UnityEngine.Random.Range(0, 4)) { case 0: cPEObj.transform.localPosition = new Vector3(112f, 90f, 1402f); break; case 1: cPEObj.transform.localPosition = new Vector3(270f, 91f, 1402f); break; case 2: cPEObj.transform.localPosition = new Vector3(308f, 98f, 1402f); break; case 3: cPEObj.transform.localPosition = new Vector3(182f, 143f, 1402f); break; } break; } }
public List <PEType> ParseTypes(Stream peStream, Stream pdbStream) { var readerParameters = new ReaderParameters { ReadSymbols = true, SymbolStream = pdbStream }; var assemblyDefinition = AssemblyDefinition.ReadAssembly(peStream, readerParameters); PdbReader rader; var types = new List <PEType>(); foreach (var typeDefinition in assemblyDefinition.MainModule.Types) { if (typeDefinition.Name != "<Module>") { var type = new PEType { Name = typeDefinition.Name, Methods = new List <PEMethod>() }; foreach (var methodDefinition in typeDefinition.Methods) { if (methodDefinition.Name != ".ctor") { type.Methods.Add( new PEMethod { Name = methodDefinition.Name, BodyLines = ParseInstructions(methodDefinition.Body.Instructions) }); } } types.Add(type); } } return(types); }
static public ParticleEmitter CreateParticle(PEType eType) { string strName = ""; switch (eType) { case PEType.eBubbles: strName = "player/SceneElements/Bubbles"; break; case PEType.eFireworks: strName = "player/SceneElements/Fireworks"; break; } GameObject cPEObj = Resources.Load(strName) as GameObject; GameObject cPEObjInt = Utility.Instantiate(cPEObj) as GameObject; cPEObjInt.name = cPEObj.name; ParticleEmitter cPE = cPEObjInt.GetComponent(typeof(ParticleEmitter)) as ParticleEmitter; ChangePEPosition(eType); cPE.emit = false; return(cPE); }
private void CalcHeaderOffsets() { this.fs = new FileStream( assemblyPath, FileMode.Open, FileAccess.Read ); this.rdr = new BinaryReader( fs ); dos_magic = rdr.ReadUInt16(); if ( dos_magic == 0x5a4d ) { fs.Position = 0x3c; peHeader = rdr.ReadUInt32(); fileHeader = peHeader + 4; optionalHeader = fileHeader + 20; fs.Position = optionalHeader; peType = (PEType)rdr.ReadUInt16(); dataDirectory = peType == PEType.PE32Plus ? optionalHeader + 112 : optionalHeader + 96; fs.Position = dataDirectory - 4; numDataDirectoryEntries = rdr.ReadUInt32(); fs.Position = peHeader; pe_signature = rdr.ReadUInt32(); rdr.ReadUInt16(); // machine numberOfSections = rdr.ReadUInt16(); fs.Position += 12; optionalHeaderSize = rdr.ReadUInt16(); dataSections = optionalHeader + optionalHeaderSize; sections = new DataSection[numberOfSections]; fs.Position = dataSections; for( int i = 0; i < numberOfSections; i++ ) { fs.Position += 8; sections[i].VirtualSize = rdr.ReadUInt32(); sections[i].VirtualAddress = rdr.ReadUInt32(); uint rawDataSize = rdr.ReadUInt32(); sections[i].FileOffset = rdr.ReadUInt32(); if ( sections[i].VirtualSize == 0 ) sections[i].VirtualSize = rawDataSize; fs.Position += 16; } if (IsDotNetFile) { uint rva = DataDirectoryRva(14); if (rva != 0) { fs.Position = RvaToLfa(rva) + 8; uint metadata = rdr.ReadUInt32(); fs.Position = RvaToLfa(metadata); if (rdr.ReadUInt32() == 0x424a5342) { // Copy string representing runtime version fs.Position += 12; StringBuilder sb = new StringBuilder(); char c; while ((c = rdr.ReadChar()) != '\0') sb.Append(c); if (sb[0] == 'v') // Last sanity check ImageRuntimeVersion = sb.ToString(); // Could do fixups here for bad values in older files // like 1.x86, 1.build, etc. But we are only using // the major version anyway // Jump back and find the CorFlags fs.Position = RvaToLfa(rva) + 16; corFlags = (CorFlags)rdr.ReadUInt32(); } } } } }
public static void SetPEEmitState(PEType eType,bool bIsEmit) { string strName = ""; switch(eType) { case PEType.eBubbles: strName = "Bubbles"; break; case PEType.eFireworks: strName = "Fireworks"; break; case PEType.eWinFireworks: strName = "WinFireworks"; break; } GameObject cPEObj = GameObject.Find(strName); if(!cPEObj) return; ParticleEmitter cPE = cPEObj.GetComponent(typeof(ParticleEmitter)) as ParticleEmitter; cPE.emit = bIsEmit; }
public static ParticleEmitter CreateParticle(PEType eType) { string strName = ""; switch(eType) { case PEType.eBubbles: strName = "player/SceneElements/Bubbles"; break; case PEType.eFireworks: strName = "player/SceneElements/Fireworks"; break; } GameObject cPEObj = Resources.Load(strName) as GameObject; GameObject cPEObjInt = Utility.Instantiate(cPEObj) as GameObject; cPEObjInt.name = cPEObj.name; ParticleEmitter cPE = cPEObjInt.GetComponent(typeof(ParticleEmitter)) as ParticleEmitter; ChangePEPosition(eType); cPE.emit = false; return cPE; }
public static void ChangePEPosition(PEType eType) { string strName = ""; switch(eType) { case PEType.eBubbles: strName = "Bubbles"; break; case PEType.eFireworks: strName = "Fireworks"; break; } GameObject cPEObj = GameObject.Find(strName); if(!cPEObj) return; switch(eType) { case PEType.eBubbles: cPEObj.transform.localPosition = new Vector3(206f, 0, 1230f); break; case PEType.eFireworks: switch((int)UnityEngine.Random.Range(0,4)) { case 0: cPEObj.transform.localPosition = new Vector3(112f, 90f, 1402f); break; case 1: cPEObj.transform.localPosition = new Vector3(270f, 91f, 1402f); break; case 2: cPEObj.transform.localPosition = new Vector3(308f, 98f, 1402f); break; case 3: cPEObj.transform.localPosition = new Vector3(182f, 143f, 1402f); break; } break; } }
private void CalcHeaderOffsets() { this.fs = new FileStream(assemblyPath, FileMode.Open, FileAccess.Read); this.rdr = new BinaryReader(fs); dos_magic = rdr.ReadUInt16(); if (dos_magic == 0x5a4d) { fs.Position = 0x3c; peHeader = rdr.ReadUInt32(); fileHeader = peHeader + 4; optionalHeader = fileHeader + 20; fs.Position = optionalHeader; peType = (PEType)rdr.ReadUInt16(); dataDirectory = peType == PEType.PE32Plus ? optionalHeader + 112 : optionalHeader + 96; fs.Position = dataDirectory - 4; numDataDirectoryEntries = rdr.ReadUInt32(); fs.Position = peHeader; pe_signature = rdr.ReadUInt32(); rdr.ReadUInt16(); // machine numberOfSections = rdr.ReadUInt16(); fs.Position += 12; optionalHeaderSize = rdr.ReadUInt16(); dataSections = optionalHeader + optionalHeaderSize; sections = new DataSection[numberOfSections]; fs.Position = dataSections; for (int i = 0; i < numberOfSections; i++) { fs.Position += 8; sections[i].VirtualSize = rdr.ReadUInt32(); sections[i].VirtualAddress = rdr.ReadUInt32(); uint rawDataSize = rdr.ReadUInt32(); sections[i].FileOffset = rdr.ReadUInt32(); if (sections[i].VirtualSize == 0) { sections[i].VirtualSize = rawDataSize; } fs.Position += 16; } if (IsDotNetFile) { uint rva = DataDirectoryRva(14); if (rva != 0) { fs.Position = RvaToLfa(rva) + 8; uint metadata = rdr.ReadUInt32(); fs.Position = RvaToLfa(metadata); if (rdr.ReadUInt32() == 0x424a5342) { // Copy string representing runtime version fs.Position += 12; StringBuilder sb = new StringBuilder(); char c; while ((c = rdr.ReadChar()) != '\0') { sb.Append(c); } if (sb[0] == 'v') // Last sanity check { ImageRuntimeVersion = sb.ToString(); } // Could do fixups here for bad values in older files // like 1.x86, 1.build, etc. But we are only using // the major version anyway // Jump back and find the CorFlags fs.Position = RvaToLfa(rva) + 16; corFlags = (CorFlags)rdr.ReadUInt32(); } } } } }