private static AccessModifier GetAccessModifier(SyntaxNodeAnalysisContext context, MemberDeclarationSyntax declaration, SyntaxTokenList modifiers)
        {
            if (!ModifierUtility.ContainsAccessModifier(modifiers))
            {
                if (modifiers.Any(SyntaxKind.PartialKeyword))
                {
                    if (!declaration.IsKind(SyntaxKind.MethodDeclaration))
                    {
                        AccessModifier?accessModifier = GetPartialAccessModifier(context, declaration);

                        if (accessModifier != null)
                        {
                            if (accessModifier == AccessModifier.None)
                            {
                                return(ModifierUtility.GetDefaultAccessModifier(declaration));
                            }
                            else
                            {
                                return(accessModifier.Value);
                            }
                        }
                    }
                }
                else
                {
                    return(ModifierUtility.GetDefaultAccessModifier(declaration));
                }
            }

            return(AccessModifier.None);
        }
Ejemplo n.º 2
0
        protected override void OnEnable()
        {
            base.OnEnable();

            m_Type          = serializedObject.FindProperty("m_Type");
            m_FillMethod    = serializedObject.FindProperty("m_FillMethod");
            m_FillOrigin    = serializedObject.FindProperty("m_FillOrigin");
            m_FillClockwise = serializedObject.FindProperty("m_FillClockwise");
            m_FillAmount    = serializedObject.FindProperty("m_FillAmount");
            m_Sprite        = serializedObject.FindProperty("m_Sprite");

            var typeEnum = (Image.Type)m_Type.enumValueIndex;

            showFilled = new AnimBool(!m_Type.hasMultipleDifferentValues && typeEnum == Image.Type.Filled);
            showFilled.valueChanged.AddListener(Repaint);

            attrList = ModifierUtility.GetAttributeList();

            m_borderWidth = serializedObject.FindProperty("borderWidth");
            m_falloffDist = serializedObject.FindProperty("falloffDistance");

            if ((target as ProceduralImage).GetComponent <ProceduralImageModifier> () != null)
            {
                selectedId = attrList.IndexOf(((ModifierID[])(target as ProceduralImage).GetComponent <ProceduralImageModifier> ().GetType().GetCustomAttributes(typeof(ModifierID), false)) [0]);
            }
            selectedId = Mathf.Max(selectedId, 0);
            EditorApplication.update -= UpdateProceduralImage;
            EditorApplication.update += UpdateProceduralImage;
        }
Ejemplo n.º 3
0
        protected void ModifierGUI()
        {
            GUIContent[] con = new GUIContent[attrList.Count];
            for (int i = 0; i < con.Length; i++)
            {
                con[i] = new GUIContent(attrList[i].Name);
            }

            int index = EditorGUILayout.Popup(new GUIContent("Modifier Type"), selectedId, con);

            if (selectedId != index)
            {
                selectedId = index;
                foreach (var item in targets)
                {
                    DestroyImmediate((item as ProceduralImage).GetComponent <ProceduralImageModifier>(), true);
                    (item as ProceduralImage).ModifierType = ModifierUtility.GetTypeWithId(attrList[selectedId].Name);

                    MoveComponentBehind((item as ProceduralImage),
                                        (item as ProceduralImage).GetComponent <ProceduralImageModifier>());
                }

                //Exit GUI prevents Unity from trying to draw destroyed components editor;
                EditorGUIUtility.ExitGUI();
            }
        }
        private void AnalyzeMemberDeclaration(SyntaxNodeAnalysisContext context)
        {
            if (GeneratedCodeAnalyzer?.IsGeneratedCode(context) == true)
            {
                return;
            }

            var declaration = (MemberDeclarationSyntax)context.Node;

            SyntaxTokenList modifiers = declaration.GetModifiers();

            if (modifiers.Count > 1 &&
                !ModifierUtility.IsSorted(modifiers) &&
                !declaration.ContainsDirectives(modifiers.Span))
            {
                context.ReportDiagnostic(
                    DiagnosticDescriptors.ReorderModifiers,
                    Location.Create(context.Node.SyntaxTree, modifiers.Span));
            }

            AccessModifier accessModifier = GetAccessModifier(context, declaration, modifiers);

            if (accessModifier != AccessModifier.None)
            {
                Location location = GetLocation(declaration);

                if (location != null)
                {
                    context.ReportDiagnostic(
                        DiagnosticDescriptors.AddDefaultAccessModifier,
                        location,
                        ImmutableDictionary.CreateRange(new KeyValuePair <string, string>[] { new KeyValuePair <string, string>(nameof(AccessModifier), accessModifier.ToString()) }));
                }
            }
        }
        protected void ModifierGUI()
        {
            GUIContent[] con = new GUIContent[attrList.Count];
            for (int i = 0; i < con.Length; i++)
            {
                con[i] = new GUIContent(attrList[i].Name);
            }


            bool hasMultipleValues = false;

            if (targets.Length > 1)
            {
                Type t = (targets[0] as ProceduralImage).GetComponent <ProceduralImageModifier>().GetType();
                foreach (var item in targets)
                {
                    if ((item as ProceduralImage).GetComponent <ProceduralImageModifier>().GetType() != t)
                    {
                        hasMultipleValues = true;
                        break;
                    }
                }
            }

            if (!hasMultipleValues)
            {
                int index = EditorGUILayout.Popup(new GUIContent("Modifier Type"), selectedId, con);
                if (selectedId != index)
                {
                    selectedId = index;
                    foreach (var item in targets)
                    {
                        DestroyImmediate((item as ProceduralImage).GetComponent <ProceduralImageModifier>(), true);
                        (item as ProceduralImage).ModifierType = ModifierUtility.GetTypeWithId(attrList[selectedId].Name);

                        MoveComponentBehind((item as ProceduralImage), (item as ProceduralImage).GetComponent <ProceduralImageModifier>());
                    }
                    //Exit GUI prevents Unity from trying to draw destroyed components editor;
                    EditorGUIUtility.ExitGUI();
                }
            }
            else
            {
                int index = EditorGUILayout.Popup(new GUIContent("Modifier Type"), -1, con);
                if (index != -1)
                {
                    selectedId = index;
                    foreach (var item in targets)
                    {
                        DestroyImmediate((item as ProceduralImage).GetComponent <ProceduralImageModifier>(), true);
                        (item as ProceduralImage).ModifierType = ModifierUtility.GetTypeWithId(attrList[selectedId].Name);

                        MoveComponentBehind((item as ProceduralImage), (item as ProceduralImage).GetComponent <ProceduralImageModifier>());
                    }
                    //Exit GUI prevents Unity from trying to draw destroyed components editor;
                    EditorGUIUtility.ExitGUI();
                }
            }
        }
        private static SyntaxTokenList CreateModifiers(SyntaxTokenList modifiers)
        {
            modifiers = RemoveVirtualKeywordIfPresent(modifiers);

            modifiers = AddAbstractKeywordIfNotPresent(modifiers);

            if (!ModifierUtility.IsSorted(modifiers))
            {
                modifiers = TokenList(modifiers.OrderBy(f => f, ModifierComparer.Instance));
            }

            return(modifiers);
        }
Ejemplo n.º 7
0
 protected override void OnEnable()
 {
     base.OnEnable();
     attrList       = ModifierUtility.GetAttributeList();
     m_spritePro    = serializedObject.FindProperty("m_sprite");
     m_borderWidth  = serializedObject.FindProperty("borderWidth");
     m_falloffDist  = serializedObject.FindProperty("falloffDistance");
     m_needClipping = serializedObject.FindProperty("needClipping");
     if ((target as ProceduralImage).GetComponent <ProceduralImageModifier> () != null)
     {
         selectedId = attrList.IndexOf(((ModifierID[])(target as ProceduralImage).GetComponent <ProceduralImageModifier> ().GetType().GetCustomAttributes(typeof(ModifierID), false))[0]);
     }
     selectedId = Mathf.Max(selectedId, 0);
     EditorApplication.update -= UpdateProceduralImage;
     EditorApplication.update += UpdateProceduralImage;
 }
        private static AccessModifier?GetPartialAccessModifier(
            SyntaxNodeAnalysisContext context,
            MemberDeclarationSyntax declaration)
        {
            var accessModifier = AccessModifier.None;

            ISymbol symbol = context.SemanticModel.GetDeclaredSymbol(declaration, context.CancellationToken);

            if (symbol != null)
            {
                foreach (SyntaxReference syntaxReference in symbol.DeclaringSyntaxReferences)
                {
                    var declaration2 = syntaxReference.GetSyntax(context.CancellationToken) as MemberDeclarationSyntax;

                    if (declaration2 != null)
                    {
                        SyntaxTokenList modifiers = declaration2.GetModifiers();

                        AccessModifier accessModifier2 = ModifierUtility.GetAccessModifier(modifiers);

                        if (accessModifier2 != AccessModifier.None)
                        {
                            if (accessModifier == AccessModifier.None || accessModifier == accessModifier2)
                            {
                                accessModifier = accessModifier2;
                            }
                            else
                            {
                                return(null);
                            }
                        }
                    }
                }
            }

            return(accessModifier);
        }
Ejemplo n.º 9
0
 public void Configure(Values values)
 {
     ModifierType  = ModifierUtility.ParseModifierType(values.Get("AffectedStat", string.Empty));
     ModifierValue = new OffsetValue(values.Get("Amount", -1f), ModifierUtility.ParseOffsetValueType(values.Get("ActType", string.Empty)));
     Name          = values.Get("Name", string.Empty);
 }