//UnityEngine.Debug.Log Dir http://docs.unity3d.com/Manual/UnityEngine.Debug.LogFiles.html using UnityEngine; using System; using System.IO; using System.Threading; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Net.Sockets; using System.Diagnostics; public class PlayerManager : GenericPlayerManager { private Server server = null; private Semaphore serverSemaphore = null; private volatile Queue messages = new Queue(); private volatile bool toFinalize = false; public override void Start() { base.Start(); string[] args = Environment.GetCommandLineArgs(); if (args.Length >= 5) { float speedRate = (int.Parse(args[4]) + 100F) / 100F; if (speedRate > 100) base.fadeLength = 0.5F; DefaultSignSpeed ds = base.subtitles.DefaultWordSpeed; base.subtitles.DefaultWordSpeed = new DefaultSignSpeed( ds.Speed * speedRate, ds.Max * speedRate ); } if (args.Length >= 6) { float speedRate = (int.Parse(args[5]) + 100F) / 100F; if (speedRate > 100F) base.fadeLength = 0.5F; DefaultSignSpeed ds = base.subtitles.DefaultFirstLetterSpeed; base.subtitles.DefaultFirstLetterSpeed = new DefaultSignSpeed( ds.Speed * speedRate, ds.Max * speedRate ); ds = base.subtitles.DefaultLetterSpeed; base.subtitles.DefaultLetterSpeed = new DefaultSignSpeed( ds.Speed * speedRate, ds.Max * speedRate ); } serverSemaphore = new Semaphore(0, 1); server = new Server(serverSemaphore, this); Thread t = new Thread(new ThreadStart(server.startServer)); t.Start(); serverSemaphore.WaitOne(); //UnityEngine.Debug.Log("Datapath: " + Application.dataPath); Screen.SetResolution(800, 600, false); } protected void Update() { if (toFinalize) { UnityEngine.Debug.Log("Update -> toFinalize == " + toFinalize); Application.Quit(); } } public void enqueueMessage(Message message) { //UnityEngine.Debug.Log("PlayerManager.enqueueMessage( " + message.Text + " )"); messages.Enqueue(message); } public void finishConnection() { //UnityEngine.Debug.Log("PlayerManager.finishConnection()"); StartCoroutine(MessageChecker()); } IEnumerator MessageChecker() { CameraCapture.capture = true; foreach (Message message in messages) { while ((CameraCapture.frameNumber * 1000) / CameraCapture.frameRate < message.Time) yield return null; UnityEngine.Debug.Log("Loading " + message.Text); base.playQueued(message.Text); } while (base.isPlaying() || base.isLoading()) yield return null; UnityEngine.Debug.Log("ALL DONE!"); server.sendFinalizeToCore(); CameraCapture.capture = false; UnityEngine.Debug.Log("CameraCapture.capture == " + CameraCapture.capture); toFinalize = true; UnityEngine.Debug.Log("toFinalize == " + toFinalize); } public override WWW loadAssetBundle(string aniName) { string assetPath = Application.dataPath + "/Bundles/" + aniName; if ( ! File.Exists(assetPath)) return null; try { WWW www = new WWW("file://" + assetPath); return www; } catch (Exception e) { UnityEngine.Debug.Log(e); } return null; } public override void onPlayingStateChange() { } public override void onConnectionError(string gloss, string word) { } }