/// <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"); } } }
/// <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; } }
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)); }