public void SelectClickedSystem() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, 2147483391)) { int entityID; if (int.TryParse(RecursionUtil.GetRootFather(hit.transform.gameObject).name, out entityID)) { this.treeviewHandlerScript.TreeView.SelectedItem = RecursionUtil.GetTreeviewItemByEntityId(entityID, this.treeviewHandlerScript.TreeView.ItemsSource); } } }
public void SendDisEvent(DetonationPdu detonationPdu) { DateTime timestamp = DateTime.Now; Vector3D geographicalCoordinates = CalculationUtil.ConvertToGeographicalCoordinates(new Vector3D(detonationPdu.LocationInWorldCoordinates.X, detonationPdu.LocationInWorldCoordinates.Y, detonationPdu.LocationInWorldCoordinates.Z)); string message = String.Format("Detonation at {0:0.000000}° lat, {1:0.000000}° lon. by entity", geographicalCoordinates.y, geographicalCoordinates.x); Treeview_DataModel firingEntity = RecursionUtil.GetTreeviewItemByEntityId(detonationPdu.FiringEntityID.Entity, this.treeviewHandlerScript.TreeView.ItemsSource); if (firingEntity == null) { message += " \"UNK\"."; } else { message += " \"" + firingEntity.Text + "\"."; } this.treeviewHandlerScript.AddEventToLog(new DisEvent(timestamp, message)); }
public void SendDisEvent(FirePdu firePdu) { DateTime timestamp = DateTime.Now; string message; Treeview_DataModel firingEntity = RecursionUtil.GetTreeviewItemByEntityId(firePdu.FiringEntityID.Entity, this.treeviewHandlerScript.TreeView.ItemsSource); if (firingEntity == null) { message = "Entity \"UNK\" fired"; } else { message = "Entity \"" + firingEntity.Text + "\" fired"; } if (firePdu.TargetEntityID.Entity != 0) { Treeview_DataModel targetEntity = RecursionUtil.GetTreeviewItemByEntityId(firePdu.TargetEntityID.Entity, this.treeviewHandlerScript.TreeView.ItemsSource); if (targetEntity == null) { message += " upon entity \"UNK\""; } else { message += " upon entity \"" + targetEntity.Text + "\""; } } Vector3D geographicalCoordinates = CalculationUtil.ConvertToGeographicalCoordinates(new Vector3D(firePdu.LocationInWorldCoordinates.X, firePdu.LocationInWorldCoordinates.Y, firePdu.LocationInWorldCoordinates.Z)); message += String.Format(" at {0:0.000000}° lat, {1:0.000000}° lon.", geographicalCoordinates.y, geographicalCoordinates.x); this.treeviewHandlerScript.AddEventToLog(new DisEvent(timestamp, message)); }
////////////////////////////////////////////////////// //// FUNCIONS FOR EXTERNAL ACCESS public void SetEntityMovementAndDamage(int entityID, bool moving, Vector3 moveDirection, float speed, int entityDamage, Vector3D geodeticLocation, Vector3 position, byte entityDomain) { // find entity in treeview Treeview_DataModel treeviewEntity = RecursionUtil.GetTreeviewItemByEntityId(entityID, this.treeviewHandlerScript.TreeView.ItemsSource); string message = ""; bool newEntitySpawned = false; if (treeviewEntity == null) { newEntitySpawned = true; Debug.Log("Entity " + entityID + " wasn't found!"); this.treeviewHandlerScript.AddUnknownEntityToTreeview(entityID); treeviewEntity = RecursionUtil.GetTreeviewItemByEntityId(entityID, this.treeviewHandlerScript.TreeView.ItemsSource); message = "New entity"; treeviewEntity.Health = -1; // TODO move to SetEntityMovementAndDamage // set airborne if (entityDomain == 2) { treeviewEntity.IsAirborne = true; } } else if (treeviewEntity.GameObject.transform.position.y < -2000) { newEntitySpawned = true; message = "Known entity"; if (entityDomain == 2) { treeviewEntity.IsAirborne = true; } } // update geodetic location treeviewEntity.GeographicCoordinates = geodeticLocation; // send entity state event if (newEntitySpawned) { DateTime timestamp = DateTime.Now; message += String.Format(" \"{0}\" spawned at {1:0.000000}° lat, {2:0.000000}° lon.", treeviewEntity.Text, treeviewEntity.GeographicCoordinates.y, treeviewEntity.GeographicCoordinates.x); this.treeviewHandlerScript.AddEventToLog(new DisEvent(timestamp, message)); } if (!treeviewEntity.IsUnit) { // set entity position // TODO check maybe needs to be deleted to be faster if (!CalculationUtil.HaveSameValues(position, treeviewEntity.GameObject.transform.position)) { treeviewEntity.GameObject.transform.position = position; RecursionUtil.SetWorldPositionOfParentUnit_Rec(treeviewEntity); } // set entity rotation if (moveDirection != Vector3.zero) { treeviewEntity.GameObject.transform.rotation = Quaternion.LookRotation(moveDirection); } if (treeviewEntity.Health != entityDamage) { // TODO 1 if(treeviewEntity.Health != entityDamage) (set new health && updateHealth) // TODO 2 UpdateHealth change to go up // update entity damage treeviewEntity.Health = entityDamage; // TODO confirm that it is working //RecursionUtil.UpdateHealth_Rec(this.treeviewHandlerScript.treeview.ItemsSource); RecursionUtil.UpdateHealthOfAncestors_Rec(treeviewEntity); } } // set entity movement if (!moving) { treeviewEntity.Moving = false; } else { treeviewEntity.Moving = true; treeviewEntity.MovingSpeed = speed; treeviewEntity.MovingDirection = moveDirection; } }