public virtual SearcherFilter GetEdgeSearcherFilter(IEdgeModel edgeModel)
        {
            Type       it  = edgeModel.InputPortModel.DataTypeHandle.Resolve(m_Stencil);
            IPortModel opm = edgeModel.OutputPortModel;
            TypeHandle oth = opm.DataTypeHandle == TypeHandle.ThisType ? m_Stencil.GetThisType() : opm.DataTypeHandle;
            Type       ot  = oth.Resolve(m_Stencil);

            return(new SearcherFilter(SearcherContext.Graph)
                   .WithVisualScriptingNodesExcept(new[] { typeof(ThisNodeModel) }) // TODO : We should be able to determine if a VSNode type has input port instead of doing this
                   .WithUnaryOperators(ot, opm.NodeModel is IConstantNodeModel)
                   .WithBinaryOperators(ot));
        }
        public virtual SearcherFilter GetOutputToStackSearcherFilter(IPortModel portModel, IStackModel stackModel)
        {
            // TODO : Need to be handled by TypeHandle.Resolve
            TypeHandle      typeHandle = portModel.DataTypeHandle == TypeHandle.ThisType ? m_Stencil.GetThisType() : portModel.DataTypeHandle;
            Type            type       = typeHandle.Resolve(m_Stencil);
            GraphAssetModel assetModel = portModel.AssetModel as GraphAssetModel;

            return(new SearcherFilter(SearcherContext.Stack)
                   .WithVisualScriptingNodes()
                   .WithUnaryOperators(type)
                   .WithGraphAsset(assetModel));
        }
        public SearcherFilter GetOutputToGraphSearcherFilter(IPortModel portModel)
        {
            // TODO : Need to be handled by TypeHandle.Resolve
            TypeHandle        typeHandle = portModel.DataTypeHandle == TypeHandle.ThisType ? m_Stencil.GetThisType() : portModel.DataTypeHandle;
            Type              type       = typeHandle.Resolve(m_Stencil);
            VSGraphAssetModel assetModel = portModel.AssetModel as VSGraphAssetModel;

            return(new SearcherFilter(SearcherContext.Graph)
                   .WithVisualScriptingNodes()
                   .WithUnaryOperators(type, portModel.NodeModel is IConstantNodeModel)
                   .WithBinaryOperators(type)
                   .WithGraphAsset(assetModel));
        }
        public virtual Type GetConstantNodeModelType(TypeHandle typeHandle)
        {
            if (s_TypeToConstantNodeModelTypeCache == null)
            {
                s_TypeToConstantNodeModelTypeCache = new Dictionary <TypeHandle, Type>
                {
                    { typeof(Boolean).GenerateTypeHandle(this), typeof(BooleanConstantNodeModel) },
                    { typeof(Color).GenerateTypeHandle(this), typeof(ColorConstantModel) },
                    { typeof(AnimationCurve).GenerateTypeHandle(this), typeof(CurveConstantNodeModel) },
                    { typeof(Double).GenerateTypeHandle(this), typeof(DoubleConstantModel) },
                    { typeof(Unknown).GenerateTypeHandle(this), typeof(EnumConstantNodeModel) },
                    { typeof(Single).GenerateTypeHandle(this), typeof(FloatConstantModel) },
                    { typeof(InputName).GenerateTypeHandle(this), typeof(InputConstantModel) },
                    { typeof(Int32).GenerateTypeHandle(this), typeof(IntConstantModel) },
                    { typeof(LayerName).GenerateTypeHandle(this), typeof(LayerConstantModel) },
                    { typeof(LayerMask).GenerateTypeHandle(this), typeof(LayerMaskConstantModel) },
                    { typeof(Object).GenerateTypeHandle(this), typeof(ObjectConstantModel) },
                    { typeof(Quaternion).GenerateTypeHandle(this), typeof(QuaternionConstantModel) },
                    { typeof(String).GenerateTypeHandle(this), typeof(StringConstantModel) },
                    { typeof(TagName).GenerateTypeHandle(this), typeof(TagConstantModel) },
                    { typeof(Vector2).GenerateTypeHandle(this), typeof(Vector2ConstantModel) },
                    { typeof(Vector3).GenerateTypeHandle(this), typeof(Vector3ConstantModel) },
                    { typeof(Vector4).GenerateTypeHandle(this), typeof(Vector4ConstantModel) },
                    { typeof(SceneAsset).GenerateTypeHandle(this), typeof(ConstantSceneAssetNodeModel) },
                };
            }

            if (s_TypeToConstantNodeModelTypeCache.TryGetValue(typeHandle, out var result))
            {
                return(result);
            }

            Type t = typeHandle.Resolve(this);

            if (t.IsEnum || t == typeof(Enum))
            {
                return(typeof(EnumConstantNodeModel));
            }

            return(null);
        }
Esempio n. 5
0
 public static TypeSyntax ToTypeSyntax(this TypeHandle handle, Stencil stencil)
 {
     return(handle.Resolve(stencil).ToTypeSyntax());
 }
Esempio n. 6
0
 public static ITypeMetadata GetMetadata(this TypeHandle th, ITypeMetadataResolver resolver)
 {
     return(resolver.Resolve(th));
 }
Esempio n. 7
0
 public static ITypeMetadata GetMetadata(this TypeHandle th, Stencil stencil)
 {
     return(th.GetMetadata(stencil.GraphContext.TypeMetadataResolver));
 }
Esempio n. 8
0
 public static Type Resolve(this TypeHandle th, CSharpTypeSerializer serializer)
 {
     return(serializer.ResolveType(th));
 }
Esempio n. 9
0
 public static Type Resolve(this TypeHandle th, Stencil stencil)
 {
     return(th.Resolve(stencil.GraphContext.CSharpTypeSerializer));
 }
Esempio n. 10
0
 public Type ResolveType(TypeHandle th)
 {
     return(Deserialize(th.Identification));
 }