示例#1
0
        private void Start()
        {
            var dataPath = FileManager.GetFilePath(".", _gameId);

            _asset  = new TesAssetPack(dataPath, null);
            _data   = new TesDataPack(dataPath, null, _gameId);
            _engine = new TesEngine(_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.SpawnPlayerOutside(PlayerPrefab, new Vector2i(-2, -9), new Vector3(-137.94f, 2.30f, -1037.6f));
        }
示例#2
0
 private void OnDestroy()
 {
     if (_asset != null)
     {
         _asset.Close();
         _asset = null;
     }
     if (_data != null)
     {
         _data.Close();
         _data = null;
     }
 }
示例#3
0
        public TesEngine(TesAssetPack asset, TesDataPack data, TesUIManager uiManager)
        {
            _asset                = asset;
            _data                 = data;
            _uiManager            = uiManager;
            _uiManager.Active     = true;
            _temporalLoadBalancer = new TemporalLoadBalancer();
            _cellManager          = new CellManager(asset, data, _temporalLoadBalancer);
            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 = TesGame.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", true), Vector2.zero, CursorMode.Auto);
        }
示例#4
0
 public TesCellManager(TesAssetPack asset, TesDataPack data, TemporalLoadBalancer loadBalancer)
 {
     _asset        = asset;
     _data         = data;
     _loadBalancer = loadBalancer;
 }