Example #1
0
        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
        }
Example #2
0
        protected override void OnPopulate()
        {
            FDefEvent *ev = Header;

            if (!_isBlank)
            {
                while (ev->_nameSpace != 0 || ev->_id != 0)
                {
                    new MoveDefEventNode().Initialize(this, new DataSource(((VoidPtr)ev++), 8));
                }
            }

            SetSizeInternal(Children.Count * 8 + 8);
        }