예제 #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");
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Pokud neni volny pohyb, tak opravi vyskovou pozici hrace tak, aby hrac stal na terenu
        /// </summary>
        /// <param name="position">Puvodni pozice hrace</param>
        /// <param name="newPosition">Pozice hrace, na kterou chce hrac jit, tato promena bude prepsana korektni hodnotou</param>
        private static void RepairPositionInNonFreeLook(Vector3 position, ref Vector3 newPosition)
        {
            if (!freeLook)
            {
                Scene.SceneManager sm = GraphicCore.GetCurrentSceneManager();
                List <SceneManager.SceneObject> sos = sm.GetAllObjects();

                Vector3 dir = Vector3.Normalize(newPosition - position) * Speed * time;

                bool blocked = false;
                foreach (SceneManager.SceneObject so in sos)
                {
                    if (so.name.StartsWith("Hrac"))
                    {
                        continue;
                    }

                    if (so.generalObject.ComputeBoxCollission(newPosition) ||
                        so.generalObject.ComputeBoxCollission(newPosition + dir * 0.02f) ||
                        so.generalObject.ComputeBoxCollission(newPosition + dir * 0.01f) ||
                        so.generalObject.ComputeBoxCollission(newPosition + dir * 0.005f) ||
                        so.generalObject.ComputeBoxCollission(newPosition + dir * 0.0025f) ||
                        so.generalObject.ComputeBoxCollission(newPosition + dir * 0.00125f))
                    {
                        blocked = true;
                    }
                }

                if (terain.IsPositionOnTereain(newPosition) && !blocked /*!terain.IsPositionOnTerainBlocked(newPosition)*/)
                {
                    newPosition = terain.GetPositionOnTerain(newPosition);
                }
                else
                {
                    newPosition = terain.GetPositionOnTerain(position);
                }

                newPosition.Y += HeightOfEye.Y;
            }
        }
예제 #3
0
        public HUD(Device device, Program form)
        {
            resolution = GraphicCore.GetInitializator().GetResolution();

            manaPoint   = new PointF(80f, resolution.Y - 168f);
            livePoint   = new PointF(20f, resolution.Y - 168f);
            energyPoint = new PointF(140f, resolution.Y - 168f);

            manaEmpty   = new System.Drawing.PointF(80f, resolution.Y - 168f);
            energyEmpty = new System.Drawing.PointF(140f, resolution.Y - 168f);
            liveEmpty   = new System.Drawing.PointF(20f, resolution.Y - 168f);

            empty  = TextureLoader.FromFile(device, @"Resources/HUD/prazdna.png");
            live   = TextureLoader.FromFile(device, @"Resources/HUD/zivot.png");
            mana   = TextureLoader.FromFile(device, @"Resources/HUD/mana.png");
            energy = TextureLoader.FromFile(device, @"Resources/HUD/energie.png");
            empty2 = TextureLoader.FromFile(device, @"Resources/HUD/prazdnej.png");
            live2  = TextureLoader.FromFile(device, @"Resources/HUD/zelenejobdelnik.png");



            this.device = device;
            this.form   = form;
            NpcObjects  = new List <SceneManager.SceneObject>();

            sprite   = new Sprite(device);
            sprite3d = new Sprite(device);
            s        = new Sprite(device);

            sm         = GraphicCore.GetCurrentSceneManager();
            NpcObjects = sm.GetObjectsOfType(Type.GetType("WiccanRede.Objects.Player"), false);

            // NpcInfo = form.Game.GetAllNpcInfo();

            f  = new Microsoft.DirectX.Direct3D.Font(device, new System.Drawing.Font(System.Drawing.FontFamily.GenericSerif, 16));
            f2 = new Microsoft.DirectX.Direct3D.Font(device, new System.Drawing.Font(System.Drawing.FontFamily.GenericSerif, 12));
        }