Skip to content
API

CoreMesh

CoreMesh is a CoreObject representing a mesh that can be placed in the scene. It is the parent type for both AnimatedMesh and StaticMesh.

Properties

Property Name Return Type Description Tags
team integer Assigns the mesh to a team. Value range from 0 to 4. 0 is neutral team. Read-Write
isTeamColorUsed boolean If true, and the mesh has been assigned to a valid team, players on that team will see a blue mesh, while other players will see red. Requires a material that supports the color property. Read-Write
isTeamCollisionEnabled boolean If false, and the mesh has been assigned to a valid team, players on that team will not collide with the mesh. Read-Write
isEnemyCollisionEnabled boolean If false, and the mesh has been assigned to a valid team, players on other teams will not collide with the mesh. Read-Write
isCameraCollisionEnabled boolean If false, the mesh will not push against the camera. Useful for things like railings or transparent walls. Read-Write
meshAssetId string The ID of the mesh asset used by this mesh. Read-Only

Functions

Function Name Return Type Description Tags
GetColor() Color Returns the color override previously set from script, or 0, 0, 0, 0 if no such color has been set. None
SetColor(Color) None Overrides the color of all materials on the mesh, and replicates the new colors. None
ResetColor() None Turns off the color override, if there is one. None

Examples

Example using:

GetColor

SetColor

ResetColor

You can set a color override for a mesh. Exactly what this means will depend on the material of the mesh, but in general, setting a mesh's color will make the mesh be tinted to match that color.

local cube = World.SpawnAsset(propCubeTemplate, {position = Vector3.New(1000, 0, 300) })

cube:SetColor(Color.WHITE)
for i = 1, 40 do
    local cubeColor = cube:GetColor()
    local newColor = Color.New(cubeColor.r * 0.95, cubeColor.g * 0.95, cubeColor.b * 0.95)
    cube:SetColor(newColor)
    Task.Wait(0.025)
end
cube:ResetColor()

See also: World.SpawnAsset | Vector3.New | Color.WHITE | Task.Wait


Example using:

meshAssetId

You can check the asset ID of a static mesh. This will be the MUID of the Core Content object it was created from!

local cube = World.SpawnAsset(propCubeTemplate, {position = Vector3.New(1000, 0, 300) })
print("The asset ID is " .. cube.meshAssetId)

See also: World.SpawnAsset | Vector3.New | CoreLua.print


Example using:

team

isTeamColorUsed

isTeamCollisionEnabled

isEnemyCollisionEnabled

isCameraCollisionEnabled

You can set a mesh to belong to a particular "team". These match the teams that players can be set to. (0-4) There are also several properties that are keyed to what team an object is on.

This sample sets a mesh (and all of its children) to be on a particular team.

You can also control whether the camera is allowed to clip into a mesh or not.

function AssignMeshToTeam(mesh, team)
    local objects = mesh:FindDescendantsByType("CoreMesh")
    table.insert(objects, mesh)
    for k, mesh in ipairs(objects) do
        -- Set the team
        mesh.team = team
        -- Make the mesh tinted based on the color of the team it is on.
        mesh.isTeamColorUsed = true
        -- Enable collision for enemies, but not allies.
        mesh.isTeamCollisionEnabled = false
        mesh.isEnemyCollisionEnabled = true
        -- Set the camera to not collide with this mesh.
        mesh.isCameraCollisionEnabled = false
    end
end
AssignMeshToTeam(cube, 1)

See also: CoreObject.FindDescendantsByType



Last update: March 1, 2021