# fluids

## Vars | |

currently_processing | The set of fluid nodes we are currently processing effects for. |
---|---|

currently_spreading | The set of fluid nodes we are currently processing spreading for. |

effect_bucket_index | The index of the currently processing bucket on the effect carousel. |

effect_carousel | The set of buckets containing fluid nodes to process effects for. |

effect_wait | The amount of time (in deciseconds) between effect processing ticks for each fluid node. |

num_effect_buckets | The number of buckets in the effect carousel. |

num_spread_buckets | The number of buckets in the spread carousel. |

spread_bucket_index | The index of the spread carousel bucket currently being processed. |

spread_carousel | The set of buckets containing fluid nodes to spread. |

spread_wait | The amount of time (in deciseconds) before a fluid node is created and when it spreads. |

## Procs | |

cancel_spread | Cancels a queued spread of a fluid node. |

initialize_effect_carousel | Initializes the carousel used to process fluid effects. |

initialize_spread_carousel | Initializes the carousel used to process fluid spreading. |

initialize_waits | Initializes the subsystem waits. |

queue_spread | Queues a fluid node to spread later after one full carousel rotation. |

start_processing | Starts processing the effects of a fluid node. |

stop_processing | Stops processing the effects of a fluid node. |

## Var Details

### currently_processing

The set of fluid nodes we are currently processing effects for.

### currently_spreading

The set of fluid nodes we are currently processing spreading for.

### effect_bucket_index

The index of the currently processing bucket on the effect carousel.

### effect_carousel

The set of buckets containing fluid nodes to process effects for.

### effect_wait

The amount of time (in deciseconds) between effect processing ticks for each fluid node.

### num_effect_buckets

The number of buckets in the effect carousel.

### num_spread_buckets

The number of buckets in the spread carousel.

### spread_bucket_index

The index of the spread carousel bucket currently being processed.

### spread_carousel

The set of buckets containing fluid nodes to spread.

### spread_wait

The amount of time (in deciseconds) before a fluid node is created and when it spreads.

## Proc Details

### cancel_spread

Cancels a queued spread of a fluid node.

Arguments:

- node: The node to cancel the spread of.

### initialize_effect_carousel

Initializes the carousel used to process fluid effects.

Synchronizes the spread delta time with the actual target spread tick rate. Builds the carousel buckets used to bubble processing.

### initialize_spread_carousel

Initializes the carousel used to process fluid spreading.

Synchronizes the spread delta time with the actual target spread tick rate. Builds the carousel buckets used to queue spreads.

### initialize_waits

Initializes the subsystem waits.

Ensures that the subsystem's fire wait evenly splits the spread and effect waits.

### queue_spread

Queues a fluid node to spread later after one full carousel rotation.

Arguments:

- node: The node to queue to spread.

### start_processing

Starts processing the effects of a fluid node.

The fluid node will next process after one full bucket rotation.

Arguments:

- node: The node to start processing.

### stop_processing

Stops processing the effects of a fluid node.

Arguments:

- node: The node to stop processing.