Kinemium Docs

FluidSimulation

Simulates and renders a deforming water surface with flow, drains, and buoyancy.

Properties

PropertyTypeDefault
Namestring"FluidSimulation"
PositionVector3Vector3.new(0, 0, 0)
SizeVector3Vector3.new(20, 4, 20)
SimResolutionnumber16
FlowRatenumber0.7
WaterLevelnumber0.5
Containedbooleantrue
VisResolutionnumber32
WaveHeightnumber0.12
WaveSpeednumber0.9
WaveScalenumber0.45
WaveDirectionVector2Vector2.new(1, 0.5)
ColorColor3Color3.new(0.05, 0.35, 0.72)
Roughnessnumber0.07
Transparencynumber0.42
FlowDirectionVector2Vector2.new(0, 0)
FlowSpeednumber0.0
PhysicsEnabledbooleantrue
BuoyancyFactornumber25.0
Dampeningnumber0.55
Containeranynil
FitContainerbooleanfalse
FillLevelnumber0.85
Enabledbooleantrue

Functions


readPtr64

Arguments

buf: buffer, offset: number

Returns

This function returns nothing.

ptrFromStructField

Arguments

structBuf: buffer, fieldOff: number

Returns

This function returns nothing.

normalize3

Arguments

x: number, y: number, z: number

Returns

This function returns nothing.

makeF32Buf

Arguments

v: number

Returns

This function returns nothing.

makeVec2Buf

Arguments

x: number, y: number

Returns

This function returns nothing.

waveDisplacement

Arguments

x: number, z: number, t: number, waves: { any }

Returns

This function returns nothing.

waveNormal

Arguments

x: number, z: number, t: number, waves: { any }

Returns

This function returns nothing.

ensureOffsets

Arguments

This function takes no arguments.

Returns

This function returns nothing.

simIndex

Arguments

x: number, z: number

Returns

This function returns nothing.

initGrid

Arguments

This function takes no arguments.

Returns

This function returns nothing.

sampleGrid

Arguments

lx: number, lz: number

Returns

This function returns nothing.

worldToNorm

Arguments

wx: number, wz: number

Returns

This function returns nothing.

surfaceYAt

Arguments

wx: number, wz: number, t: number?

Returns

This function returns nothing.

totalWater

Arguments

This function takes no arguments.

Returns

This function returns nothing.

stepSimulation

Arguments

dt: number

Returns

This function returns nothing.

updateDrains

Arguments

dt: number

Returns

This function returns nothing.

buildWaveConfig

Arguments

This function takes no arguments.

Returns

This function returns nothing.

buildGrid_vis

Arguments

posX, posZ, halfW, halfL, resX, resZ

Returns

This function returns nothing.

buildIndices_vis

Arguments

resX, resZ

Returns

This function returns nothing.

createMaterial

Arguments

This function takes no arguments.

Returns

This function returns nothing.

buildMesh

Arguments

This function takes no arguments.

Returns

This function returns nothing.

updateMeshVerts

Arguments

t: number

Returns

This function returns nothing.

syncShaderUniforms

Arguments

This function takes no arguments.

Returns

This function returns nothing.

syncToContainer

Arguments

This function takes no arguments.

Returns

This function returns nothing.

runBuoyancy

Arguments

dt: number

Returns

This function returns nothing.

instance:SetWaterLevel

Sets every simulation cell to a fill level from 0 to 1.

Arguments

level: number

Returns

This function returns nothing.

instance:GetWaterLevel

Returns the current average fill level from 0 to 1.

Arguments

This function takes no arguments.

Returns

number

instance:AddWater

Adds water uniformly across the simulation surface.

Arguments

amount: number

Returns

This function returns nothing.

instance:RemoveWater

Removes water uniformly across the simulation surface.

Arguments

amount: number

Returns

This function returns nothing.

instance:AddWaterAt

Adds water to the simulation cell nearest a world-space XZ position.

Arguments

worldX: number, worldZ: number, amount: number

Returns

This function returns nothing.

instance:RemoveWaterAt

Removes water from the simulation cell nearest a world-space XZ position and returns the amount removed.

Arguments

worldX: number, worldZ: number, amount: number

Returns

number

instance:GetWaterHeight

Returns the water surface Y position at a world-space XZ position.

Arguments

worldX: number, worldZ: number

Returns

number

instance:IsPointSubmerged

Returns whether a world-space point is inside the current water volume.

Arguments

worldPos: Vector3

Returns

boolean

instance:GetSubmergedFraction

Returns how much of a part's height is submerged, from 0 to 1.

Arguments

part: any

Returns

number

instance:ConnectTo

Connects this simulation to another so water can flow through a drain point.

Arguments

targetSim: any, worldX: number, worldZ: number, thresholdH: number?, flowMult: number?

Returns

This function returns nothing.

instance:Disconnect

Removes all drain connections from this simulation to a target simulation.

Arguments

targetSim: any

Returns

This function returns nothing.

instance:Rebuild

Rebuilds the render mesh and resets the simulation grid when already initialized.

Arguments

This function takes no arguments.

Returns

This function returns nothing.

avgWater

Arguments

This function takes no arguments.

Returns

This function returns nothing.

addWaterUniform

Arguments

amount: number

Returns

This function returns nothing.

API

instance:readPtr64(buf: buffer, offset: number)
instance:ptrFromStructField(structBuf: buffer, fieldOff: number)
instance:normalize3(x: number, y: number, z: number)
instance:makeF32Buf(v: number)
instance:makeVec2Buf(x: number, y: number)
instance:waveDisplacement(x: number, z: number, t: number, waves: { any })
instance:waveNormal(x: number, z: number, t: number, waves: { any })
instance:ensureOffsets()
instance:simIndex(x: number, z: number)
instance:initGrid()
instance:sampleGrid(lx: number, lz: number)
instance:worldToNorm(wx: number, wz: number)
instance:surfaceYAt(wx: number, wz: number, t: number?)
instance:totalWater()
instance:stepSimulation(dt: number)
instance:updateDrains(dt: number)
instance:buildWaveConfig()
instance:buildGrid_vis(posX, posZ, halfW, halfL, resX, resZ)
instance:buildIndices_vis(resX, resZ)
instance:createMaterial()
instance:buildMesh()
instance:updateMeshVerts(t: number)
instance:syncShaderUniforms()
instance:syncToContainer()
instance:runBuoyancy(dt: number)
instance:SetWaterLevel(level: number)
instance:GetWaterLevel(): number
instance:AddWater(amount: number)
instance:RemoveWater(amount: number)
instance:AddWaterAt(worldX: number, worldZ: number, amount: number)
instance:RemoveWaterAt(worldX: number, worldZ: number, amount: number): number
instance:GetWaterHeight(worldX: number, worldZ: number): number
instance:IsPointSubmerged(worldPos: Vector3): boolean
instance:GetSubmergedFraction(part: any): number
instance:ConnectTo(targetSim: any, worldX: number, worldZ: number, thresholdH: number?, flowMult: number?)
instance:Disconnect(targetSim: any)
instance:Rebuild()
instance:avgWater()
instance:addWaterUniform(amount: number)

On this page