add gs
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
-- Head v1.2.0
|
||||
|
||||
local assetUrl, fileExtension, x, y, baseUrl, mannequinId = ...
|
||||
|
||||
local ThumbnailGenerator = game:GetService("ThumbnailGenerator")
|
||||
ThumbnailGenerator:AddProfilingCheckpoint("ThumbnailScriptStarted")
|
||||
|
||||
local DFFlagHeadThumbnailMannequins = settings():GetFFlag("HeadThumbnailMannequins")
|
||||
|
||||
-- Modules
|
||||
local CreateExtentsMinMax
|
||||
local MannequinUtility
|
||||
local ScaleUtility
|
||||
|
||||
if DFFlagHeadThumbnailMannequins then
|
||||
CreateExtentsMinMax = require(ThumbnailGenerator:GetThumbnailModule("CreateExtentsMinMax"))
|
||||
MannequinUtility = require(ThumbnailGenerator:GetThumbnailModule("MannequinUtility"))
|
||||
ScaleUtility = require(ThumbnailGenerator:GetThumbnailModule("ScaleUtility"))
|
||||
end
|
||||
|
||||
pcall(function() game:GetService("ContentProvider"):SetBaseUrl(baseUrl) end)
|
||||
game:GetService("ScriptContext").ScriptsDisabled = true
|
||||
game:GetService("UserInputService").MouseIconEnabled = false
|
||||
|
||||
local objects = game:GetObjects(assetUrl)
|
||||
ThumbnailGenerator:AddProfilingCheckpoint("ObjectsLoaded")
|
||||
|
||||
local headScaleType
|
||||
local mannequin
|
||||
|
||||
if DFFlagHeadThumbnailMannequins then
|
||||
headScaleType = ScaleUtility.GetObjectsScaleType(objects)
|
||||
mannequin = MannequinUtility.LoadMannequinForScaleType(headScaleType)
|
||||
else
|
||||
mannequin = game:GetObjects(baseUrl.. "/asset/?id=" .. tostring(mannequinId))[1]
|
||||
mannequin.Humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
|
||||
mannequin.Parent = workspace
|
||||
end
|
||||
|
||||
ThumbnailGenerator:AddProfilingCheckpoint("MannequinLoaded")
|
||||
|
||||
local function addFaceDecal(head)
|
||||
if head:FindFirstChild("face") then
|
||||
return
|
||||
end
|
||||
|
||||
local face = Instance.new("Decal")
|
||||
face.Name = "face"
|
||||
face.Texture = "rbxasset://textures/face.png"
|
||||
face.Parent = head
|
||||
end
|
||||
|
||||
local function replaceMannequinMeshPartHead(meshPartHead, meshHead)
|
||||
local newHead = Instance.new("Part")
|
||||
newHead.Size = meshPartHead.Size
|
||||
newHead.CFrame = meshPartHead.CFrame
|
||||
newHead.Color = meshPartHead.Color
|
||||
newHead.Name = "Head"
|
||||
|
||||
addFaceDecal(newHead)
|
||||
|
||||
local copiedAttachments = false
|
||||
for _, child in pairs(meshHead:GetChildren()) do
|
||||
if child:IsA("Vector3Value") and string.find(child.Name, "Attachment") then
|
||||
copiedAttachments = true
|
||||
|
||||
local newAttachment = Instance.new("Attachment")
|
||||
newAttachment.Name = child.Name
|
||||
newAttachment.Position = child.Value
|
||||
newAttachment.Parent = newHead
|
||||
end
|
||||
end
|
||||
|
||||
if not copiedAttachments then
|
||||
for _, child in pairs(meshPartHead:GetChildren()) do
|
||||
child.Parent = newHead
|
||||
end
|
||||
end
|
||||
|
||||
meshPartHead:Destroy()
|
||||
newHead.Parent = mannequin
|
||||
end
|
||||
|
||||
local function replaceMannequinHeadWithMeshHead()
|
||||
for _, obj in pairs(objects) do
|
||||
if obj:IsA("Folder") and obj.Name == "R15ArtistIntent" then
|
||||
local head = obj.Head
|
||||
addFaceDecal(head)
|
||||
mannequin.Head:Destroy()
|
||||
head.Parent = mannequin
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local headObject = objects[1]
|
||||
if headObject:IsA("Folder") then
|
||||
replaceMannequinHeadWithMeshHead()
|
||||
else
|
||||
if DFFlagHeadThumbnailMannequins then
|
||||
if mannequin.Head:IsA("MeshPart") then
|
||||
replaceMannequinMeshPartHead(mannequin.Head, headObject)
|
||||
end
|
||||
else
|
||||
mannequin.Head.BrickColor = BrickColor.Gray()
|
||||
end
|
||||
|
||||
if mannequin.Head:FindFirstChild("Mesh") then
|
||||
mannequin.Head.Mesh:Destroy()
|
||||
end
|
||||
headObject.Parent = mannequin.Head
|
||||
end
|
||||
|
||||
if DFFlagHeadThumbnailMannequins then
|
||||
-- Scale mannequin based on the scale type of the Head
|
||||
local humanoid = mannequin:FindFirstChild("Humanoid")
|
||||
if humanoid then
|
||||
ScaleUtility.CreateProportionScaleValues(humanoid, headScaleType)
|
||||
humanoid:BuildRigFromAttachments()
|
||||
end
|
||||
else
|
||||
for _, child in pairs(mannequin:GetChildren()) do
|
||||
if child:IsA("BasePart") and child.Name ~= "Head" then
|
||||
child:Destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local shouldCrop = false
|
||||
local extentsMinMax
|
||||
|
||||
if DFFlagHeadThumbnailMannequins then
|
||||
local focusParts = {
|
||||
mannequin:FindFirstChild("Head")
|
||||
}
|
||||
|
||||
shouldCrop = #focusParts > 0
|
||||
extentsMinMax = CreateExtentsMinMax(focusParts)
|
||||
end
|
||||
|
||||
local result, requestedUrls = ThumbnailGenerator:Click(fileExtension, x, y, --[[hideSky = ]] true, shouldCrop, extentsMinMax)
|
||||
ThumbnailGenerator:AddProfilingCheckpoint("ThumbnailGenerated")
|
||||
|
||||
return result, requestedUrls
|
||||
Reference in New Issue
Block a user