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; } } }
/// <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); }
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; }
public void OnAddButton() { HUDObject currentObj = HUDEditor.Instance.CurrentObject(); currentObj.events.Add(new ConditionalEvent()); HUDEditor.Instance.SelectedEventId = currentObj.events.Count - 1; RefreshEventsList(); OnEditButton(); }
public void OnCharacterTextToggleChanged(bool value) { HUDObject hudObj = HUDEditor.Instance.CurrentObject(); if (hudObj == null) { return; } hudObj.useCharacterText = value; }
public void OnPortraitSelectionChanged(bool value) { HUDObject hudObj = HUDEditor.Instance.CurrentObject(); if (hudObj == null) { return; } hudObj.usePortraitSprite = value; }
public void OnAttackAndAnchoringToggleChanged(bool value) { HUDObject hudObj = HUDEditor.Instance.CurrentObject(); if (hudObj == null) { return; } hudObj.attackAndGrabDelegation = value; }
public void OnPlayerChanged(string value) { HUDObject hudObj = HUDEditor.Instance.CurrentObject(); if (hudObj == null) { return; } hudObj.playerId = int.Parse(value); }
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; } } }
public ConditionalEvent CurrentEvent() { HUDObject currentObj = CurrentObject(); if (currentObj == null || currentObj.events.Count == 0) { return(null); } return(currentObj.events[selectedEventId]); }
/// <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."); } }
/// <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."); } }
void UpdateGuiItems() { HUDObject hudObj = HUDEditor.Instance.CurrentObject(); if (hudObj == null) { return; } _teamObj.text = hudObj.teamId + ""; _playerObj.text = hudObj.playerId + ""; _attackAnchorObj.isOn = hudObj.attackAndGrabDelegation; }
private void OnEnable() { if (isController) { index = 0; selected = item[index]; selected.Select(); } else { Cursor.visible = true; } }
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); }
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(); }
// 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(); }
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); } } }
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(); }
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); }
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; }
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); } } } }
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); }
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(); }
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; }
/// <summary> /// Löscht ein HUD-Objekt /// </summary> /// <param name="h">Objekt</param> public void RemoveHUDObject(HUDObject h) { _hudObjectsTBR.Add(h); }
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); }
internal abstract void Draw(HUDObject ho, ref Matrix4 viewProjection);
internal override void Draw(HUDObject ho, ref Matrix4 viewProjection) { throw new NotImplementedException(); }
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; } }