Advertisement
Guest User

ObjectPlacer

a guest
Dec 3rd, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.18 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.Collections;
  4.  
  5. public class ObjectPlacer : EditorWindow {
  6.     public GameObject prefab;
  7.  
  8.     [MenuItem ("Window/Object Placer")]
  9.     static void Init () {
  10.         ObjectPlacer window = (ObjectPlacer)EditorWindow.GetWindow (typeof (ObjectPlacer));
  11.         window.Show();
  12.     }
  13.  
  14.     void OnGUI() {
  15.         prefab = EditorGUILayout.ObjectField ("Prefab", prefab, typeof(GameObject), true) as GameObject;
  16.     }
  17.  
  18.     // Setup to be called by OnFocus and OnDestroy
  19.     void OnSceneGUI(SceneView sceneView) {
  20.         if (!prefab)
  21.             return;
  22.        
  23.         if (Event.current.type == EventType.mouseDown) {
  24.             RaycastHit hit;
  25.             bool didHitSomething = Physics.Raycast(HandleUtility.GUIPointToWorldRay(Event.current.mousePosition), out hit);
  26.  
  27.             if (didHitSomething) {
  28.                 GameObject instance = Instantiate (prefab) as GameObject;
  29.                 instance.transform.position = hit.point;
  30.                 Undo.RegisterCreatedObjectUndo (instance, "Undo Instantiate " + prefab.name);
  31.             }
  32.         }
  33.     }
  34.  
  35.     void OnFocus() {
  36.         // Add or readd delegate
  37.         SceneView.onSceneGUIDelegate -= OnSceneGUI;
  38.         SceneView.onSceneGUIDelegate += OnSceneGUI;
  39.     }
  40.  
  41.     void OnDestroy() {
  42.         SceneView.onSceneGUIDelegate -= OnSceneGUI;
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement