Merge pull request #910 from argonui/playermat-moving
Added function for playermat moving / rotating
This commit is contained in:
commit
bcd5c76a9c
@ -1407,7 +1407,6 @@ function updateDownloadItemList(skipAuthorUpdate)
|
|||||||
-- if there's a filter, apply it (both for name and author)
|
-- if there's a filter, apply it (both for name and author)
|
||||||
if (searchFilter == nil or string.contains(string.lower(v.name), searchFilter)) and
|
if (searchFilter == nil or string.contains(string.lower(v.name), searchFilter)) and
|
||||||
(authorFilter == nil or v.author == authorFilter) then
|
(authorFilter == nil or v.author == authorFilter) then
|
||||||
|
|
||||||
-- start collecting authors unless skipping
|
-- start collecting authors unless skipping
|
||||||
if not skipAuthorUpdate then
|
if not skipAuthorUpdate then
|
||||||
table.insert(authorList, v.author)
|
table.insert(authorList, v.author)
|
||||||
@ -2755,3 +2754,9 @@ function removeDuplicatesAndSort(t)
|
|||||||
|
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- wrapper for 'easier' access to this function
|
||||||
|
-- Note: There's intentionally no proper UI or button etc. for this, since we don't fully support rotated mats
|
||||||
|
function moveAndRotatePlayermat(params)
|
||||||
|
playermatApi.moveAndRotate(params.matColor, params.position, params.rotationY)
|
||||||
|
end
|
||||||
|
@ -122,8 +122,8 @@ do
|
|||||||
PlayermatApi.getHelperSpawnData = function(matColor, helperName)
|
PlayermatApi.getHelperSpawnData = function(matColor, helperName)
|
||||||
local resultTable = {}
|
local resultTable = {}
|
||||||
local localPositionTable = {
|
local localPositionTable = {
|
||||||
["Hand Helper"] = Vector( -0.055, 0, -1.132 ),
|
["Hand Helper"] = Vector(-0.055, 0, -1.132),
|
||||||
["Search Assistant"] = Vector( -0.34, 0, -1.132 )
|
["Search Assistant"] = Vector(-0.34, 0, -1.132)
|
||||||
}
|
}
|
||||||
|
|
||||||
for color, mat in pairs(getMatForColor(matColor)) do
|
for color, mat in pairs(getMatForColor(matColor)) do
|
||||||
@ -345,5 +345,48 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- moves + rotates a playermat (and related objects)
|
||||||
|
---@param matColor string Color of the playermat - White, Orange, Green, Red or All
|
||||||
|
---@param position table New position for the playermat
|
||||||
|
---@param rotationY number New y-rotation for the playermat (X and Z will be 0)
|
||||||
|
PlayermatApi.moveAndRotate = function(matColor, position, rotationY)
|
||||||
|
-- get mat and related objects
|
||||||
|
local mat = guidReferenceApi.getObjectByOwnerAndType(matColor, "Playermat")
|
||||||
|
local matObjects = guidReferenceApi.getObjectsByOwner(matColor)
|
||||||
|
|
||||||
|
if not mat then return end
|
||||||
|
|
||||||
|
-- use current value if undefined
|
||||||
|
position = position or mat.getPosition()
|
||||||
|
rotationY = rotationY or mat.getRotation().y
|
||||||
|
|
||||||
|
-- store relative positions
|
||||||
|
local storedPositions = {}
|
||||||
|
for _, obj in pairs(matObjects) do
|
||||||
|
if obj ~= mat then
|
||||||
|
storedPositions[obj.getGUID()] = mat.positionToLocal(obj.getPosition())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- also get objects on the mat
|
||||||
|
local objectsOnMat = searchLib.onObject(mat)
|
||||||
|
for _, obj in ipairs(objectsOnMat) do
|
||||||
|
if obj ~= mat and storedPositions[obj.getGUID()] == nil and obj.interactable ~= false then
|
||||||
|
storedPositions[obj.getGUID()] = mat.positionToLocal(obj.getPosition())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- move main mat
|
||||||
|
mat.setPosition(position)
|
||||||
|
mat.setRotation({ 0, rotationY, 0 })
|
||||||
|
|
||||||
|
-- set new position + rotation (preserve object X / Z rotation)
|
||||||
|
for guid, pos in pairs(storedPositions) do
|
||||||
|
local obj = getObjectFromGUID(guid)
|
||||||
|
obj.setPosition(mat.positionToWorld(pos))
|
||||||
|
obj.setRotation(obj.getRotation():setAt("y", rotationY))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return PlayermatApi
|
return PlayermatApi
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user