예제 #1
0
        public static void Start()
        {
            //var assetUri = "game://Morrowind/Morrowind.bsa";
            var dataUri = "game://Morrowind/Morrowind.esm";

            //var dataUri = "game://Morrowind/Bloodmoon.esm";
            //var dataUri = "game://Morrowind/Tribunal.esm";

            //var assetUri = "game://Oblivion/Oblivion*";
            //var dataUri = "game://Oblivion/Oblivion.esm";

            //var assetUri = "game://SkyrimVR/Skyrim*";
            //var dataUri = "game://SkyrimVR/Skyrim.esm";

            //var assetUri = "game://Fallout4/Fallout4*";
            //var dataUri = "game://Fallout4/Fallout4.esm";

            //var assetUri = "game://Fallout4VR/Fallout4*";
            //var dataUri = "game://Fallout4VR/Fallout4.esm";

            var assetManager = AssetManager.GetAssetManager(EngineId.Tes);

            //Asset = assetManager.GetAssetPack(assetUri).Result;
            Data = assetManager.GetDataPack(dataUri).Result;

            //TestLoadCell(new Vector3(((-2 << 5) + 1) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, ((-1 << 5) + 1) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((-1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (-1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters));
            TestLoadCell(new Vector3(0 * ConvertUtils.ExteriorCellSideLengthInMeters, 0, 0 * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((1 << 5) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (1 << 5) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestAllCells();
        }
예제 #2
0
        public static void Start()
        {
            var assetUri = "game://Morrowind/Morrowind.bsa";
            var dataUri  = "game://Morrowind/Morrowind.esm";

            var assetManager = AssetManager.GetAssetManager(EngineId.Tes);

            Asset       = assetManager.GetAssetPack(assetUri).Result;
            Data        = assetManager.GetDataPack(dataUri).Result;
            CellManager = assetManager.GetCellManager(Asset, Data, LoadBalancer);

            // ambient
            RenderSettings.ambientMode      = UnityEngine.Rendering.AmbientMode.Flat;
            RenderSettings.ambientIntensity = 1.5f;

            // sun
            _sunObj = GameObjectUtils.CreateDirectionalLight(Vector3.zero, Quaternion.Euler(new Vector3(50, 330, 0)));
            _sunObj.GetComponent <Light>().shadows = LightShadows.Soft;
            _sunObj.SetActive(false);

            Cursor.SetCursor(Asset.LoadTexture("tx_cursor", 1), Vector2.zero, CursorMode.Auto);

            // engine
            SpawnPlayer(PlayerPrefab, new Vector3Int(-2, -9, 0), new Vector3(-137.94f, 2.30f, -1037.6f));
        }
예제 #3
0
        public static void Start()
        {
            var assetManager = AssetManager.GetAssetManager(EngineId.Ultima);

            Asset = assetManager.GetAssetPack(null).Result;
            Data  = assetManager.GetDataPack(null).Result;
        }
예제 #4
0
        void Start()
        {
            var dataPath = FileManager.GetFilePath(".", _gameId);

            _asset  = new TesAssetPack(dataPath, null);
            _data   = new TesDataPack(dataPath, null, _gameId);
            _engine = new TesEngine(AssetManager.GetAssetManager(EngineId.Tes), _asset, _data, UIManager);
            if (_playMusic)
            {
                // Start the music.
                _musicPlayer = new MusicPlayer();
                if (_gameId == GameId.Morrowind)
                {
                    foreach (var songFilePath in Directory.GetFiles(dataPath + "/Music/Explore"))
                    {
                        if (!songFilePath.Contains("Morrowind Title"))
                        {
                            _musicPlayer.AddSong(songFilePath);
                        }
                    }
                }
                _musicPlayer.Play();
            }

            // Spawn the player.
            _engine.SpawnPlayer(PlayerPrefab, new Vector3(-137.94f, 2.30f, -1037.6f)); // new Vector3Int(-2, -9, 0),
        }
예제 #5
0
        public static void Start()
        {
            var assetManager = AssetManager.GetAssetManager(EngineId.Ultima);

            Asset = assetManager.GetAssetPack(null).Result;
            Data  = assetManager.GetDataPack(null).Result;

            //MakeObject("sta010").transform.Translate(Vector3.left * 1 + Vector3.up);
            //MakeObject("sta069").transform.Translate(Vector3.left * 1 + Vector3.down);

            MakeObject("lnd001").transform.Translate(Vector3.right * 1);
            MakeObject("lnd002").transform.Translate(Vector3.right * 1 + Vector3.up);
            MakeObject("lnd516").transform.Translate(Vector3.right * 1 + Vector3.down);

            //MakeObject("gmp065").transform.Translate(Vector3.back * 5);

            //MakeTexture("sta010");
            //MakeTexture("sta069");

            //MakeTexture("lnd001");
            //MakeTexture("lnd002");
            //MakeTexture("lnd516");
            //MakeTexture("lnd1137");

            //MakeTexture("gmp065");

            //MakeTexture("tex789");
        }
예제 #6
0
파일: Order.cs 프로젝트: quain24/SHIELD
 public Order(string id, string order, string target, Timestamp timestamp, IDataPack dataPack)
 {
     ExactOrder = order;
     Target     = target;
     Data       = dataPack ?? throw new ArgumentNullException(nameof(dataPack), "A dataPack is required, cannot replace it with null");
     Timestamp  = timestamp;
     ID         = id;
 }
예제 #7
0
파일: Reply.cs 프로젝트: quain24/SHIELD
 public Reply(string id, string replyTo, Timestamp timestamp, IDataPack dataPack)
 {
     ReplyTo   = replyTo ?? throw new ArgumentNullException(nameof(replyTo), $"{nameof(Reply)} has to have a target (something to reply to).");
     Timestamp = timestamp ?? throw new ArgumentNullException(nameof(timestamp), "Missing Timestamp.");
     Data      = dataPack ?? throw new ArgumentNullException(nameof(dataPack),
                                                             "Cannot substitute DataPack with NULL.");
     ID = id;
 }
예제 #8
0
        public Task <bool> SendAsync(AbstractSlaveUnit sender, string targetCommand, IDataPack data = null)
        {
            _ = sender ?? throw new ArgumentNullException(nameof(sender), $"Unit has to be a valid child of {nameof(AbstractSlaveUnit)}.");
            if (string.IsNullOrEmpty(targetCommand))
            {
                throw new ArgumentNullException(nameof(targetCommand), "Target command cannot be empty!");
            }

            var order = _orderFactory.Create(targetCommand, sender.ID, data ?? EmptyDataPackSingleton.GetInstance());

            return(SendAsync(order));
        }
예제 #9
0
        public static void Start()
        {
            var dataUri = new Uri("game:/#Zero");

            DataPack = dataUri.GetUltimaDataPackAsync().Result();

            //TestLoadCell(new Vector3(((-2 << 5) + 1) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, ((-1 << 5) + 1) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((-1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (-1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters));
            TestLoadCell(new Vector3(0 * ConvertUtils.ExteriorCellSideLengthInMeters, 0, 0 * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((1 << 5) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (1 << 5) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestAllCells();
        }
예제 #10
0
 void OnDestroy()
 {
     if (_asset != null)
     {
         _asset.Dispose();
         _asset = null;
     }
     if (_data != null)
     {
         _data.Dispose();
         _data = null;
     }
 }
예제 #11
0
 public static void OnDestroy()
 {
     if (Asset != null)
     {
         Asset.Dispose();
         Asset = null;
     }
     if (Data != null)
     {
         Data.Dispose();
         Data = null;
     }
 }
예제 #12
0
        public static void Start()
        {
            var assetManager = AssetManager.GetAssetManager(EngineId.Ultima);

            Asset  = assetManager.GetAssetPack(null).Result;
            Data   = assetManager.GetDataPack(null).Result;
            Engine = new UltimaEngine(assetManager, Asset, Data, null);

            var scale = ConvertUtils.ExteriorCellSideLengthInMeters;

            //Engine.SpawnPlayerAndUpdate(PlayerPrefab, new Vector3(4 * scale, 20, 25 * scale));
            //Engine.SpawnPlayerAndUpdate(PlayerPrefab, new Vector3(15 * scale, 20, 25 * scale));
            Engine.SpawnPlayerAndUpdate(PlayerPrefab, new Vector3(11 * scale, 10, 29 * scale));
        }
예제 #13
0
        public SimpleEngine(IEstateHandler handler, IAssetPack assetPack, IDataPack dataPack)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }
            AssetPack   = assetPack ?? throw new ArgumentNullException(nameof(assetPack));
            DataPack    = dataPack ?? throw new ArgumentNullException(nameof(dataPack));
            CellManager = handler.CellManagerFunc(LoadBalancer, assetPack, dataPack, null) ?? throw new ArgumentNullException(nameof(handler.CellManagerFunc));

            // ambient
            RenderSettings.ambientMode      = UnityEngine.Rendering.AmbientMode.Flat;
            RenderSettings.ambientIntensity = AmbientIntensity;

            // sun
            _sunObj = GameObjectUtils.CreateDirectionalLight(Vector3.zero, Quaternion.Euler(new Vector3(50, 330, 0)));
            _sunObj.GetComponent <Light>().shadows = RenderSunShadows ? LightShadows.Soft : LightShadows.None;
            _sunObj.SetActive(false);
            if (DayNightCycle)
            {
                _sunObj.AddComponent <DayNightCycle>();
            }

            //// water
            //_waterObj = GameObject.Instantiate(TesGame.instance.WaterPrefab);
            //_waterObj.SetActive(false);
            //var water = _waterObj.GetComponent<Water>();
            //water.waterMode = game.instance.WaterQuality;
            //if (!TesGame.instance.WaterBackSideTransparent)
            //{
            //    var side = _waterObj.transform.GetChild(0);
            //    var sideMaterial = side.GetComponent<Renderer>().sharedMaterial;
            //    sideMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
            //    sideMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
            //    sideMaterial.SetInt("_ZWrite", 1);
            //    sideMaterial.DisableKeyword("_ALPHATEST_ON");
            //    sideMaterial.DisableKeyword("_ALPHABLEND_ON");
            //    sideMaterial.DisableKeyword("_ALPHAPREMULTIPLY_ON");
            //    sideMaterial.renderQueue = -1;
            //}

            //Cursor.SetCursor(Asset.LoadTexture("tx_cursor", 1), Vector2.zero, CursorMode.Auto);
        }
예제 #14
0
        public BaseEngine(IAssetManager assetManager, IAssetPack asset, IDataPack data)
        {
            AssetManager = assetManager;
            Asset        = asset;
            Data         = data;

            LoadBalancer = new TemporalLoadBalancer();
            CellManager  = assetManager.GetCellManager(asset, data, LoadBalancer);
            var game = BaseSettings.Game;

            // ambient
            RenderSettings.ambientMode      = UnityEngine.Rendering.AmbientMode.Flat;
            RenderSettings.ambientIntensity = game.AmbientIntensity;

            // sun
            _sunObj = GameObjectUtils.CreateDirectionalLight(Vector3.zero, Quaternion.Euler(new Vector3(50, 330, 0)));
            _sunObj.GetComponent <Light>().shadows = game.RenderSunShadows ? LightShadows.Soft : LightShadows.None;
            _sunObj.SetActive(false);
            if (game.DayNightCycle)
            {
                _sunObj.AddComponent <DayNightCycle>();
            }

            //// water
            //_waterObj = GameObject.Instantiate(TesGame.instance.WaterPrefab);
            //_waterObj.SetActive(false);
            //var water = _waterObj.GetComponent<Water>();
            //water.waterMode = game.instance.WaterQuality;
            //if (!TesGame.instance.WaterBackSideTransparent)
            //{
            //    var side = _waterObj.transform.GetChild(0);
            //    var sideMaterial = side.GetComponent<Renderer>().sharedMaterial;
            //    sideMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
            //    sideMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
            //    sideMaterial.SetInt("_ZWrite", 1);
            //    sideMaterial.DisableKeyword("_ALPHATEST_ON");
            //    sideMaterial.DisableKeyword("_ALPHABLEND_ON");
            //    sideMaterial.DisableKeyword("_ALPHAPREMULTIPLY_ON");
            //    sideMaterial.renderQueue = -1;
            //}

            //Cursor.SetCursor(Asset.LoadTexture("tx_cursor", 1), Vector2.zero, CursorMode.Auto);
        }
예제 #15
0
        public static void Start()
        {
            var assetUri = "game://Morrowind/Morrowind.bsa";
            var dataUri  = "game://Morrowind/Morrowind.esm";

            //var assetUri = "game://Oblivion/Oblivion*";
            //var dataUri = "game://Oblivion/Oblivion.esm";

            var assetManager = AssetManager.GetAssetManager(EngineId.Tes);

            Asset  = assetManager.GetAssetPack(assetUri).Result;
            Data   = assetManager.GetDataPack(dataUri).Result;
            Engine = new BaseEngine(assetManager, Asset, Data);

            // engine
            Engine.SpawnPlayer(PlayerPrefab, new Vector3(-137.94f, 2.30f, -1037.6f)); // new Vector3Int(-2, -9)

            // engine - oblivion
            //Engine.SpawnPlayer(PlayerPrefab, new Vector3Int(0, 0, 60), new Vector3(0, 0, 0));
        }
예제 #16
0
        public static void Start()
        {
            var dataUri = new Uri("game://Morrowind/Morrowind.esm");

            //var dataUri = new Uri("game://Morrowind/Bloodmoon.esm");
            //var dataUri = new Uri("game://Morrowind/Tribunal.esm");

            //var dataUri = new Uri("game://Oblivion/Oblivion.esm");

            //var dataUri = new Uri("game://SkyrimVR/Skyrim.esm");

            //var dataUri = new Uri("game://Fallout4/Fallout4.esm");

            //var dataUri = new Uri("game://Fallout4VR/Fallout4.esm");

            DataPack = dataUri.GetTesDataPackAsync().Result();

            //TestLoadCell(new Vector3(((-2 << 5) + 1) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, ((-1 << 5) + 1) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((-1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (-1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters));
            TestLoadCell(new Vector3(0 * ConvertUtils.ExteriorCellSideLengthInMeters, 0, 0 * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (1 << 3) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestLoadCell(new Vector3((1 << 5) * ConvertUtils.ExteriorCellSideLengthInMeters, 0, (1 << 5) * ConvertUtils.ExteriorCellSideLengthInMeters));
            //TestAllCells();
        }
예제 #17
0
        public async Task <bool> ReplyTo(Order order, IDataPack dataPack)
        {
            var reply = _replyFactory.Create(order, dataPack);

            return(await SendAsync(reply).ConfigureAwait(false));
        }
예제 #18
0
 public Reply Create(string replyTo, IDataPack dataPack)
 {
     return(Create(_idGenerator.GetNewID(), replyTo, Timestamp.Now, dataPack));
 }
예제 #19
0
 public Reply Create(string id, string replyTo, Timestamp timestamp, IDataPack dataPack)
 {
     return(new Reply(id, replyTo, timestamp, dataPack));
 }
예제 #20
0
 public static ICellManager GetUltimaCellManager(this TemporalLoadBalancer loadBalancer, IAssetPack assetPack, IDataPack dataPack, Func <object> func = null) => new UltimaCellManager(loadBalancer, (UltimaAssetPack)assetPack, (UltimaDataPack)dataPack);
예제 #21
0
 public Reply Renew(Reply reply, IDataPack dataPack)
 {
     return(Create(reply.ReplyTo, dataPack));
 }
예제 #22
0
 public UltimaEngine(IAssetManager assetManager, IAssetPack asset, IDataPack data, UltimaUIManager uiManager)
     : base(assetManager, asset, data)
 {
     UIManager = uiManager;
     //UIManager.Active = true;
 }
예제 #23
0
 public abstract Task HandleDataAsync(IDataPack socketMsgPack);
예제 #24
0
 public static ICellManager GetTesCellManager(this TemporalLoadBalancer loadBalancer, IAssetPack assetPack, IDataPack dataPack, Func <object> func = null) => new TesCellManager(loadBalancer, (TesAssetPack)assetPack, (TesDataPack)dataPack);
예제 #25
0
 public Order Renew(Order order, IDataPack dataPack)
 {
     return(Create(order.ExactOrder, order.Target, dataPack));
 }
예제 #26
0
 public Order Create(string id, string order, string target, IDataPack dataPack)
 {
     return(Create(id, order, target, Timestamp.Now, dataPack));
 }
예제 #27
0
 public Order Create(string order, string target, Timestamp timestamp, IDataPack dataPack)
 {
     return(Create(_idGenerator.GetNewID(), order, target, timestamp, dataPack));
 }
예제 #28
0
 public Order Create(string id, string order, string target, Timestamp timestamp, IDataPack dataPack)
 {
     return(new Order(id, order, target, timestamp, dataPack));
 }
예제 #29
0
 public TesEngine(IAssetManager assetManager, IAssetPack asset, IDataPack data, TesUIManager uiManager)
     : base(assetManager, asset, data)
 {
     UIManager        = uiManager;
     UIManager.Active = true;
 }
예제 #30
0
        //static void TestAllCells()
        //{
        //    var cells = ((UltimaDataPack)DataPack).Groups["CELL"].Records;
        //    Log($"CELLS: {cells.Count}");
        //    foreach (var record in cells.Cast<CELLRecord>())
        //        Log(record.EDID.Value);
        //}

        public static void OnDestroy()
        {
            DataPack?.Dispose(); DataPack = null;
        }