myspace / Lua /Dev /ArtDebug.lua
sirnii's picture
Upload 1816 files
b6a38d7 verified
raw
history blame
1.96 kB
function GetEntityMeshesMaterialsWithoutSSS(entity, required)
local state_idx_name = {}
for state_name, state_idx in pairs(EntityStates) do
state_idx_name[state_idx] = state_name
end
local meshes_no_SSS, material_marked = {}, {}
local mesh_states_map, mesh_lod_map = GetEntityMaterialsMap(entity)
for mesh_name, mesh_states in pairs(mesh_states_map) do
local lod = mesh_lod_map[mesh_name]
for _, state_idx in ipairs(mesh_states) do
local state_name = state_idx_name[state_idx]
local material = GetStateMaterial(entity, state_name, lod)
if material and not material_marked[material] then
local num_sub_mtls = GetNumSubMaterials(material)
local any, all = false, true
for i = 1, num_sub_mtls do
local mat_props = GetMaterialProperties(material, i - 1)
if mat_props.SSS == 0 then
all = false
else
any = true
end
end
if required == "all" then
if not all then
table.insert(meshes_no_SSS, material)
material_marked[material] = true
end
else--if required == "any" then
if not any then
table.insert(meshes_no_SSS, material)
material_marked[material] = true
end
end
end
end
end
return next(meshes_no_SSS) and meshes_no_SSS
end
function GetHeadsTopsWithoutSSS()
local classes = table.union(ClassDescendantsList("CharacterHead"), ClassDescendantsList("CharacterBody"))
local entities = {}
for _, class_name in ipairs(classes) do
local class = g_Classes[class_name]
local entity = class:GetEntity() or class.entity
if IsValidEntity(entity) then
table.insert(entities, entity)
end
end
local meshes_no_SSS = {}
for _, entity in ipairs(entities) do
local meshes = GetEntityMeshesMaterialsWithoutSSS(entity, "any")
if meshes then
table.iappend(meshes_no_SSS, meshes)
end
end
table.sort(meshes_no_SSS)
print(string.format("Meshes with materials without SSS: %d", #meshes_no_SSS))
return meshes_no_SSS
end