Exemplo n.º 1
0
    /// <summary>
    /// ObjC ファイルを書き換える
    /// </summary>
    /// <param name="path">出力先のパス(ビルド時に指定するパス)</param>
    /// <param name="settings">Lobiの設定</param>
    private static void ReWriteObjCFiles(string path, LobiSettings settings)
    {
        // LobiUnityAppController.mm ファイルを書き換える
        string filePath = string.Empty;

                #if UNITY_5_AND_LATER
        filePath = System.IO.Path.Combine(path, "Libraries/Plugins/iOS/LobiUnityAppController.mm");
                #else
        filePath = System.IO.Path.Combine(path, "Libraries/LobiUnityAppController.mm");
                #endif
        if (File.Exists(filePath))
        {
            UpdateStringInFile(filePath, "[LobiCore setupClientId:@\"\"", "[LobiCore setupClientId:@\"" + settings.clientId + "\"");
            UpdateStringInFile(filePath, "accountBaseName:@\"\"];", "accountBaseName:@\"" + settings.baseName + "\"];");

            if (settings.chatEnabled == false)
            {
                UpdateStringInFile(filePath, "#define LOBI_CHAT", "");
            }

            if (settings.recEnabled == false)
            {
                UpdateStringInFile(filePath, "#define LOBI_REC", "");
            }
        }

        if (settings.recEnabled == true)
        {
            ReWriteMetalFiles(path);
        }
    }
Exemplo n.º 2
0
	/// <summary>
	/// ObjC ファイルを書き換える
	/// </summary>
	/// <param name="path">出力先のパス(ビルド時に指定するパス)</param>
	/// <param name="settings">Lobiの設定</param>
	private static void ReWriteObjCFiles (string path, LobiSettings settings)
	{
		// LobiUnityAppController.mm ファイルを書き換える
		string filePath = string.Empty;
		#if UNITY_5_AND_LATER
		filePath = System.IO.Path.Combine (path, "Libraries/Plugins/iOS/LobiUnityAppController.mm");
		#else
		filePath = System.IO.Path.Combine (path, "Libraries/LobiUnityAppController.mm");
		#endif
		if (File.Exists (filePath)) {
			UpdateStringInFile (filePath, "[LobiCore setupClientId:@\"\"", "[LobiCore setupClientId:@\"" + settings.clientId + "\"");
			UpdateStringInFile (filePath, "accountBaseName:@\"\"];", "accountBaseName:@\"" + settings.baseName + "\"];");

			if (settings.chatEnabled == false) {
				UpdateStringInFile (filePath, "#define LOBI_CHAT", "");
			}

			if (settings.recEnabled == false) {
				UpdateStringInFile (filePath, "#define LOBI_REC", "");
			}
		}	

		if (settings.recEnabled == true) {
			ReWriteMetalFiles(path);
		}
	}
Exemplo n.º 3
0
    private float _displayScale;                // 1ポイントあたりのピクセル数。Retina なら 2.0 になる

    // Use this for initialization
    void Start()
    {
                #if (UNITY_IOS || UNITY_IPHONE) && !UNITY_5_AND_LATER
        AudioSettings.outputSampleRate = 44100;
                #endif

        _currentMode  = MODE.MAIN;
        _displayScale = Math.Min(Screen.width, Screen.height) / 320.0f;
        _isCapturing  = false;

        // テスト用ボタンを表示するかの設定値を取得
        LobiSettings settings = (LobiSettings)Resources.Load(SETTING_FILE);
        _isTestButtonsEnable = settings.IsValid == true && settings.IsEnabled == true && settings.testButtonsEnabled;
        if (_isTestButtonsEnable == false)
        {
            Debug.Log("Invalid or missing game credentials, Lobi disabled");
            Debug.Log(settings.IsValid + ", " + settings.IsEnabled);
            return;
        }

        // 各SDKのクラスを取得する。Unityプロジェクトにインポートされていないクラスはnullが返る
        _recType     = Type.GetType(LOBI_REC_BRIDGE);
        _rankingType = Type.GetType(LOBI_RANKING_BRIDGE);

        // テストボタンのスタイルを設定する
        s_buttonStyle                  = new GUIStyle();
        s_buttonStyle.wordWrap         = true;
        s_buttonStyle.fontSize         = (int)(BUTTON_HEIGHT * 0.5);
        s_buttonStyle.alignment        = TextAnchor.MiddleCenter;
        s_buttonStyle.normal.textColor = new Color(0.1f, 0.1f, 0.1f);
        Texture2D texture = new Texture2D(1, 1, TextureFormat.ARGB32, false);
        texture.SetPixel(0, 0, new Color(1.0f, 1.0f, 1.0f, 0.8f));
        texture.Apply();
        s_buttonStyle.normal.background = texture;
    }
Exemplo n.º 4
0
 // Inspectorパネルが閉じられたときに呼ばれる(ビルド実行時にも呼ばれる)
 void OnDisable()
 {
     if (_currentSettings != null)
     {
         EditorUtility.SetDirty(_currentSettings);
         _currentSettings = null;
     }
 }
Exemplo n.º 5
0
    /// <summary>
    /// iOSのビルド設定自動化処理
    /// </summary>
    /// <param name="path">出力先のパス(ビルド時に指定するパス)</param>
    /// <param name="settings">Lobiの設定</param>
    private static void PostProcessBuild_iOS(string path, LobiSettings settings)
    {
        // ObjC ファイルを書き換える
        ReWriteObjCFiles(path, settings);

        // XCode プロジェクトファイルの設定をする
        CreateModFile(path, settings);
        ProcessXCodeProject(path);

        // Info.plist ファイルを書き換える
        ReWriteInfoPList(path, settings.clientId);
    }
Exemplo n.º 6
0
	/// <summary>
	/// iOSのビルド設定自動化処理
	/// </summary>
	/// <param name="path">出力先のパス(ビルド時に指定するパス)</param>
	/// <param name="settings">Lobiの設定</param>
	private static void PostProcessBuild_iOS (string path, LobiSettings settings)
	{
		// ObjC ファイルを書き換える
		ReWriteObjCFiles (path, settings);

		// XCode プロジェクトファイルの設定をする
		CreateModFile (path, settings);
		ProcessXCodeProject (path);

		// Info.plist ファイルを書き換える
		ReWriteInfoPList (path, settings.clientId);
	}
Exemplo n.º 7
0
    // 設定ファイルの生成
    private static LobiSettings CreateLobiSettings()
    {
        LobiSettings lobiSettings = (LobiSettings)ScriptableObject.CreateInstance(typeof(LobiSettings));

        if (lobiSettings != null)
        {
            if (!Directory.Exists(System.IO.Path.Combine(Application.dataPath, "Plugins/Lobi/Resources")))
            {
                AssetDatabase.CreateFolder("Assets/Plugins/Lobi", "Resources");
            }

            // 初期値設定
            lobiSettings.iosSupportEnabled = true;

            AssetDatabase.CreateAsset(lobiSettings, "Assets/Plugins/Lobi/Resources/" + settingsFile + settingsFileExtension);
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            return(lobiSettings);
        }

        return(null);
    }
Exemplo n.º 8
0
    public static void OnPostProcessBuild(BuildTarget target, string path)
    {
        LobiSettings settings = (LobiSettings)Resources.Load(LobiSettingsEditor.settingsFile);

        if (settings == null)
        {
            Debug.Log("Lobi SDK auto build settings will be disabled because client id or base name was not valid.\nLobi SDK Settings: [Edit]-[Lobi Settings]");
            return;
        }

        if (settings == null || settings.IsEnabled == false)
        {
            return;
        }

        if (settings.IsValid)
        {
                        #if UNITY_5_AND_LATER
            if (target == BuildTarget.iOS)
            {
            #else
            if (target == BuildTarget.iPhone)
            {
            #endif
                PostProcessBuild_iOS(path, settings);
            }
            else if (target == BuildTarget.Android)
            {
                // TODO: Android
                //PostProcessBuild_Android(path, settings.clientId);
            }
        }
        else
        {
            Debug.LogError("Lobi will be disabled because client id or base name was not valid.");
        }
    }
Exemplo n.º 9
0
    public static void ShowSettings()
    {
        LobiSettings settingsInstance = (LobiSettings)Resources.Load(settingsFile);

        if (settingsInstance == null)
        {
            settingsInstance = CreateLobiSettings();
        }

        if (settingsInstance != null)
        {
            String dirPath = Application.dataPath;

            string[] files = System.IO.Directory.GetFiles(dirPath, "*LobiChat*", System.IO.SearchOption.AllDirectories);
            settingsInstance.chatEnabled = files.Length > 0;
            files = System.IO.Directory.GetFiles(dirPath, "*LobiRec*", System.IO.SearchOption.AllDirectories);
            settingsInstance.recEnabled = files.Length > 0;
            files = System.IO.Directory.GetFiles(dirPath, "*LobiRanking*", System.IO.SearchOption.AllDirectories);
            settingsInstance.rankingEnabled = files.Length > 0;

            // 設定ファイルを選択状態にして、Inspectorパネルに表示する
            Selection.activeObject = settingsInstance;
        }
    }
Exemplo n.º 10
0
	public override void OnInspectorGUI()
	{
		try {
			// Might be null when this gui is open and this file is being reimported
			if(target == null) {
				Selection.activeObject = null;
				return;
			}

			_currentSettings = (LobiSettings)target;

			if(_currentSettings == null) {
				return;
			}

			EditorGUILayout.HelpBox("1) Enter your game credentials", MessageType.None);
			EditorGUILayout.HelpBox("You can check your game credentials at https://developer.lobi.co/", MessageType.Info);

			// Client ID
			EditorGUILayout.BeginHorizontal();
			EditorGUILayout.LabelField(_labelClientId, GUILayout.Width(80), GUILayout.Height(18));
			_currentSettings.clientId = TrimmedText(EditorGUILayout.TextField(_currentSettings.clientId));
			EditorGUILayout.EndHorizontal();

			// Base Name
			EditorGUILayout.BeginHorizontal();
			EditorGUILayout.LabelField(_labelBaseName, GUILayout.Width(80), GUILayout.Height(18));
			_currentSettings.baseName = TrimmedText(EditorGUILayout.TextField(_currentSettings.baseName));
			EditorGUILayout.EndHorizontal();

			// プラットフォームのON/OFF設定
			EditorGUILayout.HelpBox("2) Enable auto build settings", MessageType.None);
			EditorGUILayout.BeginVertical();
			_currentSettings.iosSupportEnabled = EditorGUILayout.Toggle(_labelIOsSupport, _currentSettings.iosSupportEnabled);

			if(_currentSettings.iosSupportEnabled == true){
				EditorGUILayout.BeginHorizontal();
				EditorGUILayout.LabelField("Chat",GUILayout.Width(112));
				EditorGUILayout.LabelField(GetOnOffString(_currentSettings.chatEnabled));
				EditorGUILayout.EndHorizontal();

				EditorGUILayout.BeginHorizontal();
				EditorGUILayout.LabelField("Rec",GUILayout.Width(112));
				EditorGUILayout.LabelField(GetOnOffString(_currentSettings.recEnabled));
				EditorGUILayout.EndHorizontal();

				EditorGUILayout.BeginHorizontal();
				EditorGUILayout.LabelField("Ranking",GUILayout.Width(112));
				EditorGUILayout.LabelField(GetOnOffString(_currentSettings.rankingEnabled));
				EditorGUILayout.EndHorizontal();
			}

			EditorGUILayout.EndVertical();

			// テストボタンのON/OFF設定
			EditorGUILayout.HelpBox("3) Enable test buttons", MessageType.None);
			EditorGUILayout.BeginVertical();
			_currentSettings.testButtonsEnabled = EditorGUILayout.Toggle(_labelTestButtons, _currentSettings.testButtonsEnabled);
			if(_currentSettings.testButtonsEnabled == true) {
				EditorGUILayout.HelpBox("Add \"Assets/LobiSDK/Scripts/LobiTestButton(prefab)\" to scene", MessageType.Info);
			}
			EditorGUILayout.EndVertical();

			EditorGUILayout.BeginHorizontal();
			EditorGUILayout.HelpBox("If you use REC SDK,\nadd \"Assets/LobiSDK/Scripts/LobiRec(prefab)\" to scene", MessageType.Info);
			EditorGUILayout.EndVertical();
		}
		catch(Exception e) {
			if(e != null) {
			}
		}
	}
Exemplo n.º 11
0
	// Inspectorパネルが閉じられたときに呼ばれる(ビルド実行時にも呼ばれる)
	void OnDisable()
	{
		if(_currentSettings != null) {
			EditorUtility.SetDirty(_currentSettings);
			_currentSettings = null;
		}
	}
Exemplo n.º 12
0
    public override void OnInspectorGUI()
    {
        try {
            // Might be null when this gui is open and this file is being reimported
            if (target == null)
            {
                Selection.activeObject = null;
                return;
            }

            _currentSettings = (LobiSettings)target;

            if (_currentSettings == null)
            {
                return;
            }

            EditorGUILayout.HelpBox("1) Enter your game credentials", MessageType.None);
            EditorGUILayout.HelpBox("You can check your game credentials at https://developer.lobi.co/", MessageType.Info);

            // Client ID
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField(_labelClientId, GUILayout.Width(80), GUILayout.Height(18));
            _currentSettings.clientId = TrimmedText(EditorGUILayout.TextField(_currentSettings.clientId));
            EditorGUILayout.EndHorizontal();

            // Base Name
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField(_labelBaseName, GUILayout.Width(80), GUILayout.Height(18));
            _currentSettings.baseName = TrimmedText(EditorGUILayout.TextField(_currentSettings.baseName));
            EditorGUILayout.EndHorizontal();

            // プラットフォームのON/OFF設定
            EditorGUILayout.HelpBox("2) Enable auto build settings", MessageType.None);
            EditorGUILayout.BeginVertical();
            _currentSettings.iosSupportEnabled = EditorGUILayout.Toggle(_labelIOsSupport, _currentSettings.iosSupportEnabled);

            if (_currentSettings.iosSupportEnabled == true)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Chat", GUILayout.Width(112));
                EditorGUILayout.LabelField(GetOnOffString(_currentSettings.chatEnabled));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Rec", GUILayout.Width(112));
                EditorGUILayout.LabelField(GetOnOffString(_currentSettings.recEnabled));
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Ranking", GUILayout.Width(112));
                EditorGUILayout.LabelField(GetOnOffString(_currentSettings.rankingEnabled));
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();

            // テストボタンのON/OFF設定
            EditorGUILayout.HelpBox("3) Enable test buttons", MessageType.None);
            EditorGUILayout.BeginVertical();
            _currentSettings.testButtonsEnabled = EditorGUILayout.Toggle(_labelTestButtons, _currentSettings.testButtonsEnabled);
            if (_currentSettings.testButtonsEnabled == true)
            {
                EditorGUILayout.HelpBox("Add \"Assets/LobiSDK/Scripts/LobiTestButton(prefab)\" to scene", MessageType.Info);
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.HelpBox("If you use REC SDK,\nadd \"Assets/LobiSDK/Scripts/LobiRec(prefab)\" to scene", MessageType.Info);
            EditorGUILayout.EndVertical();
        }
        catch (Exception e) {
            if (e != null)
            {
            }
        }
    }
Exemplo n.º 13
0
    /// <summary>
    /// Mod ファイルの作成
    /// </summary>
    /// <param name="path">出力先のパス(ビルド時に指定するパス)</param>
    /// <param name="settings">Lobiの設定</param>
    private static void CreateModFile(string path, LobiSettings settings)
    {
        Dictionary <string, object> mod = new Dictionary <string, object> ();

        List <string> patches            = new List <string> ();
        List <string> librarysearchpaths = new List <string> ();
        List <string> folders            = new List <string> ();
        List <string> excludes           = new List <string> ();

        // libs
        List <string> libs = new List <string> ();

        libs.Add("libsqlite3.0.dylib");

        // フレームワークサーチパス
        List <string> frameworksearchpaths = new List <string> ();

                #if !UNITY_5_AND_LATER
        frameworksearchpaths.Add("Plugins/Lobi/iOS");
                #endif

        // フレームワーク
        List <string> frameworks = new List <string> ();
        frameworks.Add("OpenGLES.framework");
        frameworks.Add("QuartzCore.framework");
        frameworks.Add("MediaPlayer.framework");
        frameworks.Add("MessageUI.framework");
        frameworks.Add("CoreData.framework");
        frameworks.Add("CoreMedia.framework");
        frameworks.Add("Security.framework");

        frameworks.Add("CoreImage.framework:weak");
        frameworks.Add("StoreKit.framework:weak");
        frameworks.Add("AVFoundation.framework:weak");
        frameworks.Add("Foundation.framework:weak");
        frameworks.Add("AudioToolbox.framework:weak");
        frameworks.Add("AssetsLibrary.framework:weak");
        frameworks.Add("UIKit.framework:weak");

        // files
        List <string> files = new List <string> ();
                #if !UNITY_5_AND_LATER
        AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiCore.framework");
        AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiCore.bundle");
        if (settings.chatEnabled == true)
        {
            AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiChat.framework");
            AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiChat.bundle");
        }
        if (settings.recEnabled == true)
        {
            AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiRec.framework");
            AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiRec.bundle");
        }
        if (settings.rankingEnabled == true)
        {
            AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiRanking.framework");
            AddFrameworkFile(ref files, "Plugins/Lobi/iOS/LobiRanking.bundle");
        }
                #endif

        // headerpaths
        List <string> headerpaths = new List <string> ();
                #if !UNITY_5_AND_LATER
        headerpaths.Add("Plugins/Lobi/iOS");
                #endif

        // ビルド設定
        Dictionary <string, List <string> > buildSettings = new Dictionary <string, List <string> > ();
        List <string> otherLinkerFlags = new List <string> ();
        otherLinkerFlags.Add("-ObjC");
        buildSettings.Add("OTHER_LDFLAGS", otherLinkerFlags);

        mod.Add("group", "Lobi");
        mod.Add("patches", patches);
        mod.Add("libs", libs);
        mod.Add("librarysearchpaths", librarysearchpaths);
        mod.Add("frameworksearchpaths", frameworksearchpaths);
        mod.Add("frameworks", frameworks);
        mod.Add("headerpaths", headerpaths);
        mod.Add("files", files);
        mod.Add("folders", folders);
        mod.Add("excludes", excludes);
        mod.Add("buildSettings", buildSettings);

        // mod から projmods ファイルを生成する
        string jsonMod = LobiMiniJSON.Json.Serialize(mod);

        string modPath = System.IO.Path.Combine(path, "Lobi");
        string file    = System.IO.Path.Combine(modPath, "LobiXCode.projmods");

        if (!Directory.Exists(modPath))
        {
            Directory.CreateDirectory(modPath);
        }
        if (File.Exists(file))
        {
            File.Delete(file);
        }

        using (StreamWriter streamWriter = File.CreateText(file)) {
            streamWriter.Write(jsonMod);
        }
    }
Exemplo n.º 14
0
	/// <summary>
	/// Mod ファイルの作成
	/// </summary>
	/// <param name="path">出力先のパス(ビルド時に指定するパス)</param>
	/// <param name="settings">Lobiの設定</param>
	private static void CreateModFile (string path, LobiSettings settings)
	{
		Dictionary<string, object> mod = new Dictionary<string, object> ();
		
		List<string> patches = new List<string> ();
		List<string> librarysearchpaths = new List<string> ();
		List<string> folders = new List<string> ();
		List<string> excludes = new List<string> ();

		// libs
		List<string> libs = new List<string> ();
		libs.Add ("libsqlite3.0.dylib");

		// フレームワークサーチパス
		List<string> frameworksearchpaths = new List<string> ();
		#if !UNITY_5_AND_LATER
		frameworksearchpaths.Add ("Plugins/Lobi/iOS");
		#endif

		// フレームワーク
		List<string> frameworks = new List<string> ();
		frameworks.Add ("OpenGLES.framework");
		frameworks.Add ("QuartzCore.framework");
		frameworks.Add ("MediaPlayer.framework");
		frameworks.Add ("MessageUI.framework");
		frameworks.Add ("CoreData.framework");
		frameworks.Add ("CoreMedia.framework");
		frameworks.Add ("Security.framework");

		frameworks.Add ("CoreImage.framework:weak");
		frameworks.Add ("StoreKit.framework:weak");
		frameworks.Add ("AVFoundation.framework:weak");
		frameworks.Add ("Foundation.framework:weak");
		frameworks.Add ("AudioToolbox.framework:weak");
		frameworks.Add ("AssetsLibrary.framework:weak");
		frameworks.Add ("UIKit.framework:weak");

		// files
		List<string> files = new List<string> ();
		#if !UNITY_5_AND_LATER
		AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiCore.framework");
		AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiCore.bundle");
		if (settings.chatEnabled == true) {
			AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiChat.framework");
			AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiChat.bundle");
		}
		if (settings.recEnabled == true) {
			AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiRec.framework");
			AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiRec.bundle");
		}
		if (settings.rankingEnabled == true) {
			AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiRanking.framework");
			AddFrameworkFile (ref files, "Plugins/Lobi/iOS/LobiRanking.bundle");
		}
		#endif
		
		// headerpaths
		List<string> headerpaths = new List<string> ();
		#if !UNITY_5_AND_LATER
		headerpaths.Add ("Plugins/Lobi/iOS");
		#endif

		// ビルド設定
		Dictionary<string,List<string>> buildSettings = new Dictionary<string,List<string>> ();
		List<string> otherLinkerFlags = new List<string> ();
		otherLinkerFlags.Add ("-ObjC");
		buildSettings.Add ("OTHER_LDFLAGS", otherLinkerFlags);
		
		mod.Add ("group", "Lobi");
		mod.Add ("patches", patches);
		mod.Add ("libs", libs);
		mod.Add ("librarysearchpaths", librarysearchpaths);
		mod.Add ("frameworksearchpaths", frameworksearchpaths);
		mod.Add ("frameworks", frameworks);
		mod.Add ("headerpaths", headerpaths);
		mod.Add ("files", files);
		mod.Add ("folders", folders);
		mod.Add ("excludes", excludes);
		mod.Add ("buildSettings", buildSettings);

		// mod から projmods ファイルを生成する
		string jsonMod = LobiMiniJSON.Json.Serialize (mod);
		
		string modPath = System.IO.Path.Combine (path, "Lobi");
		string file = System.IO.Path.Combine (modPath, "LobiXCode.projmods");
		
		if (!Directory.Exists (modPath)) {
			Directory.CreateDirectory (modPath);
		}
		if (File.Exists (file)) {
			File.Delete (file);
		}
		
		using (StreamWriter streamWriter = File.CreateText (file)) {
			streamWriter.Write (jsonMod);
		}
	}