EditorWindow.focusedWindow.SendEvent crashes Unity.

void OnDrawGizmosSelected(){
var e = new Event { keyCode = KeyCode.RightArrow, type = EventType.keyDown };
EditorWindow.focusedWindow.SendEvent(e);
}

This code crashes my Unity client. I wish to simulate a right arrow press on a the hierarchy window.

OnDrawGizmosSelected is always called when the sceneview is updated. Since every time OnDrawGizmosSelected is called you send a manual event to the GUI system you probably caused that in response to that event OnDrawGizmosSelected is called again. So you probably have an infinite recursion.

What’s the point of this actually? OnDrawGizmosSelected is not just called once when you select a gizmo, but it’s called to actually draw the gizmo only when the gameobject is selected.

OnDrawGizmosSelected is a callback that is bound to the sceneview. You can also select objects in the sceneview so “EditorWindow.focusedWindow” wouldn’t be the hierarchy window. I guess you just want to “autoexpand” the object when it’s selected? Sending “RightArrow” isn’t a good solution in general since it’S possible that a parent object has been selected (in which case OnDrawGizmosSelected is also called).

If you want to expand the selected item, it’s better to dig into that directly and change the expanded state directly. Those things are actually quite hidden in the editor code so you have to figure it out yourself.