예제 #1
0
 void CheckController()
 {
     if (!isController)
     {
         joystick = InputManager.ActiveDevice;
         if (joystick != null && joystick.Name != "NullInputDevice" && joystick.Name != "Unknown Device")
         {
             isController = true;
             selected     = item[index];
             selected.Select();
             Cursor.visible    = false;
             raycaster.enabled = false;
         }
     }
     else
     {
         joystick = InputManager.ActiveDevice;
         if (joystick == null || joystick.Name == "NullInputDevice" || joystick.Name == "Unknown Device")
         {
             isController = false;
             selected.Diselect();
             Cursor.visible    = true;
             raycaster.enabled = true;
         }
     }
 }
예제 #2
0
파일: World.cs 프로젝트: vardrop/KWEngine2
        /// <summary>
        /// Durchsucht die Liste der HUDObject-Instanzen nach einem Objekt mit dem gegebenen Namen
        /// </summary>
        /// <param name="name">Name des gesuchten Objekts</param>
        /// <returns>Gesuchtes Objekt oder null (falls nicht gefunden)</returns>
        public HUDObject GetHUDObjectByName(string name)
        {
            name = name.Trim();
            HUDObject h = _hudObjects.FirstOrDefault(ho => ho.Name == name);

            return(h);
        }
예제 #3
0
        public override void Prepare()
        {
            int imageWidth  = 128;
            int imageHeight = 128;
            int width       = CurrentWindow.Width;
            int height      = CurrentWindow.Height;
            int offset      = -276;

            for (int i = 0; i < _buttons.Length; i++, offset += 128)
            {
                _buttons[i] = new HUDObject(HUDObjectType.Image, width / 2, height / 2 + offset);
                _buttons[i].SetTexture(@".\textures\button_gen.dds");
                _buttons[i].SetScale(imageWidth, imageHeight);
                _buttons[i].SetColor(_colors[i].X, _colors[i].Y, _colors[i].Z, 1);
                AddHUDObject(_buttons[i]);

                _numbers[i] = new HUDObject(HUDObjectType.Text, width / 2 - 11, height / 2 + offset + 2);
                _numbers[i].SetScale(24, 24);
                _numbers[i].CharacterSpreadFactor = 14;
                _numbers[i].SetText("0 " + (i + 1));
                AddHUDObject(_numbers[i]);
            }

            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
        }
예제 #4
0
        public void OnAddButton()
        {
            HUDObject currentObj = HUDEditor.Instance.CurrentObject();

            currentObj.events.Add(new ConditionalEvent());
            HUDEditor.Instance.SelectedEventId = currentObj.events.Count - 1;
            RefreshEventsList();
            OnEditButton();
        }
예제 #5
0
        public void OnCharacterTextToggleChanged(bool value)
        {
            HUDObject hudObj = HUDEditor.Instance.CurrentObject();

            if (hudObj == null)
            {
                return;
            }
            hudObj.useCharacterText = value;
        }
예제 #6
0
        public void OnPortraitSelectionChanged(bool value)
        {
            HUDObject hudObj = HUDEditor.Instance.CurrentObject();

            if (hudObj == null)
            {
                return;
            }
            hudObj.usePortraitSprite = value;
        }
예제 #7
0
        public void OnAttackAndAnchoringToggleChanged(bool value)
        {
            HUDObject hudObj = HUDEditor.Instance.CurrentObject();

            if (hudObj == null)
            {
                return;
            }
            hudObj.attackAndGrabDelegation = value;
        }
예제 #8
0
        public void OnPlayerChanged(string value)
        {
            HUDObject hudObj = HUDEditor.Instance.CurrentObject();

            if (hudObj == null)
            {
                return;
            }
            hudObj.playerId = int.Parse(value);
        }
예제 #9
0
 void ColorOnTag(HUDObject bogeyHUD)
 {
     for (int i = 0; i < HUDColors.Length; i++)
     {
         if (HUDColors[i].tagType == bogeyHUD.bogey.tag)
         {
             bogeyHUD.ret.GetComponentInChildren <Image>().color = HUDColors[i].tagColor;
         }
     }
 }
예제 #10
0
        public ConditionalEvent CurrentEvent()
        {
            HUDObject currentObj = CurrentObject();

            if (currentObj == null || currentObj.events.Count == 0)
            {
                return(null);
            }
            return(currentObj.events[selectedEventId]);
        }
예제 #11
0
파일: World.cs 프로젝트: KWEngine/KWEngine2
 /// <summary>
 /// Fügt ein HUD-Objekt hinzu
 /// </summary>
 /// <param name="h">Objekt</param>
 public void AddHUDObject(HUDObject h)
 {
     if (!_hudObjects.Contains(h))
     {
         _hudObjectsTBA.Add(h);
     }
     else
     {
         HelperGeneral.ShowErrorAndQuit("World::AddHUDObject()", "This HUD object already exists in this world.");
     }
 }
예제 #12
0
파일: World.cs 프로젝트: vardrop/KWEngine2
 /// <summary>
 /// Fügt ein HUD-Objekt hinzu
 /// </summary>
 /// <param name="h">Objekt</param>
 public void AddHUDObject(HUDObject h)
 {
     if (!_hudObjects.Contains(h))
     {
         _hudObjectsTBA.Add(h);
     }
     else
     {
         throw new Exception("This HUD object already exists in this world.");
     }
 }
예제 #13
0
        void UpdateGuiItems()
        {
            HUDObject hudObj = HUDEditor.Instance.CurrentObject();

            if (hudObj == null)
            {
                return;
            }
            _teamObj.text         = hudObj.teamId + "";
            _playerObj.text       = hudObj.playerId + "";
            _attackAnchorObj.isOn = hudObj.attackAndGrabDelegation;
        }
예제 #14
0
 private void OnEnable()
 {
     if (isController)
     {
         index    = 0;
         selected = item[index];
         selected.Select();
     }
     else
     {
         Cursor.visible = true;
     }
 }
예제 #15
0
        private void CreateFreeFloatPlayer()
        {
            PlayerFloat pf = new PlayerFloat();

            pf.SetModel("KWCube");
            pf.SetPosition(0, 1, 15);
            AddGameObject(pf);
            SetFirstPersonObject(pf, 180);

            HUDObject crosshair = new HUDObject(HUDObjectType.Image, CurrentWindow.Width / 2, CurrentWindow.Height / 2);

            crosshair.SetTexture(@".\textures\crosshair.dds");
            AddHUDObject(crosshair);
        }
예제 #16
0
        public void OnRemoveButton()
        {
            HUDObject currentObj = HUDEditor.Instance.CurrentObject();

            currentObj.events.RemoveAt(HUDEditor.Instance.SelectedEventId);
            if (currentObj.events.Count == 0)
            {
                HUDEditor.Instance.SelectedEventId = 0;
            }
            else if (HUDEditor.Instance.SelectedEventId >= currentObj.events.Count)
            {
                HUDEditor.Instance.SelectedEventId = currentObj.events.Count - 1;
            }
            RefreshEventsList();
        }
예제 #17
0
//		void OnDropdownObjectSelected(int itemId){
//
//		}

//		void OnListObjectSelected(int itemId){
//
//		}



        public void OnAddButton()
        {
            // Find selected anim
            HUDObject selectedAnim = GetObjectFromDropdown();
            // Find selected event
            ConditionalEvent selectedEvent = allEventsSorted[_eventsList.SelectedItem];

            // Clone event and add to object
            selectedAnim.events.Add(selectedEvent.Clone());
            allEvents[selectedEvent].Add(selectedAnim);

            // Refresh UI
            RefreshObjectsList();
            RefreshObjectsDropdown();
        }
예제 #18
0
        public void SpawnNpcObject(bool initHUD = false, string layerName = Layers.Default)
        {
            if (layerName != Layers.Default)
            {
                gameObject.SetLayer(layerName);
            }
            PlayRoleAnim(AnimNames.Idle, true);

            if (initHUD)
            {
                mhudObj = Util.AddHudObject(gameObject);
                if (mhudObj != null)
                {
                    mhudObj.InitHud(1.2f, roleData.nick, NpcData.npcType);
                }
            }
        }
예제 #19
0
    public override void _Ready()
    {
        player           = GetNode("Player") as PlayerObject;
        startPosition    = GetNode("StartPosition") as Position2D;
        startTimer       = GetNode("StartTimer") as Timer;
        scoreTimer       = GetNode("ScoreTimer") as Timer;
        mobTimer         = GetNode("MobTimer") as Timer;
        mobSpawnLocation = GetNode("MobPath").GetNode("MobSpawnLocation") as PathFollow2D;
        hud        = GetNode("HUD") as HUDObject;
        deathSound = GetNode("DeathSound") as AudioStreamPlayer;
        music      = GetNode("Music") as AudioStreamPlayer;

        hud.Connect("StartGame", this, "NewGame");
        player.Connect("Hit", this, "GameOver");

        randomGenerator = new Random();
    }
예제 #20
0
        internal void Draw(HUDObject ho, ref Matrix4 viewProjection)
        {
            if (!ho.IsVisible)
            {
                return;
            }

            GeoMesh mesh = KWEngine.KWRect.Meshes.Values.ElementAt(0);

            GL.BindVertexArray(mesh.VAO);
            GL.BindBuffer(BufferTarget.ElementArrayBuffer, mesh.VBOIndex);

            lock (ho)
            {
                GL.Uniform4(mUniform_TintColor, ho._tint);
                GL.Uniform4(mUniform_Glow, ho._glow);

                lock (ho._modelMatrices)
                {
                    GL.ActiveTexture(TextureUnit.Texture0);
                    if (ho._type == HUDObjectType.Text)
                    {
                        GL.BindTexture(TextureTarget.Texture2D, KWEngine.FontTextureArray[(int)ho.Font]);
                    }
                    else
                    {
                        GL.BindTexture(TextureTarget.Texture2D, ho._textureId);
                    }
                    GL.Uniform1(mUniform_Texture, 0);

                    for (int i = 0; i < ho._positions.Count; i++)
                    {
                        Matrix4 mvp = ho._modelMatrices[i] * viewProjection;
                        GL.UniformMatrix4(mUniform_MVP, false, ref mvp);
                        GL.Uniform1(mUniform_TextureHUDOffset, ho._offsets[i]);
                        GL.Uniform1(mUniform_TextureHUDIsText, ho._type == HUDObjectType.Text ? 1 : 0);
                        GL.DrawElements(mesh.Primitive, mesh.IndexCount, DrawElementsType.UnsignedInt, 0);
                    }
                    GL.BindTexture(TextureTarget.Texture2D, 0);
                }
            }

            GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);
            GL.BindVertexArray(0);
        }
예제 #21
0
        public void SelectObjectWithName(string objectName)
        {
            // Search for it
            int index = 0;

            foreach (HUDObject obj in hud.objects)
            {
                if (obj.name.Equals(objectName))
                {
                    SelectedObjectId = index;
                    return;
                }
                ++index;
            }
            // not found, create it
            HUDObject newHudObj = new HUDObject();

            newHudObj.name = objectName;
            hud.objects.Add(newHudObj);
            SelectedObjectId = hud.objects.Count - 1;
        }
예제 #22
0
    void ColorWithRange(HUDObject bogeyHUD, bool inRange = true)
    {
        Image retColor = bogeyHUD.ret.GetComponentInChildren <Image>();

        for (int i = 0; i < HUDColors.Length; i++)
        {
            if (HUDColors[i].tagType == bogeyHUD.bogey.tag)
            {
                if (inRange)
                {
                    retColor.color = Color.Lerp(retColor.color, HUDColors[i].tagColor, Time.deltaTime);
                }
                else
                {
                    retColor.color = Color.Lerp(retColor.color,
                                                new Color(HUDColors[i].tagColor.r, HUDColors[i].tagColor.g, HUDColors[i].tagColor.b, 0f),
                                                Time.deltaTime);
                }
            }
        }
    }
예제 #23
0
        internal override void Draw(HUDObject ho, ref Matrix4 viewProjection)
        {
            GL.UseProgram(mProgramId);

            GeoMesh mesh = KWEngine.KWRect.Meshes.Values.ElementAt(0);

            GL.BindVertexArray(mesh.VAO);
            GL.BindBuffer(BufferTarget.ElementArrayBuffer, mesh.VBOIndex);

            lock (ho)
            {
                GL.Uniform4(mUniform_TintColor, ho._tint);
                GL.Uniform4(mUniform_Glow, ho._glow);

                lock (ho._modelMatrices)
                {
                    for (int i = 0; i < ho._positions.Count; i++)
                    {
                        Matrix4 mvp = ho._modelMatrices[i] * viewProjection;
                        GL.UniformMatrix4(mUniform_MVP, false, ref mvp);

                        GL.ActiveTexture(TextureUnit.Texture0);
                        GL.BindTexture(TextureTarget.Texture2D, ho._textureIds[i]);
                        GL.Uniform1(mUniform_Texture, 0);

                        GL.DrawElements(mesh.Primitive, mesh.IndexCount, DrawElementsType.UnsignedInt, 0);

                        GL.BindTexture(TextureTarget.Texture2D, 0);
                    }
                }
            }

            GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);
            GL.BindVertexArray(0);

            GL.UseProgram(0);
        }
예제 #24
0
        public void OnRemoveButton()
        {
            // Find selected anim
            HUDObject selectedAnim = GetObjectFromList();
            // Find selected event
            ConditionalEvent selectedEvent = allEventsSorted[_eventsList.SelectedItem];
            // Find the event on the anim and remove it
            ConditionalEventComparer comparer = new ConditionalEventComparer();

            for (int i = 0; i < selectedAnim.events.Count; ++i)
            {
                if (comparer.Equals(selectedEvent, selectedAnim.events[i]))
                {
                    selectedAnim.events.RemoveAt(i);
                    break;
                }
            }

            allEvents[selectedEvent].Remove(selectedAnim);

            // Refresh UI
            RefreshObjectsList();
            RefreshObjectsDropdown();
        }
예제 #25
0
        void RefreshEventsList()
        {
            HUDObject currentObj = HUDEditor.Instance.CurrentObject();

            if (currentObj == null || currentObj.events.Count == 0)
            {
                _eventsList.Options        = new List <string>();
                _removeButton.interactable = false;
                _editButton.interactable   = false;
                return;
            }
            List <string> newEvents = new List <string>();

            foreach (ConditionalEvent e in currentObj.events)
            {
                newEvents.Add(e.ToString());
            }
            int currentSelection = HUDEditor.Instance.SelectedEventId;

            _eventsList.Options        = newEvents;
            _eventsList.SelectedItem   = currentSelection;
            _removeButton.interactable = true;
            _editButton.interactable   = true;
        }
예제 #26
0
파일: World.cs 프로젝트: vardrop/KWEngine2
 /// <summary>
 /// Löscht ein HUD-Objekt
 /// </summary>
 /// <param name="h">Objekt</param>
 public void RemoveHUDObject(HUDObject h)
 {
     _hudObjectsTBR.Add(h);
 }
예제 #27
0
    void BogeyOnHUD(GameObject bogey)
    {
        //Assign a HUD reticule for this thing
        //assign appropriate sprite
        //assign appropriate color
        //display faded or off if in distance
        //display UI info if in range
        //display ACTIVE UI info if ACTIVE target

        //ERROR CATCH
        if (bogey == null)
        {
            return;
        }

        HUDObject HUDItem = GetHUDRet(bogey);

        //don't display if maximum HUD elements exceeded
        if (bogeyCount >= bogeys.Length)
        {
            return;
        }


        //zero position
        HUDItem.ret.transform.localPosition = Vector3.zero;

        //line up with object in view
        HUDItem.ret.transform.LookAt(bogey.transform.position, hudMaster.transform.up);

        //distance to target
        float rangeTarget = Vector3.Distance(bogey.transform.position, ScoreKeeper.playerAlive.transform.position);

        //find HUD renderer
        Canvas HUD = HUDItem.ret.GetComponentInChildren <Canvas>();

        HUDItem.ret.transform.GetComponentInChildren <ThreatHP>().uiCanvas.enabled = true;
        ThreatHP statusBar = HUDItem.ret.transform.GetComponentInChildren <ThreatHP>();

        string enemyStatus = "";
        string enemyIFF    = "";
        string mobHull     = "";

        if (rangeTarget < sensorRange && bogey.GetComponent <EnemyShipModular>())
        {
            mobHull = bogey.GetComponent <EnemyShipModular>().eHP + " / " + bogey.GetComponent <EnemyShipModular>().maxHP;



            //display HPBar on hostile targets
            statusBar.hpbar.value = (bogey.GetComponent <EnemyShipModular>().eHP / bogey.GetComponent <EnemyShipModular>().maxHP);

            if (bogey.tag == "Threat")
            {
            }

            else if (bogey.tag == "NonThreat")
            {
                enemyStatus = "DISABLED:";
                Color disabledColor = new Vector4(48.0f / 255.0f, 172.0f / 255.0f, 234.0f / 255.0f, 255.0f / 255.0f);
                statusBar.hpcolor.color = disabledColor;
            }

            else if (bogey.tag == "Objective")
            {
                enemyStatus = "OBJECTIVE:";
                Color objColor = new Vector4(0.0f / 255.0f, 255.0f / 255.0f, 33.0f / 255.0f, 202.0f / 255.0f);
                statusBar.hpcolor.color = objColor;
            }

            else if (bogey.tag == "Boss")
            {
                Color bossColor = new Vector4(255.0f / 255.0f, 0.0f / 255.0f, 237.0f / 255.0f, 255.0f / 255.0f);
                enemyStatus             = "BOSS:";
                statusBar.hpcolor.color = bossColor;
            }

            else if (bogey.tag == "Salvage")
            {
                enemyStatus = "DESTROYED / SALVAGE";
                mobHull     = "";
                statusBar.hpbar.gameObject.SetActive(false);
            }


            //statusUpdate
            //statusBar.hptxt.text = bogey.name + ": " + (Mathf.Round(rangeTarget) * rfScale) + "m" + "\n" + enemyStatus;
            enemyIFF = "<b>" + bogey.name + ":</b> " + (Mathf.Round(rangeTarget) * rfScale) + "m";

            //					if (thing.GetComponent<EnemyShipModular>().battleMode == false || thing.GetComponent<EnemyShipModular>().eHP <1.0f)
            //					{
            //						statusBar.hptxt.text = thing.GetComponent<EnemyShipModular>().tag;
            //					}
        }
        else if (rangeTarget < sensorRange && bogey.tag == "Objective")
        {   //statusUpdate
            //statusBar.hptxt.text = bogey.name + ": " + (Mathf.Round(rangeTarget) * rfScale) + "m" + "\n" + "<b>OBJECTIVE</b>";
            enemyIFF = "<b>" + bogey.name + ":</b> " + (Mathf.Round(rangeTarget) * rfScale) + "m" + "\n" + "<b>OBJECTIVE</b>";

            statusBar.hpbar.gameObject.SetActive(false);
        }

        else
        {
            HUDItem.ret.transform.GetComponentInChildren <ThreatHP>().uiCanvas.enabled = false;
        }


        //ColorOnTag(HUDItem);

        ColorWithRange(HUDItem, (rangeTarget < MAXsensorRange));


        //enable renderer if in range
        //HUD.enabled = (rangeTarget < MAXsensorRange);

        //check if selectable


        //enemyIFF = bogey.name + ": " + (Mathf.Round(rangeTarget) * rfScale) + "m";

        statusBar.statusText(enemyStatus, enemyIFF, mobHull);
    }
예제 #28
0
 internal abstract void Draw(HUDObject ho, ref Matrix4 viewProjection);
예제 #29
0
 internal override void Draw(HUDObject ho, ref Matrix4 viewProjection)
 {
     throw new NotImplementedException();
 }
예제 #30
0
        public override void Prepare()
        {
            KWEngine.LoadModelFromFile("Robot", @".\models\UBot\ubot.fbx");
            KWEngine.LoadModelFromFile("Lab", @".\models\labyrinth\walls.obj");
            KWEngine.LoadModelFromFile("Panel", @".\models\spacepanel\scifipanel.obj");
            KWEngine.LoadModelFromFile("Spaceship", @".\models\spaceship\spaceship4.obj");

            KWEngine.BuildTerrainModel("Terrain", @".\textures\heightmap.png", @".\textures\sand_diffuse.dds", 100, 2, 100, 5, 5);

            SetAmbientLight(0, 0.25f, 1f, 0.25f);
            SetCameraPosition(100, 100, 100);
            WorldDistance = 1000;

            Immovable ship = new Immovable();

            ship.SetModel("Spaceship");
            ship.IsCollisionObject = true;
            ship.IsShadowCaster    = true;
            ship.SetPosition(-35, 3.5f, -25);
            ship.SetScale(15);
            ship.AddRotationZ(25, true);
            ship.AddRotationX(40, true);
            AddGameObject(ship);

            Immovable floor = new Immovable();

            floor.SetModel("Terrain");
            floor.IsCollisionObject = true;
            floor.IsShadowCaster    = true;
            floor.SetTexture(@".\textures\sand_normal.dds", TextureType.Normal);
            AddGameObject(floor);

            Immovable wallLeft1 = new Immovable();

            wallLeft1.Name = "WallLeft";
            wallLeft1.SetModel("KWCube");
            wallLeft1.IsCollisionObject = true;
            wallLeft1.IsShadowCaster    = true;
            wallLeft1.SetScale(2, 10, 100);
            wallLeft1.SetPosition(-49, 5, 0);
            AddGameObject(wallLeft1);

            Immovable wallRight = new Immovable();

            wallRight.Name = "WallRight";
            wallRight.SetModel("KWCube");
            wallRight.IsCollisionObject = true;
            wallRight.IsShadowCaster    = true;
            wallRight.SetScale(2, 10, 100);
            wallRight.SetPosition(49, 5, 0);
            AddGameObject(wallRight);

            Immovable wallFront = new Immovable();

            wallFront.Name = "WallFront";
            wallFront.SetModel("KWCube");
            wallFront.IsCollisionObject = true;
            wallFront.IsShadowCaster    = true;
            wallFront.SetScale(100, 10, 2);
            wallFront.SetPosition(0, 5, 49);
            AddGameObject(wallFront);

            Immovable wallBack = new Immovable();

            wallBack.Name = "WallBack";
            wallBack.SetModel("KWCube");
            wallBack.IsCollisionObject = true;
            wallBack.IsShadowCaster    = true;
            wallBack.SetScale(100, 10, 2);
            wallBack.SetPosition(0, 5, -49);
            AddGameObject(wallBack);

            p = new Player();
            p.SetModel("Robot");
            p.Name = "Player";
            p.SetPosition(-5, 0f, -5);
            p.SetScale(4);
            p.AnimationID         = 0;
            p.AnimationPercentage = 0;
            p.IsShadowCaster      = true;
            p.IsCollisionObject   = true;
            p.IsPickable          = true;
            p.TurnTowardsXZ(new Vector3(0, 0, 0));
            //p.SetSpecularOverride(true, 8, 32);
            AddGameObject(p);
            //SetFirstPersonObject(p);

            p._flashlight = new LightObject(LightType.Directional, true);
            p._flashlight.SetColor(1, 0.75f, 0, 5f);
            p._flashlight.SetNearAndFarBounds(1f, 10);
            p._flashlight.SetFOV(150);
            //p._flashlight.SetFOVBiasCoefficient(0.025f);
            AddLightObject(p._flashlight);


            Immovable lab = new Immovable();

            lab.Name = "Labyrinth";
            lab.SetModel("Lab");
            lab.IsCollisionObject = true;
            lab.IsShadowCaster    = true;
            //lab.SetSpecularOverride(true, 0, 2048);
            AddGameObject(lab);

            Panel panel = new Panel();

            panel.Name = "Panel";
            panel.SetModel("Panel");
            panel.SetPosition(10, 0.25f, -5);
            panel.SetScale(3);
            //panel.SetSpecularOverride(true, 2, 1024);
            //panel.SetTextureForMesh(0, @".\models\spacepanel\scifipanel2.png");
            panel.IsShadowCaster    = true;
            panel.IsPickable        = true;
            panel.IsCollisionObject = true;
            AddGameObject(panel);

            /*
             * PanelLight pLight = new PanelLight();
             * pLight.Type = LightType.Directional;
             * pLight.SetColor(1, 1, 1, 1);
             * pLight.SetPosition(10, 5, -5);
             * pLight.SetTarget(10, 0, -5);
             * pLight.SetDistanceMultiplier(5f);
             * AddLightObject(pLight);
             */

            LightObject sun = new LightObject(LightType.Sun, true);

            sun.SetPosition(125, 200, -125);
            sun.SetTarget(0, 0, 0);
            sun.SetFOV(140);
            sun.SetNearAndFarBounds(100, 400);
            sun.SetColor(0, 0.5f, 1.0f, 0.5f);
            AddLightObject(sun);

            HUDObject ho = new HUDObject(HUDObjectType.Text, 24, 24);

            ho.SetText("kwengine.de");
            ho.SetGlow(1, 0, 0, 1);
            ho.SetRotation(0, 0);
            AddHUDObject(ho);

            //DebugShadowLight = sun;

            DebugShowHitboxes           = false;
            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
            if (IsFirstPersonMode)
            {
                FOV = 90;
            }
            else
            {
                FOV = 45;
            }
        }