PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience
Collapse Sidebar

Workspace

Show deprecated

Workspace

Show deprecated

The Workspace is the service in which any objects that are to be rendered in the 3D world exist. Objects not descending from Workspace will not be rendered or physically interact with the world.

What does the Workspace do?

The core job of the Workspace is to hold objects that exist in the 3D world, BaseParts and Attachments. Whilst such objects are descendant of Workspace, they will be active. For BaseParts this means they will be rendered, and physically interact with other parts and the world. For Attachments this means objects adorned to them, such as ParticleEffects, Beams and BillboardGuis will render.

Understanding this behavior is important, as it means objects can be removed from the Workspace when they are not needed. For example, map Models can be removed from the Workspace when a different map is being played on. Objects that are not immediately needed in the Workspace are generally stored in ReplicatedStorage or ServerStorage.

In its role as the holder of active 3D objects, Workspace includes a number of useful functions related to parts, their positions and joints between them. Commonly used are the Workspace’s raycasting functions, such as Workspace/FindPartOnRay.

Accessing the Workspace

The Workspace can be accessed several ways, all of which are valid.

workspace -- a global variable
game.Workspace -- a property of the DataModel
game:GetService("Workspace") -- workspace is a service

Notes

  • Objects that require adornment, such as ParticleEmitters and BillboardGuis will be adorned to the 0, 0, 0 position when adorned to the Workspace (parented to it without an adornee otherwise being set)
  • The Model/MakeJoints and Model/BreakJoints functions inherited from the Model class are overridden by the Workspace’s own Workspace/MakeJoints and Workspace/BreakJoints functions, which can only be used in plugins
  • It is impossible to delete the Workspace
  • The Workspace will also clean up BaseParts that fall beneath Workspace/FallenPartsDestroyHeight
  • A client’s current Camera object can be accessed using the Workspace/CurrentCamera property
  • The Terrain object can be accessed using the Workspace/Terrain property

Properties

bool

AllowThirdPartySales

[NotReplicated]

Determines whether assets created by other uses can be sold in the game.

AutoJointsMode

AutoJointsMode

[NotScriptable]
Camera

CurrentCamera

[NotReplicated]

The Camera object being used by the local player.

double

DistributedGameTime

[NotReplicated]

The amount of time, in seconds, that the game has been running.

float

FallenPartsDestroyHeight

Sets the height at which falling BaseParts (and their ancestor Models) are destroyed.

bool

FilteringEnabled

Determines whether changes made from the client will replicate to the server or not.

float

Gravity

Determines the acceleration due to gravity applied to falling BaseParts.

bool

PGSPhysicsSolverEnabled

[NotReplicated] [NotScriptable]

Toggles whether or not the game will use the Projected Gauss-Seidel physics solver, or the legacy Spring physics engine.

bool

StreamingEnabled

[NotReplicated]

Whether network streaming is enabled for the place or not.

bool

TemporaryLegacyPhysicsSolverOverride

[NotReplicated] [NotScriptable]
Instance

Terrain

[ReadOnly] [NotReplicated]

A reference to the Terrain object parented to the Workspace.

Inherited from Model: Show Hide

BasePart

PrimaryPart

Points to the `Model`'s primary part. The part is the `BasePart` that is used as a basis when positioning the model using the `Model/MoveTo` and `Model/SetPrimaryPartCFrame` functions.

Inherited from Instance: Show Hide

int

DataCost

[ReadOnly] [NotReplicated]
The cost of saving the instance using data persistence.
Instance

Parent

Determines the hierarchical parent of the `Instance`.
bool

RobloxLocked

If true, the `Instance` and its descendants cannot be indexed or edited by a `Script` or `LocalScript` and will throw an error if it is attempted.
string

ClassName

[ReadOnly] [NotReplicated]
A read-only string representing the class this `Instance` belongs to.
string

Name

A non-unique identifier of the `Instance`.
bool

Archivable

Determines if an `Instance` can be cloned using `/Instance/Clone` or saved to file.

Functions

void

BreakJoints ( Objects objects )

Goes through all BaseParts given, breaking any joints connected to these parts.

bool

ExperimentalSolverIsEnabled ( )

Returns true if the game has the PGS Physics solver enabled.

Tuple

FindPartOnRay ( Ray ray , Instance ignoreDescendantsInstance , bool terrainCellsAreCubes , bool ignoreWater )

Returns the first BasePart intersecting with the given DataType/Ray.

Tuple

FindPartOnRayWithIgnoreList ( Ray ray , Objects ignoreDescendantsTable , bool terrainCellsAreCubes , bool ignoreWater )

Returns the first BasePart intersecting with the given DataType/Ray that isn’t in, or a descendant of an object in, the given ignore list.

Tuple

FindPartOnRayWithWhitelist ( Ray ray , Objects whitelistDescendantsTable , bool ignoreWater )

Returns the first BasePart intersecting with the given DataType/Ray that is in, or descendant of an object in, the given white-list.

Objects

FindPartsInRegion3 ( Region3 region , Instance ignoreDescendantsInstance , int maxParts )

Returns an array of BaseParts in the given DataType/Region3.

Objects

FindPartsInRegion3WithIgnoreList ( Region3 region , Objects ignoreDescendantsTable , int maxParts )

Returns an array of BaseParts in the given DataType/Region3 that aren’t in, or a descendant of an entry in, the given IgnoreList.

Objects

FindPartsInRegion3WithWhiteList ( Region3 region , Objects whitelistDescendantsTable , int maxParts )

Returns an array of BaseParts in the given DataType/Region3 that are in, or descendant of an object in, a given white list.

int

GetNumAwakeParts ( )

Returns the number of BaseParts that are deemed physically active, due to being recently under the influence of physics.

bool

GetPhysicsAnalyzerBreakOnIssue ( )

Returns true if the game has been paused due to over-constrained issues being detected by the Physics Analyzer.

Objects

GetPhysicsAnalyzerIssue ( int index )

Returns an array of BaseParts associated with a given physics over-constraint issue.

int

GetPhysicsThrottling ( )

Returns an integer, between 0 and 100, representing the percentage of real-time that physics simulation is currently being throttled to.

double

GetRealPhysicsFPS ( )

Returns the number of frames per second that physics is currently being simulated at.

bool

IsRegion3Empty ( Region3 region , Instance ignoreDescendentsInstance )

Returns a bool stating if no BaseParts are in the given DataType/Region3.

bool

IsRegion3EmptyWithIgnoreList ( Region3 region , Objects ignoreDescendentsTable )

Returns a bool stating if no BaseParts are in the given DataType/Region3, ignoring any BaseParts that are in, or descend from objects in, the ignore list given.

void

JoinToOutsiders ( Objects objects , JointCreationMode jointType )

Creates joints between the specified BaseParts and any touching parts depending on the BasePart's surfaces and the specified joint creation mode.

void

MakeJoints ( Objects objects )

Goes through all BaseParts given. If any part’s side has a Enum/SurfaceType that can make a joint it will create a joint with any adjacent parts.

bool

PGSIsEnabled ( )

Returns true if the game has the PGS Physics solver enabled.

void

SetPhysicsAnalyzerBreakOnIssue ( bool enable )

Sets whether or not the Physics Analyzer should continue to actively analyze the physics or not.

void

SetPhysicsThrottleEnabled ( bool value )

Sets whether physics throttling is enabled or disabled.

void

UnjoinFromOutsiders ( Objects objects )

Breaks all joints between the specified BaseParts and other BaseParts.

void

ZoomToExtents ( )

Positions and zooms the Workspace/CurrentCamera to show the extent of BaseParts currently in the Workspace.

Inherited from Model: Show Hide

void

TranslateBy ( Vector3 delta )

Shifts a `Model` by the given `Vector3` offset, preserving the `Model`'s orientation. If another `BasePart` or `Terrain` already exists at the new position then the `Model` will overlap said object.
void

SetPrimaryPartCFrame ( CFrame cframe )

Sets the `BasePart/CFrame` of the `Model`'s `Model/PrimaryPart`. All other parts in the model will also be moved and will maintain their orientation and offset respective to the `Model/PrimaryPart`. This function will throw an error if no `Model/PrimaryPart` exists for the model.
void

MoveTo ( Vector3 position )

Moves the `Model/PrimaryPart` to the given position. If a primary part has not been specified then the root part of the model will be used.
void

MakeJoints ( )

Goes through all `BasePart`s in the `Model`. If any part's side has a SurfaceType that can make a joint it will create a joint with any adjacent parts.
CFrame

GetPrimaryPartCFrame ( )

Returns the `CFrame` of the `Model`'s `Model/PrimaryPart`. This function will throw an error if no primary part exists for the `Model`.
Vector3

GetExtentsSize ( )

Returns the size of the smallest bounding box that contains all of the `BasePart`s in the `Model`, aligned with the `Model/PrimaryPart` if it is set.
void

BreakJoints ( )

Breaks connections between `BaseParts`, including surface connections with any adjacent parts, `WeldConstraint`s and all `Weld`s and other `JointInstance`s.

Inherited from Instance: Show Hide

RBXScriptSignal

GetPropertyChangedSignal ( string property )

Get an event that fires when a given property of an object changes.
Instance

FindFirstChildWhichIsA ( string className , bool recursive )

Returns the first child of the `Instance` for whom `Instance/IsA` returns true for the given className.
Array

GetDescendants ( )

[CustomLuaState]
Returns an array containing all of the `Instance`'s descendants.
bool

IsAncestorOf ( Instance descendant )

Returns true if an `Instance` is an ancestor of the given descendant.
bool

IsDescendantOf ( Instance ancestor )

Returns true if an `Instance` is a descendant of the given ancestor.
Instance

FindFirstChildOfClass ( string className )

Returns the first child of the `Instance` whose `Instance/ClassName|ClassName` is equal to the given className.
Instance

FindFirstChild ( string name , bool recursive )

Returns the first child of the `Instance` found with the given name.
Instance

FindFirstAncestorWhichIsA ( string className )

Returns the first ancestor of the `Instance` for whom `Instance/IsA` returns true for the given className.
Instance

FindFirstAncestorOfClass ( string className )

Returns the first ancestor of the `Instance` whose `Instance/ClassName` is equal to the given className.
Instance

FindFirstAncestor ( string name )

Returns the first ancestor of the `Instance` whose `Instance/Name` is equal to the given name.
bool

IsA ( string className )

Returns true if an `Instance`'s class matches or inherits from a given class
Instance

WaitForChild ( string childName , double timeOut )

[CustomLuaState] [CanYield]
Returns the child of the `Instance` with the given name. If the child does not exist, it will yield the current thread until it does.
string

GetFullName ( )

Returns a string showing the `Instance`'s ancestry.
string

GetDebugId ( int scopeLength )

[NotBrowsable]
Returns a coded string of the `Instance`s DebugId used internally by Roblox.
Objects

GetChildren ( )

Returns an array containing all of the `Instance`'s children.
void

Destroy ( )

Sets the `Instance/Parent` property to nil, locks the `Instance/Parent` property, disconnects all connections and calls Destroy on all children.
Instance

Clone ( )

Create a deep copy of a Roblox instance and descendants where `Archivable = true`.
void

ClearAllChildren ( )

This function destroys all of an `Instance`'s children.

Events

RBXScriptSignal

PhysicsAnalyzerIssuesFound ( int count )

This event is fired when over-constraint issues are found in the Physics Analyzer.

Inherited from Instance: Show Hide

RBXScriptSignal

DescendantRemoving ( Instance descendant )

Fires immediately before a descendant of the `Instance` is removed.
RBXScriptSignal

AncestryChanged ( Instance child , Instance parent )

Fires when the `Instance/Parent` property of the object or one of its ancestors is changed.
RBXScriptSignal

ChildAdded ( Instance child )

Fires when an object is parented to this `Instance`.
RBXScriptSignal

ChildRemoved ( Instance child )

Fires when a child is removed from this `Instance`.
RBXScriptSignal

DescendantAdded ( Instance descendant )

Fires when a descendant is added to the `Instance`.
RBXScriptSignal

Changed ( string property )

Fired immediately after a property of an object changes.