コード例 #1
0
 public UnityEventTargetReference([NotNull] IPlainScalarNode owner, EventHandlerArgumentMode mode, string type, FileID fileId)
     : base(owner)
 {
     myMode   = mode;
     myType   = type;
     myFileId = fileId;
 }
コード例 #2
0
        public EventHandlerSymbolFilter(EventHandlerArgumentMode mode, string type, IPsiModule psiModule)
        {
            myMode = mode;
            if (mode == EventHandlerArgumentMode.UnityType && type != null)
            {
                myType = TypeFactory.CreateTypeByCLRName(type, psiModule);
            }
            else if (mode != EventHandlerArgumentMode.None)
            {
                var predefinedTypes = psiModule.GetPredefinedType();
                switch (mode)
                {
                case EventHandlerArgumentMode.Int:
                    myType = predefinedTypes.Int;
                    break;

                case EventHandlerArgumentMode.Float:
                    myType = predefinedTypes.Float;
                    break;

                case EventHandlerArgumentMode.String:
                    myType = predefinedTypes.String;
                    break;

                case EventHandlerArgumentMode.Bool:
                    myType = predefinedTypes.Bool;
                    break;
                }
            }
        }
コード例 #3
0
 public AssetMethodData(LocalReference location, string methodName, TextRange textRange, EventHandlerArgumentMode mode, string type, IHierarchyReference targetReference)
 {
     Location              = location;
     MethodName            = methodName;
     TextRange             = textRange;
     Mode                  = mode;
     Type                  = type;
     TargetScriptReference = targetReference;
 }
コード例 #4
0
 public AssetMethodData(LocalReference location, string methodName, TextRange textRange, EventHandlerArgumentMode mode, string type, IHierarchyReference targetReference)
 {
     Assertion.Assert(location != null, "location != null");
     Assertion.Assert(targetReference != null, "targetReference != null");
     Assertion.Assert(methodName != null, "methodName != null");
     Location              = location;
     MethodName            = methodName;
     TextRange             = textRange;
     Mode                  = mode;
     Type                  = type;
     TargetScriptReference = targetReference;
 }
コード例 #5
0
 public AssetMethodUsages(string ownerName, string methodName, TextRange textRangeOwnerPsiPersistentIndex, OWORD textRangeOwner, EventHandlerArgumentMode mode, string type, IHierarchyReference targetReference)
 {
     Assertion.Assert(targetReference != null, "targetReference != null");
     Assertion.Assert(methodName != null, "methodName != null");
     OwnerName  = ownerName;
     MethodName = methodName;
     TextRangeOwnerPsiPersistentIndex = textRangeOwnerPsiPersistentIndex;
     TextRangeOwner        = textRangeOwner;
     Mode                  = mode;
     Type                  = type;
     TargetScriptReference = targetReference;
 }
コード例 #6
0
        public EventHandlerSymbolFilter(EventHandlerArgumentMode mode, string type, IPsiModule psiModule)
        {
            myTypes = new FrugalLocalList <IType>();

            myMode = mode;
            var predefinedTypes = psiModule.GetPredefinedType();

            switch (mode)
            {
            case EventHandlerArgumentMode.EventDefined:
                if (type != null)
                {
                    // Find the UnityEvent base type, and use the type parameters as the required arguments
                    // This only works for scenes serialised in Unity 2018.3 and below. The field was removed in 2018.4
                    var eventType             = TypeFactory.CreateTypeByCLRName(type, psiModule);
                    var unityEventType        = GetUnityEventType(eventType);
                    var unityEventTypeElement = unityEventType?.GetTypeElement();
                    if (unityEventType != null && unityEventTypeElement != null)
                    {
                        var(_, substitution) = unityEventType.Resolve();
                        var typeParameters = unityEventTypeElement.TypeParameters;
                        foreach (var t in typeParameters)
                        {
                            myTypes.Add(substitution.Apply(t));
                        }
                    }
                }
                break;

            case EventHandlerArgumentMode.UnityObject:
                myTypes.Add(type == null
                        ? TypeFactory.CreateTypeByCLRName(KnownTypes.Object, NullableAnnotation.Unknown, psiModule)
                        : TypeFactory.CreateTypeByCLRName(type, psiModule));
                break;

            case EventHandlerArgumentMode.Int:
                myTypes.Add(predefinedTypes.Int);
                break;

            case EventHandlerArgumentMode.Float:
                myTypes.Add(predefinedTypes.Float);
                break;

            case EventHandlerArgumentMode.String:
                myTypes.Add(predefinedTypes.String);
                break;

            case EventHandlerArgumentMode.Bool:
                myTypes.Add(predefinedTypes.Bool);
                break;
            }
        }