Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Assimp;
  5. using Assimp.Configs;
  6. using AssimpLoader;
  7. using System.IO;
  8. public class SceneLoader2 : MonoBehaviour {
  9. private const int LoaderWindowID = 1;
  10. private const int OutputWindowId = 2;
  11. private AssimpLoaderOptions _assimpLoaderOptions;
  12. private GameObject _rootGameObject;
  13. private string _supportedFileFormats;
  14. private bool _spin;
  15. private List<string> _errorList = new List<string>();
  16. private Vector2 _scrollPositionLoader;
  17. private Vector2 _scrollPositionConsole;
  18.  
  19. protected void Awake()
  20. {
  21. LoadSupportedImportFormats();
  22. SetupAssimpLoader();
  23. }
  24.  
  25. protected void Update() {
  26. if (_rootGameObject != null && _spin) {
  27. _rootGameObject.transform.Rotate(0f, 20f * Time.deltaTime, 0f, Space.World);
  28. }
  29. }
  30.  
  31. protected void OnGUI()
  32. {
  33. GUILayout.Window(LoaderWindowID, new Rect(0, 0, 200, 0), WindowFunction, "Asset Loader");
  34. GUILayout.Window(OutputWindowId, new Rect(200, Screen.height - 200, Screen.width - 200, 200), WindowFunction, "Output");
  35. }
  36.  
  37. private void SetupAssimpLoader()
  38. {
  39. _assimpLoaderOptions = new AssimpLoaderOptions() {
  40. DontLoadCameras = true
  41. };
  42. }
  43.  
  44. private void LoadSupportedImportFormats()
  45. {
  46. var supportedFileFormatsArray = AssimpLoader.AssimpLoader.GetSupportedImportFormats();
  47. _supportedFileFormats = "Everything|*.*";
  48. for (var f = 0; f < supportedFileFormatsArray.Length; f++)
  49. {
  50. var supportedFileFormat = supportedFileFormatsArray[f];
  51. _supportedFileFormats += "|" + supportedFileFormat.Substring(1) + "|*" + supportedFileFormat;
  52. }
  53. }
  54.  
  55. private void WindowFunction (int windowID) {
  56. if (windowID == LoaderWindowID) {
  57. GUILayout.BeginVertical();
  58. GUILayout.Space(20);
  59. if (GUILayout.Button("Load Asset")) {
  60. var openFileDialog = new System.Windows.Forms.OpenFileDialog();
  61. openFileDialog.Filter = _supportedFileFormats;
  62. openFileDialog.Title = "Load Asset";
  63. if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
  64. _errorList.Clear();
  65. var filename = openFileDialog.FileName;
  66. if (_rootGameObject != null) {
  67. DestroyImmediate(_rootGameObject);
  68. }
  69. var assimpLoader = new AssimpLoader.AssimpLoader();
  70. //try {
  71. _rootGameObject = assimpLoader.LoadFromFile(openFileDialog.FileName, _assimpLoaderOptions);
  72. UnityEngine.Camera.main.FitToBounds(_rootGameObject.transform, 2f);
  73. _errorList.Add("Success");
  74. //} catch (System.Exception exception) {
  75. // _errorList.Add(exception.ToString());
  76. // _rootGameObject = null;
  77. //}
  78. }
  79. }
  80. GUILayout.Space(20);
  81. _assimpLoaderOptions.DontLoadCameras = GUILayout.Toggle(_assimpLoaderOptions.DontLoadCameras, "Don't Load Cameras");
  82. _assimpLoaderOptions.DontLoadLights = GUILayout.Toggle(_assimpLoaderOptions.DontLoadLights, "Don't Load Lights");
  83. _spin = GUILayout.Toggle(_spin, "Spin");
  84. GUILayout.Space(20);
  85. if (_rootGameObject != null) {
  86. var unityAnimation = _rootGameObject.GetComponent<UnityEngine.Animation>();
  87. if (unityAnimation != null) {
  88. GUILayout.Label("Animations");
  89. if (GUILayout.Button("Stop")) {
  90. unityAnimation.Stop();
  91. }
  92. GUILayout.Space(20);
  93. _scrollPositionLoader = GUILayout.BeginScrollView(_scrollPositionLoader, GUILayout.Height(300));
  94. foreach (AnimationState animationState in unityAnimation) {
  95. if (GUILayout.Button(animationState.name)) {
  96. unityAnimation.CrossFade(animationState.name);
  97. }
  98. }
  99. GUILayout.EndScrollView();
  100. GUILayout.Space(20);
  101. }
  102. }
  103. GUILayout.EndVertical();
  104. } else if (windowID == OutputWindowId) {
  105. _scrollPositionConsole = GUILayout.BeginScrollView(_scrollPositionConsole);
  106. foreach (var item in _errorList) {
  107. GUILayout.Label(item);
  108. }
  109. GUILayout.EndScrollView();
  110. }
  111. }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement