1.0.0 • Published 3 years ago

@rbxts/wind-shake v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

WindShake

High performance wind effect for leaves and foliage

by boatbomber

I wanted to have massive forests full of moving leaves. Not for any project of mine, I just wanted to make it cuz it sounded like fun. So I did. And now you guys benefit!

This module handled 77,750+ leaf meshes while the game ran at over 400 FPS on my machine. It's pretty darn fast, all things considered.

Demo: https://www.youtube.com/watch?v=WdJr7k9Uqfw


Source:

GitHub:

https://github.com/boatbomber/WindShake

Library:

https://www.roblox.com/library/6377120469/WindShake

Uncopylocked Demo:

https://www.roblox.com/games/6342320514/Wind-Demo


API:

function WindShake:Init()

Initializes the wind shake logic and adds shake to all tagged objects

Returns:

  • void
function WindShake:Cleanup()

Halts and clears the wind shake logic and all object shakes

Returns:

  • void
function WindShake:Pause()

Halts the wind shake logic without clearing

Returns:

  • void
function WindShake:Resume()

Restarts the wind shake logic without clearing

Returns:

  • void
function WindShake:AddObjectShake(Object, Settings)

Adds an object to be shaken

Parameters:

  • Object BasePart The Object to apply shaking to

  • Settings Optional Dictionary The settings to apply to this object's shake (See below for Settings structure)

Returns:

  • void
function WindShake:RemoveObjectShake(Object)

Removes shake from an object

Parameters:

  • Object BasePart The Object to remove shaking from

Returns:

  • void
function WindShake:SetDefaultSettings(Settings) [DEPRECATED]

Deprecated in favor of setting the Attributes of the WindShake modulescript

Sets the default settings for future object shake additions

Parameters:

  • Settings Dictionary The settings to use as default (See below for Settings structure)

Returns:

  • void
function WindShake:UpdateObjectSettings(Object, Settings) [DEPRECATED]

Deprecated in favor of setting the Attributes of the Object

Updates the shake settings of an object already added

Parameters:

  • Object BasePart The Object to apply shake settings to

  • Settings Dictionary The settings to apply to this object's shake (See below for Settings structure)

Returns:

  • void
function WindShake:UpdateAllObjectSettings(Settings)

Updates the shake settings of all active shakes

Parameters:

  • Settings Dictionary The settings to apply to all objects' shake (See below for Settings structure)

Returns:

  • void
Settings

Settings tables are structured like so:

{
    WindDirection: Vector3 to shake towards (Initially 0.5,0,0.5)
    WindSpeed: Positive number that defines how fast to shake (Initially 20)
    WindPower: Positive number that defines how much to shake (Initially 0.5)
 
    --If one of these is not defined, it will use default for that one,
    --so you can pass a table with just one or two settings and the rest
    --will be default so you don't need to make the full table every time.
}

Usage Example:

local WIND_DIRECTION = Vector3.new(1,0,0.3)
local WIND_SPEED = 25
local WIND_POWER = 0.4

local WindShake = require(script.WindShake)

WindShake:SetDefaultSettings({
	WindSpeed = WIND_SPEED;
	WindDirection = WIND_DIRECTION;
	WindPower = WIND_POWER;
})

WindShake:Init() -- Anything with the WindShake tag will now shake