コード例 #1
0
    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;
        }
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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;
        }
    }
コード例 #4
0
    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;
        }
    }
コード例 #5
0
    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);
        }
    }
コード例 #6
0
    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;
                    }
                }
            }
        }
    }
コード例 #7
0
 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;
 }
コード例 #8
0
 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);
         }
     }
 }
コード例 #9
0
    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();
    }
コード例 #10
0
    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);
        }
    }
コード例 #11
0
    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);
    }