示例#1
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);
        }
    }