![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00010 00011 #pragma once 00012 00013 #include "vrfobjcore/vrfobjcoreDefines.h" 00014 #include "vrfobjcore/taskCtlrCmpnt.h" 00015 00020 class DT_DLL_vrfobjcore DtMultiTaskControllerComponent : public DtTaskControllerComponent 00021 { 00022 00023 public: 00024 00030 DtMultiTaskControllerComponent(const DtString& name, DtVrfObject* owner, 00031 DtSimManager* simManager, 00032 DtComponentDescriptor* compDesc = 0, 00033 DtReaderWriterRegistry* parentRegistry = 0); 00034 00036 virtual ~DtMultiTaskControllerComponent(); 00037 00042 virtual void postTick(); 00043 00052 virtual bool beginProcessingTask(const DtTaskMessage& task, 00053 DtSimTaskStatePtr taskState); 00054 00060 virtual void taskComplete(int taskId, bool success); 00061 00063 virtual void clearTask(int taskId); 00064 00066 virtual DtTaskMessage* currentTaskMessage(int taskId); 00067 00073 virtual DtSimTaskStatePtr currentTaskState(int taskId) const; 00074 00078 virtual int sendSubtask(DtSimTask& task, int taskId); 00079 00084 virtual void clearSubtask(int subtaskId, int taskId); 00085 00089 virtual void addPendingSubtaskId(int subtaskId, int taskId); 00090 00095 virtual bool findPendingSubtaskId(int subtaskId, int taskId); 00096 00101 virtual void removePendingSubtaskId(int subtaskId, int taskId); 00102 00105 virtual void removeAllPendingSubtaskIds(int taskId); 00106 00108 virtual std::vector<int> currentPendingSubstaskIds(int taskId) const; 00109 00112 virtual bool decideToGiveUpTask() const; 00113 00117 virtual void giveUpTask(); 00118 00120 virtual bool taskActive(int taskId) const; 00121 00123 virtual bool clearTopLevelTasks(); 00124 00126 virtual void clearConflictingTopLevelTasks(int conflictId); 00127 00129 virtual void clearTasksByType(int taskType); 00130 00132 virtual void clearTaskById(int taskId); 00133 00135 virtual std::list<DtTaskMessage*> currentTaskMessages() const; 00136 00138 virtual DtTaskWithTaskStateListPtr topLevelTasks() const; 00139 00140 protected: 00142 virtual void addCurrentTaskMessage(const DtTaskMessage* taskMessage); 00145 virtual void clearCurrentTaskMessage(int taskId); 00146 00149 virtual void clearPendingSubtasks(int taskId); 00150 00154 virtual void clearSubtasksByType(int taskType, int taskId); 00155 00158 virtual int taskIdWhichStartedSubtask(int subtaskId); 00159 };