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