Skip to content

FirstVertex/rbxts-scale-model

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@rbxts/scale-model

Scale/resize Models and Parts and all Descendants

Version 2.0 adds non-uniform scaling by number, Vector2, or Vector3

Currently scaling the following types and properties:

  • Model (Size, Position)
  • BasePart (Size, Position)
  • Attachment (Position) (and thus connected Constraints, e.g. Welds and Joints)
  • SpecialMesh (Scale)
  • Fire (Size)
  • Texture (U/V)
  • ParticleEmitter (Size: NumberSequence)
  • Explosion (Position, BlastPressure, BlastRadius)
  • PointLight (Range)
  • Vector3 (Scale, Scale about Point)
  • Tool (All Descendants, using Handle as reference)
  • Joint (Thanks to @RRainmaker)
  • Instances (generic catch-all for e.g. a Folder)

Usage

  1. Install npm package
npm i @rbxts/scale-model
  1. Import scaleModel, scalePart, scaleExplosion, scaleTool, or scaleInstances
import { scaleModel, scalePart, scaleExplosion, scaleTool, scaleInstances } from '@rbxts/scale-model';
  1. Pass a Model, Part, Explosion, Tool, or array of Instances with a scale factor. Scale factor > 1 is bigger, < 1 is smaller
scaleModel(myModel, 1.5);   // All descendants of myModel to 150% size

scalePart(myPart, new Vector3(0.5, 2, 0.5);     // myPart and all descendants to 50% size on XZ and 200% size on Y (tall + skinny)

scaleExplosion(myExplosion, 10);     // myExplosion to 1000% size

scaleTool(myTool, 0.8);     // myTool to 80% size

scaleInstances(myFolder, 0.5, new Vector3(0,0,0));     // all instances in myFolder to 50% size

We need this special api for scaleExplosion since we need to scale it before it is parented.

Custom Scaling Center

You can optionally provide a custom center point in the 3rd parameter, instead of using the Model's PrimaryPart's Position, or the Part's Position.

The scaling of a Model can fail if attempted on a Model that doesn't have a PrimaryPart defined, and no custom center is provided. In that case, a message will be printed in the output.

The scaling of a Tool can fail if attempted on a Tool that doesn't have a Handle defined, and no custom center is provided. In that case, a message will be printed in the output.

Did I miss your favorite Descendant?

Pull Requests are welcome if there's something I missed. Or, open an Issue.

Command-line usage

The compiled modulescript is available in the Roblox Library with asset id 8238368335 Open the Command Bar in Roblox studio and require the modulescript to use it

require(8238368335).scaleModel(game.Workspace.TestModel, 4, Enum.NormalId.Bottom)

Roblox-TS

Part of the ever-growing Roblox-TS community.

Roblox

Friend me on Roblox, my Avatar is FirstVertex.

✌️

About

Scale Models and Parts and all Descendants Uniformly

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published