Ejemplo n.º 1
0
        /// <summary>
        /// Nastavi, zda bude ci nebude videt hrac a vse s nim spojene
        /// </summary>
        /// <param name="enable">True - hrac bude videt, jinak false</param>
        public static void SetShowPlayer(bool enable)
        {
            showPlayer = enable;

            SceneManager sceneManager = GraphicCore.GetCurrentSceneManager();

            if (enable)
            {
                Camera  cam      = Camera.GetCameraInstance();
                Vector3 position = cam.GetVector3Position();
                Vector3 dir      = cam.GetVector3LookAt() - position;
                dir.Normalize();

                Scene.SceneManager.SceneObject pl = sceneManager.GetObject("Hrac");

                if (pl != null)
                {
                    player = (Objects.Player)pl.generalObject;

                    if ((Scene.SceneManager.DetailLevel)Properties.Settings.Default.DetailLevel == Scene.SceneManager.DetailLevel.Low)
                    {
                        player.SetModel(null);
                    }
                }
                else
                {
                    sceneManager.AddObject("Hrac", player, (Effect)null);
                }

                Vector3 playerPosition = position;
                playerPosition.Y -= HeightOfEye.Y;
                playerPosition   -= HeightOfEye.Z * dir;
                player.SetPosition(playerPosition);

                SceneManager.SceneObject pochoden = sceneManager.GetObject("Hrac_Pochoden");

                if (pochoden != null)
                {
                    player.EquipItem(pochoden.generalObject);
                }
            }
            else
            {
                if (player != null)
                {
                    player.SetMatrixWorld(originalPlayerWorld);
                    sceneManager.DeleteObject("Hrac");
                }
            }
        }
        public OcclusionCulling(Device device, SceneManager scene)
        {
            Logger.AddInfo("Inicializace occlusion culling");
            this.device       = device;
            this.scene        = scene;
            this.sceneObjects = new List <IRenderable>();
            List <IRenderable> objs = scene.GetAllObjects().ConvertAll <IRenderable>
                                          (new Converter <SceneManager.SceneObject, IRenderable>(ConvertToIRenderable));

            foreach (IRenderable obj in objs)
            {
                if (obj is Objects.Terrain ||
                    obj is Objects.LightningObjects.LightingSprite ||
                    obj is Objects.ParticleSystem.ParticleSystem)
                {
                    continue;
                }
                else
                {
                    this.sceneObjects.Add(obj);
                }
            }

            SceneManager.SceneObject terrain = scene.GetObject("Teren");

            if (terrain == null)
            {
                return;
            }

            quadTreeObject = (terrain.generalObject as QuadTreeGeneralObject);

            List <WiccanRede.Graphics.Scene.SpecialObjects.QuadTreeGeneralObject.Key> keys = quadTreeObject.GetQuadTreeLeaves();

            leaves = keys.ConvertAll <IRenderable>(new Converter <QuadTreeGeneralObject.Key, IRenderable>(ConvertToIRenderable));

            List <IRenderable> allObjects = new List <IRenderable>();

            allObjects.AddRange(leaves);
            allObjects.AddRange(sceneObjects);

            queryManager = new OcclusionQueryManager(device, scene, allObjects.Count);
            queryManager.RegisterObjects(allObjects.ToArray());

            Init(device);

            //Logger.AddInfo("occlusion culling nainicializovan, zbuffer enbaled = " + device.RenderState.ZBufferEnable.ToString());
        }
 IRenderable ConvertToIRenderable(SceneManager.SceneObject obj)
 {
     return(obj.generalObject as IRenderable);
 }