I am currently working on a loaded ifc model that has some custom propeties. I have a search field and my goal is it that the user of my application can enter the custom designator into the field and the element will blink to be identified in the screen.
I managed to implement the search field and the identification of the element. This is the relevant search function:
function performSearchIfc() {
let searchInput = document.getElementById("uuidsearchinput").value;
let expressId = designatorToExpressId.get(searchInput);
let arrayOfParts = loadedFragmentsGroup.data.get(expressId)[0];
console.log(arrayOfParts);
for (let i = 0; i < arrayOfParts.length; i++) {
let partId = arrayOfParts[i];
let children = loadedFragmentsGroup.children;
let item = children.find(item => item.id === partId);
if (!item) {
console.log("Skipping item: " + partId);
continue;
}
console.log(item);
(async () => { //Something doesnt work with the colors - scale works
try {
let r = item.instanceColor.array[0] + 1 - 1;
let g = item.instanceColor.array[1] + 1 - 1;
let b = item.instanceColor.array[2] + 1 - 1;
let copyOfOrigColor = new Float32Array([r, g, b]);
let intenseGreen = new Float32Array([0, 1, 0]);
while (true) {
console.log("Setting color to " + intenseGreen);
item.instanceColor.set(intenseGreen);
item.scale.set(2.2, 2.2, 2.2);
await sleep(1000);
console.log("Setting color to " + copyOfOrigColor);
item.instanceColor.set(copyOfOrigColor);
item.scale.set(1, 1, 1);
await sleep(1000);
}
} catch (error) {
console.error(error);
}
})();
}
}
The funny thing is the behaviour of the blinking. My stuff works perfectly fine, the elements that belong to my identifier are found and are adressed perfectly. What works is that i change the scale of the objects, and the color is also set to the bright green. The outputs of the console are as expected:
However, for some reason, resetting the color back to the old color is not working. The elements just stay green.
Can anyone explain this?
EDIT:
Shortly after posting, I noticed that sometimes only parts become colored, then it looks like this:
So this coloring method seems to be unreliable altogether.