Esempio n. 1
0
    public void FixedUpdate()
    {
        if (!isStarted && _startup)
        {
            // Load scenario JSON
            TextAsset    scenarioJsonFile = Resources.Load <TextAsset>(scenariosPath + scenarioId + "/scenario");
            ScenarioJson scenarioJson     = JsonUtility.FromJson <ScenarioJson>(scenarioJsonFile.text);

            // Set current simulated time
            currentSimulatedTime = Convert.ToDateTime(scenarioJson.currentSimulatedTime);

            // Set Point Last Seen
            pointLastSeen = scenarioJson.pointLastSeen;

            // Set Last Known Position
            lastKnownPosition = scenarioJson.lastKnownPosition;

            // Set Command Post location
            commandPostLocation = scenarioJson.commandPostLocation;

            // Setup field teams
            foreach (FieldTeamJson fieldTeamJson in scenarioJson.fieldTeams)
            {
                GameObject fieldTeamObj = GameObject.Instantiate(fieldTeamPrefab, this.transform);
                FieldTeam  fieldTeam    = fieldTeamObj.GetComponent <FieldTeam>();
                fieldTeam.teamName = fieldTeamJson.name;
                ColorUtility.TryParseHtmlString(fieldTeamJson.color, out fieldTeam.teamColor);
                fieldTeam.recordingDirectoryPath = scenariosPath + scenarioId + "/TeamRecords/" + fieldTeamJson.path;
                fieldTeam.simulatedStartTime     = Convert.ToDateTime(fieldTeamJson.simulatedStartTime);
                fieldTeam.mainController         = this;

                AddFieldTeam(fieldTeam);
            }

            //// Instantiate PLS and LKP markers
            //plsMarkerObj = GameObject.Instantiate(plsMarkerPrefab, sceneUiObj.transform);
            //plsMarkerObj.transform.SetSiblingIndex(0);
            //lkpMarkerObj = GameObject.Instantiate(lkpMarkerPrefab, sceneUiObj.transform);
            //lkpMarkerObj.transform.SetSiblingIndex(0);

            // Instantiate Command Post marker
            cpMarkerObj = GameObject.Instantiate(cpMarkerPrefab, sceneUiObj.transform);
            cpMarkerObj.transform.SetSiblingIndex(0);

            _startTimeOfSimulation = currentSimulatedTime.dateTime;
            _actualStartTime       = DateTime.Now;

            networkEvents.AddHandler("MessageToCommand", MessageToCommand);

            //LayoutRebuilder.MarkLayoutForRebuild(sideUiObj.GetComponent<RectTransform>());
            Canvas.ForceUpdateCanvases();
            layoutGroupToRefresh.enabled = false;
            layoutGroupToRefresh.enabled = true;

            isStarted = true;
            _startup  = false;

            GameObject.Destroy(startScreenObj);
        }
    }
Esempio n. 2
0
    public void DisplayImage(UDateTime simulatedTime)
    {
        string path;

        if (fieldTeam.isInRadioDeadZone)
        {
            path = fieldTeam.GetGrayscalePhotoThumbnailPathFromSimulatedTime(simulatedTime);
            if (_lastImagePathDisplayed == null || _lastImagePathDisplayed != path)
            {
                _imageLoader.StartLoading(path, this, fieldTeam.mainController.footageThumbnailsCache);

                _lastImagePathDisplayed = path;
            }
        }
        else
        {
            path = fieldTeam.GetPhotoThumbnailPathFromSimulatedTime(simulatedTime);
            if (_lastImagePathDisplayed == null || _lastImagePathDisplayed != path)
            {
                if (fieldTeam.mainController.isOptimizedVersion)
                {
                    _imageLoader.StartLoading(path, this, fieldTeam.mainController.footageThumbnailsCache);
                }
                else
                {
                    Texture2D texture = Utility.LoadImageFile(path);
                    footage.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0, 0));
                }

                _lastImagePathDisplayed = path;
            }
        }
    }
Esempio n. 3
0
    public void AddFieldTeam(FieldTeam fieldTeam)
    {
        if (_earliestSimulatedStartTime == null || fieldTeam.simulatedStartTime.dateTime < _earliestSimulatedStartTime.dateTime)
        {
            _earliestSimulatedStartTime = fieldTeam.simulatedStartTime;
        }
        if (_latestSimulatedEndTime == null || fieldTeam.simulatedEndTime.dateTime > _latestSimulatedEndTime)
        {
            _latestSimulatedEndTime = fieldTeam.simulatedEndTime;
        }

        fieldTeam.FieldTeamInstantiate();
    }
Esempio n. 4
0
 public static void SetCurrentDateTime(DateTime dt)
 {
     using (var context = new Db1Entities())
     {
         var uDateTime = new UDateTime
         {
             CurrentDateTime = dt,
             SystemTime      = DateTime.Now
         };
         context.UDateTime.Add(uDateTime);
         context.SaveChanges();
     }
 }
Esempio n. 5
0
    public void Start()
    {
        if (!isStarted)
        {
            if (instantiateBySimulatedTime)
            {
                actualTime = fieldTeam.ConvertSimulatedTimeToActualTime(simulatedTime);
            }
            else // if (!instantiateBySimulatedTime)
            {
                simulatedTime = fieldTeam.ConvertActualTimeToSimulatedTime(actualTime);
            }

            isStarted = true;
        }
    }
Esempio n. 6
0
        public static IntPtr LastChanceAllocPreferred(ASafeMemoryHandle processHandle, IntPtr preferred, int size, MemoryProtectionFlags protection)
        {
            var startTime = UDateTime.Ticks();
            var address   = UIntPtr.Zero;
            var distance  = 0UL;
            var count     = 0;

            if (preferred.ToInt64() % 65536 > 0)
            {
                preferred = (IntPtr)(preferred.ToInt64() - (preferred.ToInt64() % 65536));
            }
            while (address == UIntPtr.Zero && (count < 10 || (UDateTime.Ticks() < startTime + 10000)) && (distance < 0x80000000UL))
            {
                address = Allocate(processHandle, (IntPtr)(preferred.ToUIntPtr().ToUInt64() + distance), size, protection, MemoryAllocationFlags.Reserve | MemoryAllocationFlags.Commit).ToUIntPtr();
                if (address == UIntPtr.Zero)
                {
                    distance += 65536;
                }
                count += 1;
            }
            return(address.ToIntPtr());
        }