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; } }
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); } } }