# Documentation - Class name: WAS_Number_Counter - Category: WAS Suite/Number - Output node: False - Repo Ref: https://github.com/WASasquatch/was-node-suite-comfyui WAS_Number_Counter节点旨在根据指定的操作模式管理和操作数值。它有效地处理递增、递减和边界控制的计数操作。此节点特别适用于需要序列生成或迭代数值调整的应用程序。 # Input types ## Required - number_type - ‘number_type’参数确定节点将处理的数值类型,可以是整数或浮点数。这个选择影响精度以及可以执行的算术操作类型。 - Comfy dtype: STRING - Python dtype: str - mode - ‘mode’参数指示节点将如何修改计数器值。它可以设置为递增、递减、递增到停止值或递减到停止值,这对于控制计数行为至关重要。 - Comfy dtype: STRING - Python dtype: str - start - ‘start’参数设定计数器的初始值。这是一个基本设置,为节点执行的所有计数操作设定起始点。 - Comfy dtype: FLOAT - Python dtype: Union[int, float] - stop - ‘stop’参数定义计数操作的边界值。当达到此值时,将根据所选模式停止递增或递减计数。 - Comfy dtype: FLOAT - Python dtype: Union[int, float] - step - ‘step’参数指定每次操作期间应用于计数器的增量或减量值。它直接影响数值序列的变化速率。 - Comfy dtype: FLOAT - Python dtype: float - unique_id - ‘unique_id’参数是节点管理的每个计数器的唯一标识符。它确保每个计数操作被独立跟踪和操作。 - Comfy dtype: UNIQUE_ID - Python dtype: str ## Optional - reset_bool - ‘reset_bool’参数允许在设置为大于或等于1的值时将计数器重置为其初始值。它提供了一种重新开始计数操作的方法。 - Comfy dtype: NUMBER - Python dtype: Optional[Union[int, bool]] # Output types - number - ‘number’输出提供了操作后计数器当前值的整数表示。当需要整数精度时特别有用。 - Comfy dtype: INT - Python dtype: int - float - ‘float’输出提供计数器当前值的浮点表示。适用于需要小数精度的场景。 - Comfy dtype: FLOAT - Python dtype: float - int - ‘int’输出返回计数器的整数值,类似于‘number’输出,确保结果以整数类型呈现。 - Comfy dtype: INT - Python dtype: int # Usage tips - Infra type: CPU # Source code ``` class WAS_Number_Counter: def __init__(self): self.counters = {} @classmethod def INPUT_TYPES(cls): return {'required': {'number_type': (['integer', 'float'],), 'mode': (['increment', 'decrement', 'increment_to_stop', 'decrement_to_stop'],), 'start': ('FLOAT', {'default': 0, 'min': -18446744073709551615, 'max': 18446744073709551615, 'step': 0.01}), 'stop': ('FLOAT', {'default': 0, 'min': -18446744073709551615, 'max': 18446744073709551615, 'step': 0.01}), 'step': ('FLOAT', {'default': 1, 'min': 0, 'max': 99999, 'step': 0.01})}, 'optional': {'reset_bool': ('NUMBER',)}, 'hidden': {'unique_id': 'UNIQUE_ID'}} @classmethod def IS_CHANGED(cls, **kwargs): return float('NaN') RETURN_TYPES = ('NUMBER', 'FLOAT', 'INT') RETURN_NAMES = ('number', 'float', 'int') FUNCTION = 'increment_number' CATEGORY = 'WAS Suite/Number' def increment_number(self, number_type, mode, start, stop, step, unique_id, reset_bool=0): counter = int(start) if mode == 'integer' else start if self.counters.__contains__(unique_id): counter = self.counters[unique_id] if round(reset_bool) >= 1: counter = start if mode == 'increment': counter += step elif mode == 'deccrement': counter -= step elif mode == 'increment_to_stop': counter = counter + step if counter < stop else counter elif mode == 'decrement_to_stop': counter = counter - step if counter > stop else counter self.counters[unique_id] = counter result = int(counter) if number_type == 'integer' else float(counter) return (result, float(counter), int(counter)) ```