public override void OnRebuild(VoidPtr address, int length, bool force) { _entryOffset = address; FDefEventArgument *header = (FDefEventArgument *)address; header->_type = (int)_type; header->_data = _value; }
protected internal override void OnRebuild(VoidPtr address, int length, bool force) { int off = 0; foreach (MoveDefEventNode e in Children) { off += e.Children.Count * 8; } FDefEventArgument *paramAddr = (FDefEventArgument *)address; FDefEvent * eventAddr = (FDefEvent *)(address + off); _entryOffset = eventAddr; foreach (MoveDefEventNode e in Children) { if (e._name == "FADEF00D" || e._name == "FADE0D8A") { continue; } e._entryOffset = eventAddr; *eventAddr = new FDefEvent() { _id = e.id, _nameSpace = e.nameSpace, _numArguments = (byte)e.Children.Count, _unk1 = e.unk1 }; if (e.Children.Count > 0) { eventAddr->_argumentOffset = (uint)paramAddr - (uint)_rebuildBase; _lookupOffsets.Add((int)eventAddr->_argumentOffset.Address - (int)_rebuildBase); } else { eventAddr->_argumentOffset = 0; } eventAddr++; foreach (MoveDefEventParameterNode p in e.Children) { p._entryOffset = paramAddr; if (p._type != ArgVarType.Offset) { *paramAddr = new FDefEventArgument() { _type = (int)p._type, _data = p._value } } ; else { Root._postProcessNodes.Add(p); //if ((p as MoveDefEventOffsetNode).action != null) // _lookupOffsets.Add(0); } paramAddr++; } } eventAddr++; //Terminate }
public override void PostProcess() { FDefEventArgument *arg = (FDefEventArgument *)_entryOffset; arg->_type = (int)_type; if (action != null) { if (action._entryOffset == 0) { Console.WriteLine("Action offset = 0"); } arg->_data = (int)action._entryOffset - (int)action._rebuildBase; if (arg->_data > 0) { Root._lookupOffsets.Add((int)arg->_data.Address - (int)_rebuildBase); } } else { arg->_data = -1; if (External) { if (_extNode is MoveDefReferenceEntryNode) { _entryOffset += 4; } } else { foreach (MoveDefReferenceEntryNode e in Root.references.Children) { if (e.Name == this.Name) { _extNode = e; //if (!e._refs.Contains(this)) e._refs.Add(this); _entryOffset += 4; break; } } } } }