Notifications
Clear all
[Closed] makeUniqueArray for complex types?
Jan 12, 2011 7:45 am
I have an array/collection of materials, where I want to return a unique array by comparing only the material name, and nothing else. How do I do that? It’s current behavior is to see two materials called “Red” but different in specular value as unique, for example.
4 Replies
Jan 12, 2011 7:45 am
If the source array is not too big I would iterate through the array, putting materials from this array to another checking target array if it already contains the material.
fn alreadyHas matArray matIn=
(
found = false
for mat in matArray while (not found) do
if mat.name == matIn.name then found = true
return found
)
matArrayOut = #()
for mat in matArrayIn do
if (not alreadyHas matArrayOut mat) then (append matArrayOut mat)
Jan 12, 2011 7:45 am
fn getUniqueMatsByName mats =
(
local uniqueMatNames = #()
local uniqueMats = #()
for m in mats where findItem uniqueMatNames (m.name as name) == 0 do (
append uniqueMatNames (m.name as name)
append uniqueMats m
)
uniqueMats
)
Jan 12, 2011 7:45 am
fn getUniqueMatsByName mats =
(
local uniqueMatNames = #()
for m in mats collect (
if findItem uniqueMatNames (toLower m.name) == 0 then
(
append uniqueMatNames (toLower m.name)
m
)
else(dontcollect)
)
)
?
should be faster