def flowcontrolWHILE(func): parent = _getCommandGroup() source = _getSource(parent) try: parentLoop = source._currentLoop except AttributeError: parentLoop = None cg = CommandGroup(func.__name__) cg._source = source # Set the current loop for any BREAK statements source._currentLoop = cg func(cg) source._currentLoop = parentLoop def cancelLoop(self): self.getGroup().forceCancel = True end = Command("END WHILE") end.initialize = cancelLoop.__get__(end) cond = ConditionalCommand("flowcontrolWHILE", cg, end) cond.condition = condition cond.forceCancel = False cond.isFinished = _restartWhile.__get__(cond) cond._parentLoop = parentLoop parent.addSequential(cond) cg.conditionalCommand = cond
def _buildCommandGroup(func, parent): """Turns the given function into a full CommandGroup.""" source = _getSource(parent) cg = CommandGroup(func.__name__) cg._source = source func(cg) return cg