Ejemplo n.º 1
0
		/// <summary>
		/// Save given session to a HIP file.
		/// The user will be prompted with Unity's file dialog to choose HIP file location.
		/// </summary>
		/// <param name="bLockNodes">Whether to lock nodes in HIP file so as not to recook them on load</param>
		/// <param name="session">Session to save out. If null, uses default session.</param>
		/// <returns>True if successfully saved session</returns>
		public static bool SaveSessionToHIP(bool bLockNodes, HEU_SessionBase session = null)
		{
			if(session == null || !session.IsSessionValid())
			{
				session = GetOrCreateDefaultSession();
				if (session == null || !session.IsSessionValid())
				{
					session.SetSessionErrorMsg("No valid session found. Unable to save session!", true);
					return false;
				}
			}

#if UNITY_EDITOR
			string fileExt = "hip";
			HAPI_License license = GetCurrentLicense(false);
			if (license == HAPI_License.HAPI_LICENSE_HOUDINI_INDIE || license == HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE_INDIE)
			{
				fileExt = "hiplc";
			}

			string filePath = UnityEditor.EditorUtility.SaveFilePanel("Save HIP File", "", "hscene", fileExt);
			if(!string.IsNullOrEmpty(filePath))
			{
				return session.SaveHIPFile(filePath, bLockNodes);
			}
#else
			session.SetSessionErrorMsg("Save session only supported in Unity Editor!", true);
#endif
			return false;
		}
Ejemplo n.º 2
0
		/// <summary>
		/// Draw Houdini Engine license info.
		/// </summary>
		private void DrawLicenseInfo()
		{
			HAPI_License license = HEU_SessionManager.GetCurrentLicense(false);
			if (license == HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE_INDIE)
			{
				HEU_EditorUI.DrawSeparator();

				GUIStyle labelStyle = new GUIStyle(GUI.skin.label);
				labelStyle.fontStyle = FontStyle.Bold;
				labelStyle.normal.textColor = HEU_EditorUI.IsEditorDarkSkin() ? Color.yellow : Color.red;
				EditorGUILayout.LabelField("Houdini Engine Indie - For Limited Commercial Use Only", labelStyle);

				HEU_EditorUI.DrawSeparator();
			}
		}
Ejemplo n.º 3
0
    public static void saveHoudiniScene(bool lock_nodes)
    {
        HAPI_License license = HoudiniHost.getCurrentLicense();
        string       ext     = "hip";

        if (license == HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE_INDIE ||
            license == HAPI_License.HAPI_LICENSE_HOUDINI_INDIE)
        {
            ext = "hiplc";
        }

        string hip_file_path = EditorUtility.SaveFilePanel("Save HIP File", "", "hscene", ext);

        if (hip_file_path != "")
        {
            HoudiniHost.saveScene(hip_file_path, lock_nodes);
        }
    }
Ejemplo n.º 4
0
        /// <summary>
        /// Return Houdini Engine installation and session information.
        /// Tries to use existing or creates new session to find information.
        /// </summary>
        /// <returns>String containing installation and session information.</returns>
        public static string GetHoudiniEngineInstallationInfo()
        {
#if HOUDINIENGINEUNITY_ENABLED
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("Required Houdini Version: {0}.{1}.{2}\nRequired Houdini Engine Version: {3}.{4}.{5}\n\n",
                            HEU_HoudiniVersion.HOUDINI_MAJOR,
                            HEU_HoudiniVersion.HOUDINI_MINOR,
                            HEU_HoudiniVersion.HOUDINI_BUILD,
                            HEU_HoudiniVersion.HOUDINI_ENGINE_MAJOR,
                            HEU_HoudiniVersion.HOUDINI_ENGINE_MINOR,
                            HEU_HoudiniVersion.HOUDINI_ENGINE_API);

            // Check if existing session is valid, or create a new session. Then query installation information.
            HEU_SessionBase session = HEU_SessionManager.GetDefaultSession();
            if (session != null && session.IsSessionValid())
            {
                int hMajor = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_MAJOR);
                int hMinor = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_MINOR);
                int hBuild = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_BUILD);

                int heuPatch = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_PATCH);

                int heuMajor = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_ENGINE_MAJOR);
                int heuMinor = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_ENGINE_MINOR);
                int heuAPI   = session.GetEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_ENGINE_API);

                sb.AppendFormat("Installed Houdini Version: {0}.{1}.{2}{3}\n", hMajor, hMinor, hBuild, (heuPatch > 0) ? "." + heuPatch.ToString() : "");
                sb.AppendFormat("Installed Houdini Engine Version: {0}.{1}.{2}\n\n", heuMajor, heuMinor, heuAPI);

                sb.AppendFormat("Houdini Binaries Path: {0}\n", HEU_Platform.GetHoudiniEnginePath() + HEU_HoudiniVersion.HAPI_BIN_PATH);
                sb.AppendFormat("Unity Plugin Version: {0}\n\n", HEU_HoudiniVersion.UNITY_PLUGIN_VERSION);

                HEU_SessionData sessionData = session.GetSessionData();
                if (sessionData != null)
                {
                    sb.AppendFormat("Session ID: {0}\n", sessionData.SessionID);
                    sb.AppendFormat("Session Type: {0}\n", sessionData.SessionType);
                    sb.AppendFormat("Process ID: {0}\n", sessionData.ProcessID);

                    if (sessionData.SessionType == HAPI_SessionType.HAPI_SESSION_THRIFT)
                    {
                        sb.AppendFormat("Pipe name: {0}\n", sessionData.PipeName);
                    }

                    sb.AppendLine();
                }

                sb.Append("License Type Acquired: ");
                HAPI_License license = HEU_SessionManager.GetCurrentLicense(false);
                switch (license)
                {
                case HAPI_License.HAPI_LICENSE_NONE: sb.Append("None\n"); break;

                case HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE: sb.Append("Houdini Engine\n"); break;

                case HAPI_License.HAPI_LICENSE_HOUDINI: sb.Append("Houdini (Escape)\n"); break;

                case HAPI_License.HAPI_LICENSE_HOUDINI_FX: sb.Append("Houdini FX\n"); break;

                case HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE_INDIE: sb.Append("Houdini Engine Indie"); break;

                case HAPI_License.HAPI_LICENSE_HOUDINI_INDIE: sb.Append("Houdini Indie\n"); break;

                default: sb.Append("Unknown\n"); break;
                }
            }
            else             // Unable to establish a session
            {
                sb.AppendLine("Unable to detect Houdini Engine installation.");
                sb.AppendLine("License Type Acquired: Unknown\n");
                if (session != null)
                {
                    sb.AppendLine("Failure possibly due to: " + session.GetLastSessionError());
                }
            }

            sb.AppendLine();
            sb.Append("PATH: \n" + GetEnvironmentPath());

            Debug.Log(sb.ToString());

            return(sb.ToString());
#else
            return("");
#endif
        }
    public static void displayHoudiniEngineInstallInfo()
    {
#if !UNITY_EDITOR
                #pragma warning disable 0219
#endif // !UNITY_EDITOR
        string installed_version_msg = "";
        string dialog_title          = "";
        string license_info          = "License Type Acquired: ";
        if (isInstallationOk())
        {
            int houdini_major        = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_MAJOR);
            int houdini_minor        = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_MINOR);
            int houdini_build        = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_BUILD);
            int houdini_patch        = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_PATCH);
            int houdini_engine_major = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_ENGINE_MAJOR);
            int houdini_engine_minor = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_ENGINE_MINOR);
            int houdini_engine_api   = getEnvInt(HAPI_EnvIntType.HAPI_ENVINT_VERSION_HOUDINI_ENGINE_API);
            installed_version_msg =
                "Installed Houdini Version: " +
                houdini_major + "." +
                houdini_minor + "." +
                houdini_build +
                (houdini_patch > 0 ? "." + houdini_patch : "") + "\n" +
                "Installed Houdini Engine Version: " +
                houdini_engine_major + "." +
                houdini_engine_minor + "." +
                houdini_engine_api + "\n\n" +
                "Houdini Binaries Path: " + HoudiniSetPath.prHoudiniPath + "\n\n" +
                "Houdini RPC Server Executable: " + prServerExecutablePath + "\n" +
                "Houdini RPC Server Process ID: " + prProcessID.ToString() + "\n" +
                "Houdini RPC Client Module: " + prLibraryPath + "\n" +
                "Houdini RPC Pipe Name: " + prPipeName;
            dialog_title = "Houdini Engine Installation Info";

            HAPI_License houdini_license_type = getCurrentLicense();
            switch (houdini_license_type)
            {
            case HAPI_License.HAPI_LICENSE_NONE: license_info += "None"; break;

            case HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE: license_info += "Houdini Engine"; break;

            case HAPI_License.HAPI_LICENSE_HOUDINI: license_info += "Houdini (Escape)"; break;

            case HAPI_License.HAPI_LICENSE_HOUDINI_FX: license_info += "Houdini FX"; break;

            case HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE_INDIE: license_info += "Houdini Engine Indie"; break;

            case HAPI_License.HAPI_LICENSE_HOUDINI_INDIE: license_info += "Houdini Indie"; break;

            default: license_info += "Unknown"; break;
            }
        }
        else
        {
#if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || (UNITY_METRO && UNITY_EDITOR)
            installed_version_msg =
                "Reason for Installation Detection Failure: " + prLastInitializationError;
#else
            installed_version_msg =
                "Reason for Installation Detection Failure: Unsupported Platform\n" +
                HoudiniConstants.HAPI_UNSUPPORTED_PLATFORM_MSG;
#endif // UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || ( UNITY_METRO && UNITY_EDITOR )
            dialog_title  = "No Houdini Engine Installed";
            license_info += "Unknown";
        }

#if UNITY_EDITOR && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || (UNITY_METRO && UNITY_EDITOR))
        string path_var = "";
        path_var = System.Environment.GetEnvironmentVariable("PATH", System.EnvironmentVariableTarget.Process);
#if UNITY_EDITOR_WIN
        path_var = path_var.Replace(";", "\n");
#elif UNITY_EDITOR_OSX
        path_var = path_var.Replace(":", "\n");
#endif // UNITY_EDITOR_WIN
#endif // UNITY_EDITOR_WIN || UNITY_EDITOR_OSX
        string full_message =
            "Required Houdini Version: " +
            HoudiniVersion.HOUDINI_MAJOR + "." +
            HoudiniVersion.HOUDINI_MINOR + "." +
            HoudiniVersion.HOUDINI_BUILD + "\n" +
            "Required Houdini Engine Version: " +
            HoudiniVersion.HOUDINI_ENGINE_MAJOR + "." +
            HoudiniVersion.HOUDINI_ENGINE_MINOR + "." +
            HoudiniVersion.HOUDINI_ENGINE_API + "\n\n" +
            installed_version_msg +
            "\n\n" +
            license_info +
#if UNITY_EDITOR && (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || (UNITY_METRO && UNITY_EDITOR))
            "\n\n" +
            "PATH Variable: \n" +
            path_var +
#endif // UNITY_EDITOR && ( UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || ( UNITY_METRO && UNITY_EDITOR ) )
            "";

        Debug.Log(full_message);
#if UNITY_EDITOR
        EditorUtility.DisplayDialog(dialog_title, full_message, "Ok");
#endif // UNITY_EDITOR

#if !UNITY_EDITOR
                #pragma warning restore 0219
#endif // !UNITY_EDITOR
    }
Ejemplo n.º 6
0
    public void OnGUI()
    {
        bool gui_enable = GUI.enabled;

#if !(UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || (UNITY_METRO && UNITY_EDITOR))
        HoudiniGUI.help(HoudiniConstants.HAPI_UNSUPPORTED_PLATFORM_MSG, MessageType.Info);
        GUI.enabled = false;
#else
        if (!HoudiniHost.isInstallationOk())
        {
            HoudiniGUI.help(
                HoudiniHost.getMissingEngineInstallHelpString(), MessageType.Info);
            GUI.enabled = false;
        }
#endif // !( UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || ( UNITY_METRO && UNITY_EDITOR ) )

        if (GUILayout.Button(HoudiniGUIUtility.myLoadAssetLabel))
        {
            string asset_file_path = HoudiniGUIUtility.promptForOTLPath();
            HoudiniAssetUtility.instantiateAsset(asset_file_path);
        }

        if (GUILayout.Button(HoudiniGUIUtility.myLoadHipLabel))
        {
            string hip_file_path = HoudiniGUIUtility.promptForHIPPath();
            HoudiniAssetUtility.loadHipFile(hip_file_path);
        }

        HoudiniGUI.separator();

        if (GUILayout.Button(HoudiniGUIUtility.mySaveHoudiniSceneLabel))
        {
            HAPI_License license = HoudiniHost.getCurrentLicense();
            string       ext     = "hip";

            if (license == HAPI_License.HAPI_LICENSE_HOUDINI_ENGINE_INDIE ||
                license == HAPI_License.HAPI_LICENSE_HOUDINI_INDIE)
            {
                ext = "hiplc";
            }

            string hip_file_path = EditorUtility.SaveFilePanel("Save HIP File", "", "hscene", ext);
            if (hip_file_path != "")
            {
                HoudiniHost.saveScene(hip_file_path, myLockNodesOnHipSave);
            }
        }
        {
            bool undo_value = myLockNodesOnHipSave;
            HoudiniGUI.toggle(
                "lock_nodes", "Lock Nodes On Scene Save",
                ref myLockNodesOnHipSave, null, ref undo_value);
        }

        HoudiniGUI.separator();

        if (GUILayout.Button("Check for New Untracked Asset Nodes"))
        {
            HoudiniAssetUtility.checkForNewAssets();
        }

        HoudiniGUI.separator();

        if (HoudiniGUI.floatField("global_time", "Global Time", ref myTime, null, ref myTime))
        {
            HoudiniHost.setTime(myTime);
        }

        HoudiniGUI.separator();

        string path = Application.dataPath;

        myScrollPosition = GUILayout.BeginScrollView(myScrollPosition);

        if (GUILayout.Button("Instantiate Core Assets"))
        {
            try
            {
                DirectoryInfo core = new DirectoryInfo(path + "//OTLs/Core");

                if (!core.Exists)
                {
                    throw new HoudiniError("Project/Assets/OTLs/Core directory does not exist!");
                }

                foreach (FileInfo fi in core.GetFiles())
                {
                    if (fi.Extension == ".otl")
                    {
                        loadOTL(fi);
                    }
                }
            }
            catch (System.Exception e)
            {
                Debug.LogError("Directory navigation failed: " + e.ToString());
            }
        }

#if (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || (UNITY_METRO && UNITY_EDITOR))
        DirectoryInfo di = new DirectoryInfo(path + "//OTLs");

        try
        {
            if (!di.Exists)
            {
                throw new HoudiniError("Project/Assets/OTLs directory does not exist!");
            }

            foreach (DirectoryInfo child_directory in di.GetDirectories())
            {
                OTLDirectory otlDir = null;

                foreach (OTLDirectory existingOTLDir in myOTLDirectories)
                {
                    if (existingOTLDir.myDirectoryName == child_directory.Name)
                    {
                        otlDir = existingOTLDir;
                        break;
                    }
                }

                if (otlDir == null)
                {
                    otlDir = new OTLDirectory();
                    otlDir.myDirectoryName = child_directory.Name;
                    otlDir.myDirectoryPath = child_directory.FullName;
                    otlDir.myExpanded      = false;
                    myOTLDirectories.Add(otlDir);
                }

                otlDir.myExpanded =
                    EditorGUILayout.Foldout(otlDir.myExpanded, new GUIContent(otlDir.myDirectoryName));

                if (otlDir.myDirectoryName == "Core")
                {
                    otlDir.myExpanded = true;
                }

                if (otlDir.myExpanded)
                {
                    DirectoryInfo dirContents = new DirectoryInfo(otlDir.myDirectoryPath);

                    foreach (FileInfo fi in dirContents.GetFiles())
                    {
                        if (fi.Extension == ".otl")
                        {
                            genOTLEntry(fi);
                        }
                    }
                }
            }
        }
        catch (System.Exception e)
        {
            Debug.LogError("Directory navigation failed: " + e.ToString());
        }
#endif // ( UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || ( UNITY_METRO && UNITY_EDITOR ) )

        GUILayout.EndScrollView();

        GUI.enabled = gui_enable;
    }