public override bool GetDropLocation(Type itemType, int?childIndex, ref SerializedProperty array, ref int arrayIndex) { // Drop part binding into composite. if (itemType == typeof(PartOfCompositeBindingTreeItem)) { array = arrayProperty; // Adjust child index by index of composite item itself. arrayIndex = childIndex != null ? this.arrayIndex + 1 + childIndex.Value // Dropping at #0 should put as our index plus one. : this.arrayIndex + 1 + InputActionSerializationHelpers.GetCompositePartCount(array, this.arrayIndex); return(true); } // Drop other bindings next to us. if (typeof(BindingTreeItem).IsAssignableFrom(itemType)) { array = arrayProperty; arrayIndex = this.arrayIndex + 1 + InputActionSerializationHelpers.GetCompositePartCount(array, this.arrayIndex); return(true); } return(false); }