public void ProduceJob(ModelImport.Job job)
 {
     Debug.Log("call ProduceJob");
     lock (jobQueueLock)
     {
         jobQueue.Enqueue(job);
     }
 }
 public void ConsumeJob()
 {
     Debug.Log("call ConsumeJob");
     lock (jobQueueLock)
     {
         _workingJob = jobQueue.Dequeue();
     }
 }
        public bool WatchImportStatus()
        {
            if (_workingJob == null && jobQueue.Count != 0)
            {
                _hasJobs = true;
                ConsumeJob();
                ModelImport.RunImport(_workingJob);

                var fileList = UIView.Find("ModelImportPanel").Find("FileList") as UIListBox;

                int index = Array.IndexOf(fileList.items, $"{_workingJob.name}.FBX");
                if (index < 0)
                {
                    index = Array.IndexOf(fileList.items, $"{_workingJob.name}.fbx");
                    if (index < 0)
                    {
                        index  = Array.IndexOf(fileList.items, $"{_workingJob.name}.obj");
                        _isOBJ = true;
                    }
                }
                fileList.selectedIndex = index;
                _continueButton        = UIView.Find("ModelImportPanel").Find("SelectAsset").components[0] as UIButton;
            }
            if (_workingJob != null && _continueButton != null)
            {
                if (_continueButton.isEnabled)
                {
                    Debug.Log("Click continue");
                    if (_isOBJ)
                    {
                        var scaleBox = UIView.Find("ModelImportPanel").Find("SettingContainer").components[1] as UITextField;
                        scaleBox.text = "100";
                    }
                    _continueButton.SimulateClick();
                    _continueButton = null;
                    ModelImport.FinalizeImport(_workingJob);
                    _workingJob = null;
                }
            }
            if (_workingJob == null && jobQueue.Count == 0 && _hasJobs)
            {
                _hasJobs = false;
                Utils.RefreshRoadEditor();
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public override void OnUpdate(float realTimeDelta, float simulationTimeDelta)
        {
            if ((Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) && Input.GetKey(KeyCode.T))
            {
                if (_actionProcessed)
                {
                    return;
                }

                _actionProcessed = true;

                // test a job queue
                ModelImport.Job job = new ModelImport.Job
                {
                    mode   = "Elevated",
                    isNode = false,
                    meshid = 0,
                    name   = "12DR_ELV"
                };
                ModelImport.worker.ProduceJob(job);
                job = new ModelImport.Job
                {
                    mode   = "Slope",
                    isNode = false,
                    meshid = 0,
                    name   = "Slope"
                };
                ModelImport.worker.ProduceJob(job);
                job = new ModelImport.Job
                {
                    mode   = "Bridge",
                    isNode = false,
                    meshid = 0,
                    name   = "12DR_ELV"
                };
                ModelImport.worker.ProduceJob(job);

                Debug.Log("job added to queue");
            }
            else
            {
                // not both keys pressed: Reset processed state
                _actionProcessed = false;
            }
        }
Beispiel #5
0
 public void Apply(NetInfo gameNet, string _mode)
 {
     this.mode = _mode;
     if (gameNet == null)
     {
         return;
     }
     if (nodeMeshes != null)
     {
         for (int i = 0; i < nodeMeshes.Length; i++)
         {
             ModelImport.Job job = new ModelImport.Job
             {
                 mode    = this.mode,
                 isNode  = true,
                 meshid  = nodeMeshes[i].index > -1 ? nodeMeshes[i].index : i,
                 target  = gameNet,
                 name    = nodeMeshes[i].name,
                 shader  = Shader.Find(nodeMeshes[i].shader),
                 color   = new Color(nodeMeshes[i].color[0], nodeMeshes[i].color[1], nodeMeshes[i].color[2], 1),
                 texture = nodeMeshes[i].texture
             };
             ModelImport.worker.ProduceJob(job);
         }
     }
     if (segmentMeshes != null)
     {
         for (int i = 0; i < segmentMeshes.Length; i++)
         {
             ModelImport.Job job = new ModelImport.Job
             {
                 mode    = this.mode,
                 isNode  = false,
                 meshid  = segmentMeshes[i].index > -1 ? segmentMeshes[i].index : i,
                 target  = gameNet,
                 name    = segmentMeshes[i].name,
                 shader  = Shader.Find(segmentMeshes[i].shader),
                 color   = new Color(segmentMeshes[i].color[0], segmentMeshes[i].color[1], segmentMeshes[i].color[2], 1),
                 texture = segmentMeshes[i].texture
             };
             ModelImport.worker.ProduceJob(job);
         }
     }
 }