PrefabNodeView.cs 1009 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. using UnityEditor.UIElements;
  6. using UnityEditor.Experimental.GraphView;
  7. using UnityEngine.UIElements;
  8. using GraphProcessor;
  9. [NodeCustomEditor(typeof(PrefabNode))]
  10. public class PrefabNodeView : BaseNodeView
  11. {
  12. public override void Enable()
  13. {
  14. var prefabNode = nodeTarget as PrefabNode;
  15. var objField = new ObjectField
  16. {
  17. objectType = typeof(GameObject),
  18. allowSceneObjects = false,
  19. value = prefabNode.output,
  20. };
  21. var preview = new Image();
  22. objField.RegisterValueChangedCallback(v => {
  23. prefabNode.output = objField.value as GameObject;
  24. UpdatePreviewImage(preview, objField.value);
  25. });
  26. UpdatePreviewImage(preview, prefabNode.output);
  27. controlsContainer.Add(objField);
  28. controlsContainer.Add(preview);
  29. }
  30. void UpdatePreviewImage(Image image, Object obj)
  31. {
  32. image.image = AssetPreview.GetAssetPreview(obj) ?? AssetPreview.GetMiniThumbnail(obj);
  33. }
  34. }