Esempio n. 1
0
 EditorTable <SerializedObject> .Column CreatePropertyColumn(string propertyName, bool onlyOffensive = true)
 {
     return(table.AddColumn((rect, serializedObject) => {
         var property = serializedObject.FindProperty(propertyName);
         if (property == null)
         {
             return;
         }
         EditorGUI.PropertyField(rect, property, GUIContent.none);
     }));
 }
Esempio n. 2
0
        void BuildTable()
        {
            table = new EditorTable <SerializedObject>();

            table.OnDrawRowStart += (rect, element) => {
                var gameObj = (element.targetObject as Component).gameObject;
                if (!Selection.gameObjects.Contains(gameObj))
                {
                    return;
                }
                var color = GUI.backgroundColor;
                GUI.backgroundColor = Color.blue;
                GUI.Box(rect, GUIContent.none);
                GUI.backgroundColor = color;
            };

            var enabledCol = CreatePropertyColumn("m_Enabled", false);
            var nameCol    = table.AddColumn((rect, serializedObject) => {
                var target = serializedObject.targetObject as Component;
                EditorGUI.LabelField(rect, target.name);
                var evt     = Event.current;
                var gameObj = target.gameObject;
                if (evt.type != EventType.MouseUp || !rect.Contains(evt.mousePosition))
                {
                    return;
                }
                if ((evt.modifiers & EventModifiers.Control) != 0)
                {
                    if (Selection.gameObjects.Contains(gameObj))
                    {
                        return;
                    }
                    var temp = new List <Object>(Selection.gameObjects);
                    temp.Add(gameObj);
                    Selection.objects = temp.ToArray();
                }
                else
                {
                    Selection.activeGameObject = gameObj;
                }
            });
            var typeCol = table.AddColumn((rect, serializedObject) => {
                var color   = GUI.color;
                var hitbox  = serializedObject.targetObject as Hitbox;
                var hurtbox = serializedObject.targetObject as Hurtbox;
                if (hitbox != null)
                {
                    GUI.color = HitboxUtil.GetHitboxColor(hitbox.Type);
                }
                if (hurtbox != null)
                {
                    GUI.color = HitboxUtil.GetHurtboxColor(hurtbox.Type);
                }
                EditorGUI.PropertyField(rect, serializedObject.FindProperty("Type"), GUIContent.none);
                GUI.color = color;
            });
            var priorityCol         = CreatePropertyColumn("Priority");
            var damageCol           = CreatePropertyColumn("BaseDamage");
            var baseKnockbackCol    = CreatePropertyColumn("BaseKnockback");
            var knockbackScalingCol = CreatePropertyColumn("KnockbackScaling");
            var angleCol            = CreatePropertyColumn("KnockbackAngle");

            table.Padding             = new Vector2(5f, 2f);
            table.LabelStyle          = EditorStyles.toolbar;
            table.LabelPadding        = 2.5f;
            enabledCol.Name           = "";
            enabledCol.Width          = 0.01f;
            nameCol.Name              = "Hitbox";
            nameCol.Width             = 0.19f;
            typeCol.Name              = "Type";
            typeCol.Width             = 0.1f;
            damageCol.Name            = "Damage";
            damageCol.Width           = 0.1f;
            baseKnockbackCol.Name     = "Knockback";
            baseKnockbackCol.Width    = 0.1f;
            knockbackScalingCol.Name  = "Scaling";
            knockbackScalingCol.Width = 0.1f;
            priorityCol.Name          = "Priority";
            priorityCol.Width         = 0.1f;
            angleCol.Name             = "Angle";
            angleCol.Width            = 0.2f;
        }