viral-viewer-2 6.9.2 → 6.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{batched-mesh-simplifier-X1OOBfUy.mjs → batched-mesh-simplifier-DoxZq511.mjs} +1 -1
- package/dist/components/custom-objects/viral-batched-mesh.d.ts +120 -16
- package/dist/components/custom-objects/viral-instanced-mesh-v2.d.ts +113 -1
- package/dist/components/custom-objects/viral-merged-model.d.ts +35 -0
- package/dist/components/data-manager/viral-data-manager.d.ts +3 -1
- package/dist/components/event-handler/viral-centralized-event-handler.d.ts +1 -0
- package/dist/components/loader/viral-revit.loader.d.ts +7 -1
- package/dist/components/visibility-manager/viral-visibility-manager.d.ts +48 -0
- package/dist/components/worker/load-element-batch.worker.d.ts +13 -2
- package/dist/{index-DFLlwciS.mjs → index-0hJmUXew.mjs} +7372 -6536
- package/dist/index.mjs +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as S, a as V, V as Z } from "./index-
|
|
1
|
+
import { B as S, a as V, V as Z } from "./index-0hJmUXew.mjs";
|
|
2
2
|
(function() {
|
|
3
3
|
var s = "b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiE8AdilveoveovrrwrrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:PlCo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxY9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVJ9V29VVbmE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9WbHa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbOK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbAl79IV9RbXDwebcekdKYq;i28Adbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:xjjjb8AdnaiTmbarc;adfadalz:wjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:xjjjb8Aarc;abfarc;adfalz:wjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:xjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:wjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:xjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:xjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:xjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:wjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:xjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:wjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:xjjjbawfhokaoarc;adfalz:wjjjbalfhodnaDTmbaoaraez:wjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:xjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk:Ylvdud99due99iudnaeTmbceaicufgvthocuaitcu7:Zhrcuavtcu7:Zhwcbhvadcl9hhDcbhqindndnalcwfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikdndnalIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohdxekcjjjj94hdkadai9Rcd9TgxaifhidndnalclfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohdxekcjjjj94hdkadai9Rcd9ThddndnalcxfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEawNJbbbZMgk:lJbbb9p9DTmbak:Ohmxekcjjjj94hmkadaifhiaoamVhmdndnaDmbabavfgPai86bbaPcifam86bbaPcdfad86bbaPcefax86bbxekabaqfgPai87ebaPcofam87ebaPclfad87ebaPcdfax87ebkalczfhlavclfhvaqcwfhqaecufgembkkk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:xjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;q:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:wjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:pjjjbavyd:GehDadci9Ugqcbyd;q:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:xjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;q:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;q:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;u:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;q:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;q:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;q:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:xjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:ojjjbkQbabaeadaic;m:jjjbz:ojjjbk9DeeuabcFeaicdtz:xjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:xjjjb8AalcuadcitgoadcFFFFe0Ecbyd;q:kjjbHjjjjbbgrBdxalceBd2araeadaicezNjjjbalcuaoadcjjjjoGEcbyd;q:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:xjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;u:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb", D = new Uint8Array([
|
|
4
4
|
32,
|
|
@@ -73,6 +73,22 @@ export declare class ViralBatchedMesh extends Mesh {
|
|
|
73
73
|
modelId: string;
|
|
74
74
|
elementId: string;
|
|
75
75
|
}[];
|
|
76
|
+
protected _hidingElements: {
|
|
77
|
+
modelId: string;
|
|
78
|
+
elementId: string;
|
|
79
|
+
}[];
|
|
80
|
+
protected _isolatingElements: {
|
|
81
|
+
modelId: string;
|
|
82
|
+
elementId: string;
|
|
83
|
+
}[];
|
|
84
|
+
private _hiddenSet;
|
|
85
|
+
private _isolatedSet;
|
|
86
|
+
private _elementOpacityMap;
|
|
87
|
+
private _isRGBAMode;
|
|
88
|
+
private _elementOriginalColors;
|
|
89
|
+
/**
|
|
90
|
+
* Select elements (highlights them with accent color)
|
|
91
|
+
*/
|
|
76
92
|
select(elements: {
|
|
77
93
|
modelId: string;
|
|
78
94
|
elementId: string;
|
|
@@ -87,18 +103,26 @@ export declare class ViralBatchedMesh extends Mesh {
|
|
|
87
103
|
b: number;
|
|
88
104
|
};
|
|
89
105
|
}[]): void;
|
|
90
|
-
|
|
106
|
+
get selectedElements(): {
|
|
91
107
|
modelId: string;
|
|
92
108
|
elementId: string;
|
|
93
109
|
}[];
|
|
110
|
+
/**
|
|
111
|
+
* Hide elements by setting their alpha to 0 (GPU-accelerated)
|
|
112
|
+
* Hidden elements are discarded in fragment shader - no rendering cost
|
|
113
|
+
*
|
|
114
|
+
* @param elements - Elements to hide (defaults to selected elements)
|
|
115
|
+
*/
|
|
94
116
|
hide(elements?: {
|
|
95
117
|
modelId: string;
|
|
96
118
|
elementId: string;
|
|
97
119
|
}[]): void;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Isolate elements - show ONLY these elements, hide everything else
|
|
122
|
+
*
|
|
123
|
+
* @param elements - Elements to isolate (defaults to selected elements)
|
|
124
|
+
* @returns The isolated elements
|
|
125
|
+
*/
|
|
102
126
|
isolate(elements?: {
|
|
103
127
|
modelId: string;
|
|
104
128
|
elementId: string;
|
|
@@ -106,28 +130,107 @@ export declare class ViralBatchedMesh extends Mesh {
|
|
|
106
130
|
modelId: string;
|
|
107
131
|
elementId: string;
|
|
108
132
|
}[];
|
|
109
|
-
get selectedElements(): {
|
|
110
|
-
modelId: string;
|
|
111
|
-
elementId: string;
|
|
112
|
-
}[];
|
|
113
133
|
/**
|
|
114
|
-
* Isolate
|
|
115
|
-
* @param modelIds
|
|
134
|
+
* Isolate entire models
|
|
135
|
+
* @param modelIds - Model IDs to isolate
|
|
116
136
|
*/
|
|
117
137
|
isolateModel(modelIds: string[]): void;
|
|
118
138
|
/**
|
|
119
|
-
*
|
|
139
|
+
* Show a previously hidden element
|
|
140
|
+
* @param elements - Elements to show
|
|
141
|
+
*/
|
|
142
|
+
show(elements: {
|
|
143
|
+
modelId: string;
|
|
144
|
+
elementId: string;
|
|
145
|
+
}[]): void;
|
|
146
|
+
/**
|
|
147
|
+
* Reset all visibility - show everything
|
|
120
148
|
*/
|
|
121
149
|
reset(): void;
|
|
122
|
-
|
|
123
|
-
|
|
150
|
+
/**
|
|
151
|
+
* Check if an element is currently visible
|
|
152
|
+
*/
|
|
153
|
+
isElementVisible(modelId: string, elementId: string): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Set opacity for specific elements (0.0 = invisible, 1.0 = fully opaque)
|
|
156
|
+
* Uses custom shader's per-vertex alpha support
|
|
157
|
+
*
|
|
158
|
+
* @param elements - Elements to modify
|
|
159
|
+
* @param opacity - Opacity value (0.0 to 1.0)
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* // Semi-transparent (ghost mode)
|
|
164
|
+
* mesh.setElementOpacity([{ modelId: "0", elementId: "abc" }], 0.3);
|
|
165
|
+
*
|
|
166
|
+
* // Fully hidden but still raycastable
|
|
167
|
+
* mesh.setElementOpacity([{ modelId: "0", elementId: "abc" }], 0.0);
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
setElementOpacity(elements: {
|
|
171
|
+
modelId: string;
|
|
172
|
+
elementId: string;
|
|
173
|
+
}[], opacity: number): void;
|
|
174
|
+
/**
|
|
175
|
+
* Get the current opacity of an element
|
|
176
|
+
*/
|
|
177
|
+
getElementOpacity(modelId: string, elementId: string): number;
|
|
178
|
+
/**
|
|
179
|
+
* Ghost mode - semi-transparent with optional desaturation
|
|
180
|
+
* Perfect for showing context while highlighting other elements
|
|
181
|
+
*
|
|
182
|
+
* @param elements - Elements to ghost
|
|
183
|
+
* @param ghostOpacity - Opacity for ghost mode (default: 0.15)
|
|
184
|
+
* @param desaturate - Whether to desaturate color (default: true)
|
|
185
|
+
*/
|
|
186
|
+
setElementGhost(elements: {
|
|
187
|
+
modelId: string;
|
|
188
|
+
elementId: string;
|
|
189
|
+
}[], ghostOpacity?: number, desaturate?: boolean): void;
|
|
190
|
+
/**
|
|
191
|
+
* Ghost all elements EXCEPT the specified ones
|
|
192
|
+
* Focused elements remain fully opaque, everything else becomes ghosted
|
|
193
|
+
*
|
|
194
|
+
* @param focusElements - Elements to keep fully visible
|
|
195
|
+
* @param ghostOpacity - Opacity for non-focused elements (default: 0.1)
|
|
196
|
+
*/
|
|
197
|
+
ghostExcept(focusElements: {
|
|
198
|
+
modelId: string;
|
|
199
|
+
elementId: string;
|
|
200
|
+
}[], ghostOpacity?: number): void;
|
|
201
|
+
/**
|
|
202
|
+
* Reset all element opacities to fully opaque and restore original colors
|
|
203
|
+
*/
|
|
204
|
+
resetElementOpacity(): void;
|
|
205
|
+
/**
|
|
206
|
+
* Check if any element has semi-transparent opacity
|
|
207
|
+
*/
|
|
208
|
+
hasTransparentElements(): boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Check if MOST elements are transparent (for deciding depth write strategy)
|
|
211
|
+
* Returns true if more than 50% of elements have transparency
|
|
212
|
+
*/
|
|
213
|
+
private _isMostlyTransparent;
|
|
214
|
+
/**
|
|
215
|
+
* 🔧 Update material depth write based on transparency state
|
|
216
|
+
* When MOST elements are semi-transparent, disable depth write to fix see-through issues
|
|
217
|
+
* Also respects originally transparent materials (windows, glass)
|
|
218
|
+
*/
|
|
219
|
+
private _updateDepthWriteForTransparency;
|
|
220
|
+
/**
|
|
221
|
+
* 🔧 INTERNAL: Update alpha values based on visibility state
|
|
222
|
+
* This is the core method that applies hide/isolate states to the GPU buffer
|
|
223
|
+
*/
|
|
224
|
+
private _updateAlphaVisibility;
|
|
124
225
|
findElementByFaceIndex(faceIndex: number): {
|
|
125
226
|
modelId: string;
|
|
126
227
|
elementId: string;
|
|
127
228
|
} | null;
|
|
128
229
|
/**
|
|
129
230
|
* Changes the color of multiple elements in the merged mesh.
|
|
130
|
-
*
|
|
231
|
+
* Works with RGBA color buffer (preserves existing alpha values)
|
|
232
|
+
* @param elements - An array of elements, each containing `modelId` and `elementId`.
|
|
233
|
+
* @param color - The new RGB color to apply
|
|
131
234
|
*/
|
|
132
235
|
changeColor(elements: {
|
|
133
236
|
modelId: string;
|
|
@@ -142,9 +245,10 @@ export declare class ViralBatchedMesh extends Mesh {
|
|
|
142
245
|
*/
|
|
143
246
|
/**
|
|
144
247
|
* Resets the color of an element back to the original color or the entire mesh if no element is specified.
|
|
248
|
+
* Works with RGBA color buffer (preserves existing alpha values)
|
|
145
249
|
* @param modelId - The model ID to reset. Pass `null` to reset the entire mesh.
|
|
146
250
|
* @param elementId - The element ID to reset. Ignored if `modelId` is `null`.
|
|
147
|
-
* @param excepts -
|
|
251
|
+
* @param excepts - Elements that should receive a different color instead of original
|
|
148
252
|
*/
|
|
149
253
|
resetColor(modelId: string | null, elementId?: string, excepts?: {
|
|
150
254
|
elements: {
|
|
@@ -14,6 +14,7 @@ export declare class ViralInstancedMeshV2 extends Object3D {
|
|
|
14
14
|
instancedMesh: InstancedMesh;
|
|
15
15
|
}[]>>;
|
|
16
16
|
private _originalTransforms;
|
|
17
|
+
private _elementOpacity;
|
|
17
18
|
private _selectedElements;
|
|
18
19
|
private _hidingElements;
|
|
19
20
|
protected _isolatingElements: {
|
|
@@ -70,10 +71,26 @@ export declare class ViralInstancedMeshV2 extends Object3D {
|
|
|
70
71
|
modelId: string;
|
|
71
72
|
elementId: string;
|
|
72
73
|
}[];
|
|
74
|
+
private _hiddenSet;
|
|
75
|
+
private _isolatedSet;
|
|
76
|
+
private static readonly ZERO_MATRIX;
|
|
77
|
+
/**
|
|
78
|
+
* Hide elements by setting their transform scale to 0
|
|
79
|
+
* Zero-scaled instances are automatically culled by GPU - maximum performance
|
|
80
|
+
*
|
|
81
|
+
* @param elements - Elements to hide (defaults to selected elements)
|
|
82
|
+
*/
|
|
73
83
|
hide(elements?: {
|
|
74
84
|
modelId: string;
|
|
75
85
|
elementId: string;
|
|
76
86
|
}[]): void;
|
|
87
|
+
/**
|
|
88
|
+
* Isolate elements - show ONLY these elements, hide everything else
|
|
89
|
+
* Uses batch matrix update for best performance
|
|
90
|
+
*
|
|
91
|
+
* @param elements - Elements to isolate (defaults to selected elements)
|
|
92
|
+
* @returns The isolated elements
|
|
93
|
+
*/
|
|
77
94
|
isolate(elements?: {
|
|
78
95
|
modelId: string;
|
|
79
96
|
elementId: string;
|
|
@@ -81,9 +98,104 @@ export declare class ViralInstancedMeshV2 extends Object3D {
|
|
|
81
98
|
modelId: string;
|
|
82
99
|
elementId: string;
|
|
83
100
|
}[];
|
|
101
|
+
/**
|
|
102
|
+
* Isolate entire models
|
|
103
|
+
* @param modelIds - Model IDs to isolate
|
|
104
|
+
*/
|
|
84
105
|
isolateModel(modelIds: string[]): void;
|
|
106
|
+
/**
|
|
107
|
+
* Show a previously hidden element
|
|
108
|
+
* @param elements - Elements to show
|
|
109
|
+
*/
|
|
110
|
+
show(elements: {
|
|
111
|
+
modelId: string;
|
|
112
|
+
elementId: string;
|
|
113
|
+
}[]): void;
|
|
114
|
+
/**
|
|
115
|
+
* Reset all visibility - show everything
|
|
116
|
+
*/
|
|
85
117
|
reset(): void;
|
|
86
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Check if an element is currently visible
|
|
120
|
+
*/
|
|
121
|
+
isElementVisible(modelId: string, elementId: string): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Inject per-instance opacity shader into material
|
|
124
|
+
* Must be called after material is set and before rendering
|
|
125
|
+
*/
|
|
126
|
+
injectOpacityShader(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Ensure all instanced meshes have opacity attribute
|
|
129
|
+
*/
|
|
130
|
+
private _ensureOpacityAttributes;
|
|
131
|
+
/**
|
|
132
|
+
* Update opacity for specific instances
|
|
133
|
+
*/
|
|
134
|
+
private _updateInstanceOpacity;
|
|
135
|
+
/**
|
|
136
|
+
* Set opacity for specific elements
|
|
137
|
+
* @param elements - Elements to set opacity for
|
|
138
|
+
* @param opacity - Opacity value (0-1)
|
|
139
|
+
*/
|
|
140
|
+
setElementOpacity(elements: {
|
|
141
|
+
modelId: string;
|
|
142
|
+
elementId: string;
|
|
143
|
+
}[], opacity: number): void;
|
|
144
|
+
/**
|
|
145
|
+
* Get current opacity of an element
|
|
146
|
+
* @param modelId - Model ID
|
|
147
|
+
* @param elementId - Element ID
|
|
148
|
+
* @returns Current opacity (0-1), defaults to 1
|
|
149
|
+
*/
|
|
150
|
+
getElementOpacity(modelId: string, elementId: string): number;
|
|
151
|
+
/**
|
|
152
|
+
* Set elements to "ghost" mode (semi-transparent)
|
|
153
|
+
* @param elements - Elements to ghost
|
|
154
|
+
* @param ghostOpacity - Opacity for ghosted elements (default 0.1)
|
|
155
|
+
*/
|
|
156
|
+
setElementGhost(elements: {
|
|
157
|
+
modelId: string;
|
|
158
|
+
elementId: string;
|
|
159
|
+
}[], ghostOpacity?: number, desaturate?: boolean): void;
|
|
160
|
+
/**
|
|
161
|
+
* Ghost all elements EXCEPT the specified ones
|
|
162
|
+
* @param elements - Elements to keep fully opaque
|
|
163
|
+
* @param ghostOpacity - Opacity for all other elements (default 0.1)
|
|
164
|
+
*/
|
|
165
|
+
ghostExcept(elements: {
|
|
166
|
+
modelId: string;
|
|
167
|
+
elementId: string;
|
|
168
|
+
}[], ghostOpacity?: number): void;
|
|
169
|
+
/**
|
|
170
|
+
* Desaturate instance color (turn whitish)
|
|
171
|
+
* @param modelId - Model ID
|
|
172
|
+
* @param elementId - Element ID
|
|
173
|
+
* @param desatFactor - Desaturation factor (0 = original, 1 = full white)
|
|
174
|
+
*/
|
|
175
|
+
private _desaturateInstanceColor;
|
|
176
|
+
/**
|
|
177
|
+
* Restore instance color to original
|
|
178
|
+
*/
|
|
179
|
+
private _restoreInstanceColor;
|
|
180
|
+
/**
|
|
181
|
+
* Reset all elements to full opacity and restore original colors
|
|
182
|
+
*/
|
|
183
|
+
resetElementOpacity(): void;
|
|
184
|
+
/**
|
|
185
|
+
* Check if any element has semi-transparent opacity
|
|
186
|
+
*/
|
|
187
|
+
hasTransparentElements(): boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Check if MOST elements are transparent (for deciding depth write strategy)
|
|
190
|
+
* Returns true if more than 50% of elements have transparency
|
|
191
|
+
*/
|
|
192
|
+
private _isMostlyTransparent;
|
|
193
|
+
/**
|
|
194
|
+
* 🔧 Update material depth write based on transparency state
|
|
195
|
+
* When MOST elements are semi-transparent, disable depth write
|
|
196
|
+
* Also respects originally transparent materials (windows, glass)
|
|
197
|
+
*/
|
|
198
|
+
private _updateDepthWriteForTransparency;
|
|
87
199
|
enableEdgePerElement(material: LineMaterial, thresholdDeg?: number): void;
|
|
88
200
|
disableEdge(): void;
|
|
89
201
|
enableEdge(): void;
|
|
@@ -109,6 +109,37 @@ export declare class ViralMergedModel extends Mesh {
|
|
|
109
109
|
*/
|
|
110
110
|
resetVisibility(): void;
|
|
111
111
|
resetColor(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Set opacity for specific elements
|
|
114
|
+
* @param elements - Elements to set opacity for
|
|
115
|
+
* @param opacity - Opacity value (0-1)
|
|
116
|
+
*/
|
|
117
|
+
setElementOpacity(elements: {
|
|
118
|
+
modelId: string;
|
|
119
|
+
elementId: string;
|
|
120
|
+
}[], opacity: number): void;
|
|
121
|
+
/**
|
|
122
|
+
* Set elements to "ghost" mode (semi-transparent)
|
|
123
|
+
* @param elements - Elements to ghost
|
|
124
|
+
* @param ghostOpacity - Opacity for ghosted elements (default 0.1)
|
|
125
|
+
*/
|
|
126
|
+
setElementGhost(elements: {
|
|
127
|
+
modelId: string;
|
|
128
|
+
elementId: string;
|
|
129
|
+
}[], ghostOpacity?: number): void;
|
|
130
|
+
/**
|
|
131
|
+
* Ghost all elements EXCEPT the specified ones
|
|
132
|
+
* @param elements - Elements to keep fully opaque
|
|
133
|
+
* @param ghostOpacity - Opacity for all other elements (default 0.1)
|
|
134
|
+
*/
|
|
135
|
+
ghostExcept(elements: {
|
|
136
|
+
modelId: string;
|
|
137
|
+
elementId: string;
|
|
138
|
+
}[], ghostOpacity?: number): void;
|
|
139
|
+
/**
|
|
140
|
+
* Reset all elements to full opacity
|
|
141
|
+
*/
|
|
142
|
+
resetElementOpacity(): void;
|
|
112
143
|
enableEdge(material: LineMaterial, thresholdDeg?: number): void;
|
|
113
144
|
showEdge(): void;
|
|
114
145
|
hideEdge(): void;
|
|
@@ -139,6 +170,10 @@ export declare class ViralMergedModel extends Mesh {
|
|
|
139
170
|
* Notify edge mesh when meshes are updated (call this after batching or rebuilding)
|
|
140
171
|
*/
|
|
141
172
|
onMeshUpdated(mesh?: ViralBatchedMesh | ViralInstancedMeshV2): void;
|
|
173
|
+
/**
|
|
174
|
+
* @deprecated No longer needed - visibility is now alpha-based (GPU-accelerated)
|
|
175
|
+
* Kept for backward compatibility but does nothing
|
|
176
|
+
*/
|
|
142
177
|
optimizeVertices(): void;
|
|
143
178
|
/**
|
|
144
179
|
* *everytime add new model in scene this model will be regenerated again, for that reason we should dispose this model
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { CheckClashResult, CompareModelsResult, DataTree, GroupByResult, ViralViewerApi } from "../..";
|
|
1
|
+
import { CheckClashResult, CompareModelsResult, DataTree, GroupByResult, ViralutionTrackingModel, ViralViewerApi } from "../..";
|
|
2
2
|
export declare class ViralDataManager {
|
|
3
3
|
viralViewerApi: ViralViewerApi;
|
|
4
4
|
dataTree: DataTree[];
|
|
5
|
+
trackingData: Map<number, ViralutionTrackingModel>;
|
|
5
6
|
private fetchDataWorker;
|
|
6
7
|
private buildTreeNodeWorker;
|
|
7
8
|
private _boundingBoxWorker;
|
|
8
9
|
private _boundingBoxIntersectWorker;
|
|
9
10
|
private _checkClashWorker;
|
|
10
11
|
constructor(viralViewerApi: ViralViewerApi);
|
|
12
|
+
addTrackingData(modelId: number, data: ViralutionTrackingModel): void;
|
|
11
13
|
normalFetch(url: string, byteRangeStart?: number, byteRangeEnd?: number): Promise<Response>;
|
|
12
14
|
gzipFetch(url: string): Promise<Response>;
|
|
13
15
|
/**
|
|
@@ -23,6 +23,7 @@ export declare class ViralCentralizedEventHandler {
|
|
|
23
23
|
selectElementHandler(): void;
|
|
24
24
|
enableSelectElement(value: boolean): void;
|
|
25
25
|
selectElementHandler2(): void;
|
|
26
|
+
doubleClickElementHandler(): void;
|
|
26
27
|
isShiftPressed: boolean;
|
|
27
28
|
keyboardHandler(): void;
|
|
28
29
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RevitTransform, ViralPoint, ViralViewerRevitProject, ViralutionElement, ViralutionFragmentModel } from "../../types";
|
|
1
|
+
import { RevitTransform, ViralPoint, ViralViewerRevitProject, ViralutionElement, ViralutionFragmentModel, ViralutionTrackingModel } from "../../types";
|
|
2
2
|
import { ViralViewerApi } from "../../viral-viewer-api";
|
|
3
3
|
export declare class ViralRevitLoader {
|
|
4
4
|
viralViewerApi: ViralViewerApi;
|
|
@@ -22,6 +22,12 @@ export declare class ViralRevitLoader {
|
|
|
22
22
|
loadFlatBufferStandalone(informationUrl: string, geometriesUrl: string, callbackOnFinish?: () => void): Promise<void>;
|
|
23
23
|
getMaterials(dataUrl: string, byteRangeStart: number, byteRangeEnd: number): Promise<any>;
|
|
24
24
|
getElements(dataUrl: string, chunk: number[][], callbackOnSuccess?: (model: any, index: number) => void): Promise<void>;
|
|
25
|
+
focusCameraOnModel(trackingModel: ViralutionTrackingModel): Promise<void>;
|
|
26
|
+
getTranslation(translation: number[]): {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
z: number;
|
|
30
|
+
} | null;
|
|
25
31
|
loadByMaterial(trackingUrl: string, dataUrl: string, informationUrl: string): Promise<void>;
|
|
26
32
|
/**
|
|
27
33
|
* dispose all current model
|
|
@@ -56,10 +56,23 @@ export declare class ViralVisibilityManager {
|
|
|
56
56
|
b: number;
|
|
57
57
|
};
|
|
58
58
|
}[];
|
|
59
|
+
/**
|
|
60
|
+
* Select elements (replaces current selection)
|
|
61
|
+
*/
|
|
59
62
|
selectElements(elements: {
|
|
60
63
|
modelId: string;
|
|
61
64
|
elementId: string;
|
|
62
65
|
}[]): void;
|
|
66
|
+
/**
|
|
67
|
+
* Add elements to current selection (multi-select with Shift)
|
|
68
|
+
*/
|
|
69
|
+
addToSelection(elements: {
|
|
70
|
+
modelId: string;
|
|
71
|
+
elementId: string;
|
|
72
|
+
}[]): void;
|
|
73
|
+
/**
|
|
74
|
+
* Unselect all elements
|
|
75
|
+
*/
|
|
63
76
|
unselectElements(): void;
|
|
64
77
|
isolateModelId: string;
|
|
65
78
|
isolateModel(isolateModelIds?: string[]): void;
|
|
@@ -116,6 +129,37 @@ export declare class ViralVisibilityManager {
|
|
|
116
129
|
*/
|
|
117
130
|
enableSampling(numberOfSampling?: number): void;
|
|
118
131
|
disableSampling(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Set opacity for specific elements
|
|
134
|
+
* @param elements - Elements to set opacity for
|
|
135
|
+
* @param opacity - Opacity value (0-1)
|
|
136
|
+
*/
|
|
137
|
+
setElementOpacity(elements: {
|
|
138
|
+
modelId: string;
|
|
139
|
+
elementId: string;
|
|
140
|
+
}[], opacity: number): void;
|
|
141
|
+
/**
|
|
142
|
+
* Set elements to "ghost" mode (semi-transparent)
|
|
143
|
+
* @param elements - Elements to ghost
|
|
144
|
+
* @param ghostOpacity - Opacity for ghosted elements (default 0.1)
|
|
145
|
+
*/
|
|
146
|
+
setElementGhost(elements: {
|
|
147
|
+
modelId: string;
|
|
148
|
+
elementId: string;
|
|
149
|
+
}[], ghostOpacity?: number): void;
|
|
150
|
+
/**
|
|
151
|
+
* Ghost all elements EXCEPT the specified ones (highlight effect)
|
|
152
|
+
* @param elements - Elements to keep fully opaque
|
|
153
|
+
* @param ghostOpacity - Opacity for all other elements (default 0.1)
|
|
154
|
+
*/
|
|
155
|
+
ghostExcept(elements: {
|
|
156
|
+
modelId: string;
|
|
157
|
+
elementId: string;
|
|
158
|
+
}[], ghostOpacity?: number): void;
|
|
159
|
+
/**
|
|
160
|
+
* Reset all elements to full opacity
|
|
161
|
+
*/
|
|
162
|
+
resetElementOpacity(): void;
|
|
119
163
|
generateLOD(): void;
|
|
120
164
|
private _batchColors;
|
|
121
165
|
private _originalBatchMaterials;
|
|
@@ -137,4 +181,8 @@ export declare class ViralVisibilityManager {
|
|
|
137
181
|
* Check if batch visualization is currently enabled
|
|
138
182
|
*/
|
|
139
183
|
isBatchVisualizationEnabled(): boolean;
|
|
184
|
+
showHidePercentage: number;
|
|
185
|
+
showHideByPercentage(value?: number): void;
|
|
186
|
+
randomColor: number;
|
|
187
|
+
changeRandomColor(value?: number): void;
|
|
140
188
|
}
|
|
@@ -22,7 +22,11 @@ export declare class LoadElementBatchWorker {
|
|
|
22
22
|
/**
|
|
23
23
|
* Main load method - automatically routes to spatial or traditional approach
|
|
24
24
|
*/
|
|
25
|
-
loadElement(modelId: number, elements: ViralutionElement[], callbackOnSuccess?: () => void
|
|
25
|
+
loadElement(modelId: number, elements: ViralutionElement[], callbackOnSuccess?: () => void, globalTranslation?: {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
z: number;
|
|
29
|
+
} | null): void;
|
|
26
30
|
private loadInstancedElement;
|
|
27
31
|
/**
|
|
28
32
|
* Traditional load implementation (renamed for clarity)
|
|
@@ -37,9 +41,16 @@ export declare class LoadElementBatchWorker {
|
|
|
37
41
|
private createSingleMergedMesh;
|
|
38
42
|
private createSingleInstancedMesh;
|
|
39
43
|
/**
|
|
40
|
-
* Create optimized material for merging
|
|
44
|
+
* Create optimized material for merging with per-element opacity support
|
|
45
|
+
* Uses onBeforeCompile to inject custom shader code for RGBA vertex colors
|
|
41
46
|
*/
|
|
42
47
|
private createOptimizedMaterial;
|
|
48
|
+
/**
|
|
49
|
+
* 🎨 Inject custom shader modifications for per-element opacity
|
|
50
|
+
* This modifies the material's shaders to support RGBA vertex colors
|
|
51
|
+
* where the alpha channel controls per-element transparency
|
|
52
|
+
*/
|
|
53
|
+
private injectPerElementOpacityShader;
|
|
43
54
|
/**
|
|
44
55
|
* Throttled render to avoid excessive render calls
|
|
45
56
|
*/
|