private void pasteRenderInfo(SOTreeNode so) { SuperObjectInfo info = GetStructure <SuperObjectInfo>(processHandle, so.superObject.info); info.renderInfo = clipboardBuffer; WriteStructure(processHandle, so.superObject.info, info); }
private void setSOCamera(SOTreeNode so, bool camera) { SuperObjectInfo info = GetStructure <SuperObjectInfo>(processHandle, so.superObject.info); info.isCamera = camera ? 1 : 0; WriteStructure(processHandle, so.superObject.info, info); }
private void copyRenderInfo(SOTreeNode so) { SuperObjectInfo info = GetStructure <SuperObjectInfo>(processHandle, so.superObject.info); clipboardBuffer = info.renderInfo; }
private void retrieveHierarchyRecursive(SOTreeNode parent, int mainCharacterAddress, int previousMainSectorAddress) { int nextBrother = parent.superObject.firstChild; // First brother is the child of the parent object if (nextBrother == 0) { return; } do { SuperObject so = GetStructure <SuperObject>(processHandle, nextBrother); bool isMainChar = (mainCharacterAddress == nextBrother) ? true : false; bool isPreviousSector = (previousMainSectorAddress == nextBrother) ? true : false; string name = "SO Type " + so.type + " address 0x" + nextBrother.ToString("X"); SuperObjectInfo soInfo = GetStructure <SuperObjectInfo>(processHandle, so.info); int someInfoStruct = soInfo.standardGameStruct; int string1address = someInfoStruct + 0x50; int string2address = someInfoStruct + 0x84; int string3address = someInfoStruct + 0xAC; string string1 = ReadString(processHandle, string1address, 32); string string2 = ReadString(processHandle, string2address, 32); string string3 = ReadString(processHandle, string3address, 32); bool visible = SuperObject.getVisibleBit(so.renderBits); if (!visible) { name = "(INVIS) " + name; } if (so.type == 2) { name += "(" + string1 + ", " + string2 + ", " + string3 + ")"; } if (isMainChar) { if (so.type == 2) { name = "(M) " + name; } else { name = "(ACTIVE) " + name; } } if (isPreviousSector) { name = "(PREV ACTIVE) " + name; } var childNode = new SOTreeNode() { name = name, superObject = so, superObjectAddress = nextBrother, isMainCharacter = isMainChar }; retrieveHierarchyRecursive(childNode, mainCharacterAddress, previousMainSectorAddress); parent.subitems.Add(childNode); nextBrother = so.nextBrother; } while (nextBrother != 0); }