Beispiel #1
0
                public override void Deserialize(IUnrealStream stream)
                {
                    if (NativeTable == null)
                    {
                        NativeTable = new NativeTableItem
                        {
                            Type      = FunctionType.Function,
                            Name      = "UnresolvedNativeFunction_" + RepresentToken,
                            ByteToken = RepresentToken
                        };
                    }

                    switch (NativeTable.Type)
                    {
                    case FunctionType.Function:
                        DeserializeCall();
                        break;

                    case FunctionType.PreOperator:
                    case FunctionType.PostOperator:
                        DeserializeUnaryOperator();
                        break;

                    case FunctionType.Operator:
                        DeserializeBinaryOperator();
                        break;

                    default:
                        DeserializeCall();
                        break;
                    }
                }
            private NativeFunctionToken FindNativeTable( int nativeIndex )
            {
                var nativeFuncToken = new NativeFunctionToken();
                try
                {
                    var nativeTableItem = _Container.Package.NTLPackage != null
                        ? _Container.Package.NTLPackage.FindTableItem( nativeIndex )
                        : null;
                    if( nativeTableItem != null )
                    {
                        nativeFuncToken.NativeTable = nativeTableItem;
                    }
                    else
                    {
                        // TODO: Rewrite as FindChild( lambda )
                        var table = _Container.Package.Exports.Find(
                            e => (e.ClassName == "Function" && ((UFunction)(e.Object)).NativeToken == nativeIndex)
                        );

                        if( table != null )
                        {
                            var func = table.Object as UFunction;
                            if( func != null )
                            {
                                nativeTableItem = new NativeTableItem( func );
                                nativeFuncToken.NativeTable = nativeTableItem;
                            }
                        }
                    }
                }
                catch( ArgumentOutOfRangeException )
                {
                    // ...
                }
                return nativeFuncToken;
            }
Beispiel #3
0
                public override void Deserialize( IUnrealStream stream )
                {
                    if( NativeTable == null )
                    {
                        NativeTable = new NativeTableItem
                        {
                            Type = FunctionType.Function,
                            Name = "UnresolvedNativeFunction_" + RepresentToken,
                            ByteToken = RepresentToken
                        };
                    }

                    switch( NativeTable.Type )
                    {
                        case FunctionType.Function:
                            DeserializeCall();
                            break;

                        case FunctionType.PreOperator:
                        case FunctionType.PostOperator:
                            DeserializeUnaryOperator();
                            break;

                        case FunctionType.Operator:
                            DeserializeBinaryOperator();
                            break;

                        default:
                            DeserializeCall();
                            break;
                    }
                }