Search Unity

  1. Unity 2019.1 is now released.
    Dismiss Notice

[RELEASED] Component Tool Panel - Compact, seamlessly intergated component utils

Discussion in 'Assets and Asset Store' started by Cobo3, May 15, 2016.

  1. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    Easy, compact, and seamlessly integrated component editor Promo3.png
    The way Unity currently approaches component operations (like removing or copying) is a known pain; specially when handling reordering.

    With Component Tool Panel, all of those operations are compact and easilly accessible from the inspector itself (no need to worry about intrusive extra windows or components)

    Promo1.png


    Features:
    · Easy reorder component by dragging them around.
    · Remove, copy, paste and reset components.
    · Supports multiediting.
    · Optional custom inspectors for many components.
    · Enable or disable, and collapse or expand components.
    · Handles script drag & drop operations (so that youd don't have to scroll to the bottom of the inspector).
    · Accessible add component button (so that youd don't have to scroll down the bottom of the inspector).
    · Tracks copied component information.
    · Component Preview utility.
     
    Last edited: Jun 21, 2016
  2. Serky

    Serky

    Joined:
    May 16, 2016
    Posts:
    2
    I'm interested in testing the product.
     
  3. Ludiq

    Ludiq

    Joined:
    Mar 6, 2015
    Posts:
    544
    Looks great! Out of curiosity: is it a component itself that you have to add to your GameObject? Or does it "inject" into every inspector? If it's the latter, I'd be curious to know how you did it.
     
  4. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    @Serky Just pm me your email :)

    And @ludiq, I made it so that there are no extra windows or components. It is right there, intergated into every inspector.

    To do it, I made a custom editor that replicates the behaviour of a GameObject inspector, and extended the OnDrawHeader functionality.

    Many people asked me how I achieved such a seamless intergation. If people keep asking, I'll post a tutorial on how to do it.
     
    theANMATOR2b likes this.
  5. Ludiq

    Ludiq

    Joined:
    Mar 6, 2015
    Posts:
    544
    Interesting! I'd definitely be interested in testing it then, even if it seems quite polished already.
     
  6. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    An Update just came up with several bug fixes, performance improvements and several new features.

    When right-clicking any component name, the preview of that components now pops up.
    Promo5.png

    Also, some components have an extended version of the inspector avaiable, which can be easely toggled on and off.
    Promo6.png
     
    Ludiq and ephemeral-life like this.
  7. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    So, the asset is now pending review.

    Thanks to all the testers who gave me their feedback I've been able to implement some cool features and fix several bugs.
     
  8. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,781
    This looks like a very handy tool. Nice work.

    Enable/Disable allows the game to be played and the disabled component will not effect the object it is applied to - but will continue to allow other components to function as normal, components below and above the disabled component?
     
  9. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    Enable/Disable works exactly as the built-in functionality. So
     
    theANMATOR2b likes this.
  10. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    So it finally made it to the asset store!

    Any feedback is highly appreciated
     
  11. Wanzyee

    Wanzyee

    Joined:
    Jul 24, 2015
    Posts:
    135
    Hi, @Cobo3,
    I've worked with this for a few days.
    It's really handy especially when having many components on one GameObject.
    And it's very convenient to jump editing between different GameObjects by opening many preview windows, LOL!
    Thanks, Cheer!
     
  12. Elzean

    Elzean

    Joined:
    Nov 25, 2011
    Posts:
    578
    Is there a way to copy more than one component at once to another gameobject ?
     
  13. Cobo3

    Cobo3

    Joined:
    Jun 16, 2013
    Posts:
    63
    I'm sorry @Elzean, but that is not currently possible
     
  14. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    543
    Heya,
    I get this error when clicking on many objects in the hierarchy:
    TargetException: Object does not match target type.
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:236)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    CTP.ExtendedEditor.OnEnable () (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ExtendedEditor.cs:37)
    UnityEditor.Editor:CreateEditor(Object)
    CTP.ComponentToolPanel:DrawElement(Rect, Component) (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ComponentToolPanel.cs:279)
    CTP.<InitializeList>c__AnonStorey1:<>m__0(Rect) (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ComponentToolPanel.cs:207)
    UnityEditorInternal.ReorderableList:DoListHeader(Rect) (at C:/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:616)
    UnityEditorInternal.ReorderableList:DoList(Rect) (at C:/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:398)
    CTP.ComponentToolPanel:OnHeaderGUI() (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ComponentToolPanel.cs:547)
    UnityEditor.DockArea:OnGUI()
     
  15. venusboysatish

    venusboysatish

    Joined:
    Jul 10, 2012
    Posts:
    24
    Same here. rated the product 1 star :(

    TargetException: Object does not match target type.
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:236)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    CTP.ExtendedEditor.OnEnable () (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ExtendedEditor.cs:37)
    UnityEditor.Editor:CreateEditor(Object)
    CTP.ComponentToolPanel:DrawElement(Rect, Component) (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ComponentToolPanel.cs:279)
    CTP.<InitializeList>c__AnonStorey2:<>m__4(Rect) (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ComponentToolPanel.cs:207)
    UnityEditorInternal.ReorderableList:DoListHeader(Rect) (at C:/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:591)
    UnityEditorInternal.ReorderableList:DoList(Rect) (at C:/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:389)
    CTP.ComponentToolPanel:OnHeaderGUI() (at Assets/Plugins/Editor/Component Tool Panel/Scripts/ComponentToolPanel.cs:547)
    UnityEditor.DockArea:OnGUI()
     
  16. HaBe

    HaBe

    Joined:
    May 29, 2014
    Posts:
    31
    Hi friends, if you got the same problem with TargetException: Object does not match target type.
    here's the possible fix for that.
    Open the file ..\Assets\Plugins\Editor\Component Tool Panel\Scripts\ExtendedEditor.cs and change Line 35 to 38 from
    Code (csharp):
    1.  
    2. if (enableMethod != null){
    3.                 enableMethod.Invoke(fallbackEditor, null);
    4.                 enableMethod.Invoke(defaultEditor, null);  
    5.             }
    6.  
    to

    Code (csharp):
    1.  
    2. if (enableMethod != null)
    3.                 enableMethod.Invoke(fallbackEditor, null);              
    4.          
    5. enableMethod = defaultEditorType.GetMethod("OnEnable", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
    6. if (enableMethod != null)
    7.                 enableMethod.Invoke(defaultEditor, null);
    8.  
    That at least fixed it for me. Cheers!
     
  17. VrTechEx

    VrTechEx

    Joined:
    Aug 4, 2013
    Posts:
    30
    It doesn't work on 2018.3 :(