コード例 #1
0
    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);
            }
        }
    }
コード例 #2
0
    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));
    }
コード例 #3
0
    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));
    }
コード例 #4
0
    //////////////////////////////////////////////////////
    //// 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;
        }
    }