protected virtual bool CookNode(HEU_SessionBase session, HAPI_NodeId cookNodeID)
	{
	    // Cooking it will load the bgeo
	    if (!session.CookNode(cookNodeID, false))
	    {
		AppendLog(HEU_LoadData.LoadStatus.ERROR, string.Format("Unable to cook node."));
		return false;
	    }

	    // Wait until cooking has finished
	    bool bResult = true;
	    HAPI_State statusCode = HAPI_State.HAPI_STATE_STARTING_LOAD;
	    while (bResult && statusCode > HAPI_State.HAPI_STATE_MAX_READY_STATE)
	    {
		bResult = session.GetCookState(out statusCode);

		Sleep();
	    }

	    // Check cook results for any errors
	    if (statusCode == HAPI_State.HAPI_STATE_READY_WITH_COOK_ERRORS || statusCode == HAPI_State.HAPI_STATE_READY_WITH_FATAL_ERRORS)
	    {
		string statusString = session.GetStatusString(HAPI_StatusType.HAPI_STATUS_COOK_RESULT, HAPI_StatusVerbosity.HAPI_STATUSVERBOSITY_ERRORS);
		AppendLog(HEU_LoadData.LoadStatus.ERROR, string.Format("Cook failed: {0}.", statusString));
		return false;
	    }

	    return true;
	}