void SetLocalPositionInArray(List <int> row, float yPos, out float maxYSpace) { maxYSpace = 0.0f; float tempX = 0; foreach (var taskID in row) { // calculate the size of each task TaskBundle task = m_TaskData[taskID]; TaskPositionHelper calculator = m_TaskCalculator[taskID]; TaskVisualObj visual = TryFindTaskVisual(taskID); if (null != visual && !calculator.IsSetPosition) { visual.m_3DObj.transform.localPosition = new Vector3(tempX, yPos, 0); } if (calculator.YSpace > maxYSpace) { maxYSpace = calculator.YSpace; } tempX += calculator.XSpace; } }
List <int> CreateSortingArrayForParentIDSet(Dictionary <int, TaskBundle> tasks, int parentID) { List <int> taskInTheSameParentID = new List <int>(); var taskM = tasks.GetEnumerator(); while (taskM.MoveNext()) { var data = taskM.Current.Value; if (data.Relation.ParentID == parentID) { taskInTheSameParentID.Add(data.Data.TaskID); } } if (taskInTheSameParentID.Count > 0) { TaskVisualObj visualNode = TryFindTaskVisual(parentID); if (null != visualNode) { TaskVidual2DObjectHelper visual = visualNode.m_2DHelper; visual.SetupParentPanel(this, parentID, taskInTheSameParentID); } } SortVisualTaskInARow(taskInTheSameParentID); return(taskInTheSameParentID); }
void SetParentAndLocalPositionInArray(Dictionary <int, TaskBundle> tasks, Dictionary <int, TaskPositionHelper> helpers, List <int> row) { float tempX = 0; foreach (var taskID in row) { // calculate the size of each task TaskBundle task = tasks[taskID]; TaskPositionHelper calculator = helpers[taskID]; TaskVisualObj visual = TryFindTaskVisual(taskID); TaskVisualObj visualParent = TryFindTaskVisual(task.Relation.ParentID); if (null != visual && null != visualParent) { visual.m_3DObj.transform.SetParent(visualParent.m_3DObj.transform); if (!calculator.IsSetPosition) { visual.m_3DObj.transform.localPosition = new Vector3(tempX, 0.7f, 1); } // Debug.LogWarning("visual.m_3DObj.transform.localPosition" + visual.m_3DObj.transform.localPosition ); } tempX += calculator.XSpace; } }
void MouseRelease() { if (m_SelectedObjDraged) { if (IsSelected()) { // update position to data TaskBundle bundle = TryFindTaskData(m_SelectedObjTaskID); TaskVisualObj visual = TryFindTaskVisual(m_SelectedObjTaskID); if (null != visual && null != bundle) { if (bundle.Visual.IsPin) { // revert position SetTaskVisual3DFromBundle(visual.m_3DObj, bundle); } else { Vector3 pos = visual.m_3DObj.transform.localPosition; bundle.Visual.PositionStr = string.Format("{0},{1},{2}", pos.x, pos.y, pos.z); // uploading apply change to task TaskAddRequest fetchReq = new TaskAddRequest(); fetchReq.UpdateSerial = TaskMauerStaticData.GetUpdateSerial(); fetchReq.ProjectKey = m_ProjectKey; fetchReq.Task = bundle; StartCoroutine(StartRequestModifyTask(fetchReq)); } } } m_SelectedObjDraged = false; } }
void SetTaskVisual3DFromBundle(GameObject obj, TaskBundle bundle) { if (null == obj) { return; } if (null == bundle) { return; } if (bundle.Relation.ParentID != 0) { TaskVisualObj visualParent = TryFindTaskVisual(bundle.Relation.ParentID); if (null != visualParent) { obj.transform.SetParent(visualParent.m_3DObj.transform); } } if (bundle.Visual.PositionStr != string.Empty) { obj.transform.localPosition = TaskBundleHelper.ParsePositionStr(bundle.Visual.PositionStr); } }
void AddTaskCalculatorFromTaskBundle(TaskBundle bundle) { TaskPositionHelper helper = InsertTaskPositionHelper(bundle); if (null != helper) { helper.DepthToRoot = FindDepthToRootByThisNode(m_TaskCalculator, bundle.Data.TaskID); CalculateParentDepthTilParent(m_TaskCalculator, helper, helper.DepthToRoot); CalculateYSpaceFromParentDepth(helper); CalculateXSpace(m_TaskData, helper); helper.IsSetPosition = (helper.Bundle.Visual.PositionStr != string.Empty); CheckAndAssignRowIndex(m_TaskCalculator, helper); List <int> sortingArray = new List <int>(); if (0 != bundle.Relation.ParentID) { // sor sortingArray = CreateSortingArrayForParentIDSet(m_TaskData, bundle.Relation.ParentID); SetParentAndLocalPositionInArray(m_TaskData, m_TaskCalculator, sortingArray); } else { Debug.Log("bundle.Visual.PositionStr=" + bundle.Visual.PositionStr); if (bundle.Visual.PositionStr != string.Empty) { TaskVisualObj visual = TryFindTaskVisual(bundle.Data.TaskID); if (null != visual) { SetTaskVisual3DFromBundle(visual.m_3DObj, bundle); } } else { bool addRowMaxY = false; sortingArray = CreateSortingArrayForEachRowIndex(m_TaskData, m_TaskCalculator, helper.RowIndex); if (!m_RowToPosY.ContainsKey(helper.RowIndex)) { addRowMaxY = true; m_RowToPosY.Add(helper.RowIndex, m_RowMaxYNow); } float maxYSpace = 0; SetLocalPositionInArray(sortingArray, m_RowToPosY[helper.RowIndex], out maxYSpace); if (addRowMaxY) { m_RowMaxYNow += maxYSpace; } } } } }
void UpdateSelectionGUI(TaskVisualObj visual) { if (null == visual) { m_SelectionHelper.m_Target = null; return; } m_SelectionHelper.m_Camera = this.m_3DCamera; m_SelectionHelper.m_Target = visual.m_3DObj; }
void DragSelectObject(Vector3 inputMousePosition) { if (IsSelected()) { TaskVisualObj visual = TryFindTaskVisual(m_SelectedObjTaskID); if (null != visual) { m_SelectedObjDraged = true; Vector3 delta = inputMousePosition - m_InputMousePositionPrevious; visual.m_3DObj.transform.Translate(CONST_DRAG_OBJECT_SPEED * delta * Time.deltaTime); } } }
void SelectATask(int selectTaskID) { m_SelectedObjTaskID = selectTaskID; TaskBundle bundle = TryFindTaskData(m_SelectedObjTaskID); TaskVisualObj visual = TryFindTaskVisual(m_SelectedObjTaskID); if (null != visual) { FetchDataToEditor(bundle); ShowSelectionGUI(true); UpdateSelectionGUI(visual); } ShowModifyTaskInterface(); }
void UpdateTaskBundle(TaskBundle inputBundle) { if (null == inputBundle) { return; } int taskID = inputBundle.Data.TaskID; TaskBundle previousBundle = TryFindTaskData(taskID); TaskVisualObj previousVisual = TryFindTaskVisual(taskID); TaskBundle targetBundleData = null; if (null == previousVisual || null == previousBundle) { if (null != previousVisual || null != previousBundle) { // fatal error. return; } } if (null != previousBundle) { Debug.LogWarning("null != previousBundle"); targetBundleData = previousBundle; TaskBundleHelper.CopyBundle(inputBundle, targetBundleData); // update visual data SetTaskVisualDataFromBundle(previousVisual.m_2DHelper, targetBundleData); // update position SetTaskVisual3DFromBundle(previousVisual.m_3DObj, targetBundleData); } else { Debug.LogWarning("new bundle data"); targetBundleData = TaskBundleHelper.CreateABundleInstance(); TaskBundleHelper.CopyBundle(inputBundle, targetBundleData); CheckAndCreateTaskObj(targetBundleData); AddTask(targetBundleData); AddTaskCalculatorFromTaskBundle(targetBundleData); } }
void CreateTaskVisualObjByTaskBundle(TaskBundle bundleData) { TaskVisualObj visual = new TaskVisualObj(); visual.m_3DObj = GameObject.Instantiate(m_Task3DPrefab, m_Task3DParent.transform); visual.m_3DObj.name = bundleData.Data.TaskID.ToString(); // init 2d var obj2d = GameObject.Instantiate(m_Task2DPrefab, m_Task2DParent.transform); obj2d.name = visual.m_3DObj.name; visual.m_2DHelper = obj2d.AddComponent <TaskVidual2DObjectHelper>(); visual.m_2DHelper.Setup(); visual.m_2DHelper.OnPressSwitchButton += TaskVisual2DObjectOnPressSwitchButton; SetTaskVisualDataFromBundle(visual.m_2DHelper, bundleData); var task2dupdate = obj2d.AddComponent <Task2DUpdateWith3D>(); task2dupdate.Setup(visual.m_3DObj, m_3DCamera); m_TaskVisuals.Add(bundleData.Data.TaskID, visual); }