@itwin/core-frontend 3.0.0-dev.182 → 3.0.0-dev.183
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/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +2 -2
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/RealityDataSource.js +3 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +4 -0
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +4 -0
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +1 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +1 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +7 -2
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +5 -2
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +4 -2
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +3 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +2 -2
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/RealityDataSource.js +3 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/ViewingSpace.js +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +4 -0
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +4 -0
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js +8 -5
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +1 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +1 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +8 -3
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
- package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +5 -2
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +5 -3
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +3 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +3 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/package.json +22 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityDataSource.js","sourceRoot":"","sources":["../../src/RealityDataSource.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAkB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAe,aAAa,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAiC,iBAAiB,EAAE,mBAAmB,EAAgD,MAAM,oBAAoB,CAAC;AACtK,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AA0C7I;;GAEG;AACH,MAAM,KAAW,iBAAiB,CAyEjC;AAzED,WAAiB,iBAAiB;IAChC;;;;;;OAMG;IACH,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,aAAmC,EAAE,WAA+B;QACvH,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/E,IAAI,sBAAsB,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YACpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,cAAc,CAAC;YACpD,qCAAqC;YACrC,MAAM,iBAAiB,GAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,aAAa,EAAE,CAAC;YAC/G,OAAO,iBAAiB,CAAC;SAC1B;QAED,oFAAoF;QACpF,IAAI,oBAAoB,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YAClD,MAAM,IAAI,GAAG,oBAAoB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/D,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACjD,MAAM,eAAe,GAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACvG,OAAO,eAAe,CAAC;SACxB;QAED,wBAAwB;QACxB,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC;QACjF,MAAM,MAAM,GAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;IAtBe,kCAAgB,mBAsB/B,CAAA;IACD,gHAAgH;IAChH,SAAgB,oBAAoB,CAAC,OAAe,EAAE,aAAmC,EAAE,WAA+B;QACxH,MAAM,IAAI,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/D,MAAM,eAAe,GAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAChF,OAAO,eAAe,CAAC;IACzB,CAAC;IANe,sCAAoB,uBAMnC,CAAA;IACD,yCAAyC;IACzC,SAAgB,6BAA6B,CAAC,WAA6B,EAAE,aAAmC,EAAE,WAA+B;QAC/I,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC;QACjE,IAAG,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACxF,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,YAAY,EAAC,aAAa,EAAC,MAAM,CAAC,CAAC;SAC9F;aAAM,IAAI,WAAW,CAAC,MAAM,EAAE;YAC7B,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAC,aAAa,EAAC,MAAM,CAAC,CAAC;SACpF;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC;QACjF,MAAM,EAAE,GAAG,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,aAAa,IAAI,WAAW,CAAC,YAAY,KAAK,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1H,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAVe,+CAA6B,gCAU5C,CAAA;IACD,yCAAyC;IACzC,SAAgB,6BAA6B,CAAC,WAAiC;QAC7E,IAAI,WAAW,CAAC,QAAQ,KAAK,mBAAmB,CAAC,WAAW;YAC1D,OAAO,SAAS,CAAC;QACnB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,GAAC,CAAC,CAAC,CAAC;QACxD,MAAM,WAAW,GAAqB;YACpC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1B,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzB,QAAQ;SACT,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAbe,+CAA6B,gCAa5C,CAAA;IACD;;;OAGG;IACI,KAAK,UAAU,OAAO,CAAC,WAAiC,EAAE,OAA+B;QAC9F,OAAO,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAFqB,yBAAO,UAE5B,CAAA;AACH,CAAC,EAzEgB,iBAAiB,KAAjB,iBAAiB,QAyEjC;AAED;;;;;;EAME;AACF,MAAM,qBAAqB;IAWzB;;OAEG;IACH,YAAsB,KAA6B;QAV3C,mBAAc,GAAY,KAAK,CAAC;QAExC,sIAAsI;QAC9H,aAAQ,GAAW,EAAE,CAAC;QAQ5B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAC,KAAK,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,KAA6B;QACnD,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAA+B,EAAE,OAA+B;QAChG,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,EAAC,SAAS,EAAC,CAAC,CAAC;QACxD,IAAI,UAA8B,CAAC;QACnC,IAAI;YACF,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,UAAU,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACpD;QAAC,OAAO,CAAC,EAAE;SACX;QAED,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IACD;OACG;IACI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAiC,EAAE,OAA+B;QAC5F,OAAO,qBAAqB,CAAC,aAAa,CAAC,WAAW,EAAG,OAAO,CAAC,CAAC;IACpE,CAAC;IACD,IAAW,cAAc;QACvB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IACD;;MAEE;IACF,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,IAAW,aAAa;QACtB,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,OAAO,aAAa,CAAC;IACvB,CAAC;IACD;;OAEG;IACH,IAAW,eAAe;;QACxB,OAAO,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,CAAC;IACxB,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IACD;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,OAA+B;;QAC5D,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC/B,IAAI,SAAS,KAAK,SAAS,CAAC,iBAAiB;oBAC3C,MAAM,IAAI,KAAK,CAAC,yMAAyM,CAAC,CAAC;gBAC7N,IAAI,CAAC,GAAG,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChG,0EAA0E;gBAC1E,MAAM,YAAY,GAAW,MAAA,IAAI,CAAC,GAAG,CAAC,YAAY,mCAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aAC/B;SACF;IACH,CAAC;IACD,oEAAoE;IACpE,sHAAsH;IACtH,qDAAqD;IACrD,oFAAoF;IACpF,kFAAkF;IAC1E,UAAU,CAAC,GAAW;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;;YAEnB,IAAI,CAAC,QAAQ,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7C,CAAC;IACO,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,YAAoB;QACxD,IAAI,OAAO,GAAmB;YAC5B,MAAM,EAAE,KAAK;YACb,YAAY;SACb,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC7C,IAAI,SAAS,EAAE;YACb,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,OAAO,EAAE;oBACP,aAAa,EAAE,SAAS;iBACzB;aACF,CAAC;SACH;QAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD;;;;;OAKG;IACI,KAAK,CAAC,sBAAsB,CAAC,WAAwB,EAAE,IAAY,EAAE,WAAwB;QAClG,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;OAGG;IACI,KAAK,CAAC,aAAa,CAAC,OAA+B;QACxD,uCAAuC;QACvC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;YAC7B,+DAA+D;YAC/D,IAAI,SAAS,KAAK,SAAS,CAAC,iBAAiB;gBAC3C,MAAM,IAAI,KAAK,CAAC,yMAAyM,CAAC,CAAC;YAC7N,IAAI;gBACF,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;gBAEhE,IAAI,CAAC,WAAW,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;gBACxG,IAAI,CAAC,cAAc,GAAC,IAAI,CAAC;aAC1B;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,MAAM,GAAG,2DAA2D,WAAW,CAAC,EAAE,gBAAgB,OAAO,EAAE,CAAC;gBAClH,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC7D;SACF;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,mBAAmB,CAAC,UAAU,EAAE;YAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,mBAAmB,CAAC,cAAc,EAAG;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,sBAAsB,CAAC,aAAa;gBACtD,IAAI,CAAC,WAAW,GAAG,wBAAwB,EAAE,CAAC;SACjD;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,mJAAmJ;IAC5I,KAAK,CAAC,eAAe,CAAC,OAA+B;QAC1D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAErC,IAAI,CAAC,WAAW;gBACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAE9C,IAAI,CAAC,WAAW,CAAC,YAAY;gBAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YAEnF,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;SAClF;QAED,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QAE1E,+EAA+E;QAC/E,MAAM,WAAW,GAAG,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,WAAW,EAAE;YACf,MAAM,WAAW,GAAG,MAAM,kCAAkC,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9F,IAAI,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;gBACxC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;gBACtB,IAAI,CAAC,qBAAqB,GAAG,UAAU,WAAW,CAAC,KAAK,EAAE,CAAC;aAC5D;SACF;QAED,+EAA+E;QAC/E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,yBAAyB,CAAC,WAAwB,EAAE,IAAY,EAAE,WAAwB;QACrG,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAmB;YAC9B,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,aAAa;SAC5B,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,IAAY;QACtC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,KAAK,SAAS,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErC,IAAI,MAAM,IAAK,IAAI,CAAC,WAAW,EAAE;YAC/B,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SACzE;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW,CAAC,IAAY;QACnC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,KAAK,SAAS,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErC,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SACtE;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { getJson, request, RequestOptions } from \"@bentley/itwin-client\";\r\nimport { AccessToken, BentleyStatus, GuidString, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelError, OrbitGtBlobProps, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { CesiumIonAssetProvider, ContextShareProvider, getCesiumAccessTokenAndEndpointUrl, getCesiumOSMBuildingsUrl } from \"./tile/internal\";\r\n\r\n/**\r\n * This interface provide methods used to access a reality data from a reality data provider\r\n * @beta\r\n */\r\nexport interface RealityDataSource {\r\n readonly key: RealityDataSourceKey;\r\n readonly isContextShare: boolean;\r\n readonly realityDataId: string | undefined;\r\n /** Metatdata on the reality data source */\r\n readonly realityData: RealityData | undefined;\r\n /** The reality data type (e.g.: \"RealityMesh3DTiles\", OPC, Terrain3DTiles, Cesium3DTiles, ... )*/\r\n readonly realityDataType: string | undefined;\r\n /**\r\n * This method returns the URL to obtain the Reality Data properties.\r\n * @param iTwinId id of associated iTwin project\r\n * @returns string containing the URL to reality data.\r\n */\r\n getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined>;\r\n\r\n /**\r\n * Gets a reality data root document json\r\n * @returns tile data json\r\n * @internal\r\n */\r\n getRootDocument(iTwinId: GuidString | undefined): Promise<any>;\r\n /**\r\n * Gets tile content\r\n * @param name name or path of tile\r\n * @returns array buffer of tile content\r\n * @internal\r\n */\r\n getTileContent(name: string): Promise<any>;\r\n /**\r\n * Gets a tileset's app data json\r\n * @param name name or path of tile\r\n * @returns app data json object\r\n * @internal\r\n */\r\n getTileJson(name: string): Promise<any>;\r\n}\r\n/** Utility functions for RealityDataSource\r\n * @beta\r\n */\r\nexport namespace RealityDataSource {\r\n /**\r\n * Create a RealityDataSourceKey from a tilesetUrl.\r\n * @param tilesetUrl the reality data attachment url\r\n * @param inputProvider identify the RealityDataProvider if known, otherwise function will try to extract it from the tilesetUrl\r\n * @param inputFormat identify the RealityDataFormat if known, otherwise function will try to extract it from the tilesetUrl\r\n * @returns the RealityDataSourceKey that uniquely identify a reality data for a provider\r\n */\r\n export function createKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.fromUrl(tilesetUrl);\r\n if (CesiumIonAssetProvider.isProviderUrl(tilesetUrl)) {\r\n const provider = RealityDataProvider.CesiumIonAsset;\r\n // Keep url hidden and use a dummy id\r\n const cesiumIonAssetKey: RealityDataSourceKey = { provider, format, id: CesiumIonAssetProvider.osmBuildingId };\r\n return cesiumIonAssetKey;\r\n }\r\n\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n if (ContextShareProvider.isProviderUrl(tilesetUrl)) {\r\n const info = ContextShareProvider.getInfoFromUrl(tilesetUrl);\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n format = inputFormat ? inputFormat : info.format;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id, iTwinId: info.iTwinId };\r\n return contextShareKey;\r\n }\r\n\r\n // default to tileSetUrl\r\n const provider2 = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const urlKey: RealityDataSourceKey = { provider: provider2, format, id: tilesetUrl };\r\n return urlKey;\r\n }\r\n /** @alpha - was used for a very specific case of point cloud (opc) attachment that should not be made public */\r\n export function createKeyFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const info = ContextShareProvider.getInfoFromBlobUrl(blobUrl);\r\n const format = inputFormat ? inputFormat : info.format;\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id };\r\n return contextShareKey;\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createKeyFromOrbitGtBlobProps(orbitGtBlob: OrbitGtBlobProps, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const format = inputFormat ? inputFormat : RealityDataFormat.OPC;\r\n if(orbitGtBlob.blobFileName && orbitGtBlob.blobFileName.toLowerCase().startsWith(\"http\")) {\r\n return RealityDataSource.createKeyFromBlobUrl(orbitGtBlob.blobFileName,inputProvider,format);\r\n } else if (orbitGtBlob.rdsUrl) {\r\n return RealityDataSource.createKeyFromUrl(orbitGtBlob.rdsUrl,inputProvider,format);\r\n }\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.OrbitGtBlob;\r\n const id = `${orbitGtBlob.accountName}:${orbitGtBlob.containerName}:${orbitGtBlob.blobFileName}:?${orbitGtBlob.sasToken}`;\r\n return { provider, format, id };\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createOrbitGtBlobPropsFromKey(rdSourceKey: RealityDataSourceKey): OrbitGtBlobProps | undefined {\r\n if (rdSourceKey.provider !== RealityDataProvider.OrbitGtBlob)\r\n return undefined;\r\n const splitIds = rdSourceKey.id.split(\":\");\r\n const sasTokenIndex = rdSourceKey.id.indexOf(\":?\");\r\n const sasToken = rdSourceKey.id.substr(sasTokenIndex+2);\r\n const orbitGtBlob: OrbitGtBlobProps = {\r\n accountName: splitIds[0],\r\n containerName: splitIds[1],\r\n blobFileName: splitIds[2],\r\n sasToken,\r\n };\r\n return orbitGtBlob;\r\n }\r\n /** Return an instance of a RealityDataSource from a source key.\r\n * There will aways be only one reality data RealityDataSource for a corresponding reality data source key.\r\n * @internal\r\n */\r\n export async function fromKey(rdSourceKey: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n return RealityDataSourceImpl.fromKey(rdSourceKey, iTwinId);\r\n }\r\n}\r\n\r\n/** This class provides access to the reality data provider services.\r\n * It encapsulates access to a reality data weiter it be from local access, http or ProjectWise Context Share.\r\n * The key provided at the creation determines if this is ProjectWise Context Share reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n* @beta\r\n*/\r\nclass RealityDataSourceImpl implements RealityDataSource {\r\n public readonly key: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n private _isUrlResolved: boolean = false;\r\n private _rd: RealityData | undefined;\r\n /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/\r\n private _baseUrl: string = \"\";\r\n /** Request authorization for non PW ContextShare requests.*/\r\n private _requestAuthorization?: string;\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n this.key = props.sourceKey;\r\n this._isUrlResolved=false;\r\n }\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n public static fromProps(props: RealityDataSourceProps): RealityDataSource {\r\n return new RealityDataSourceImpl(props);\r\n }\r\n /**\r\n * Create an instance of this class from a source key and iTwin context/\r\n */\r\n public static async createFromKey(sourceKey: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n const rdSource = new RealityDataSourceImpl({sourceKey});\r\n let tilesetUrl: string | undefined;\r\n try {\r\n await rdSource.queryRealityData(iTwinId);\r\n tilesetUrl = await rdSource.getServiceUrl(iTwinId);\r\n } catch (e) {\r\n }\r\n\r\n return (tilesetUrl !== undefined) ? rdSource: undefined;\r\n }\r\n /** Return an instance of a RealityDataSource from a source key.\r\n */\r\n public static async fromKey(rdSourceKey: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n return RealityDataSourceImpl.createFromKey(rdSourceKey, iTwinId);\r\n }\r\n public get isContextShare(): boolean {\r\n return (this.key.provider === RealityDataProvider.ContextShare);\r\n }\r\n /**\r\n * Returns Reality Data if available\r\n */\r\n public get realityData(): RealityData | undefined {\r\n return this._rd;\r\n }\r\n public get realityDataId(): string | undefined {\r\n const realityDataId = this.isContextShare ? this.key.id : undefined;\r\n return realityDataId;\r\n }\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public get realityDataType(): string | undefined {\r\n return this._rd?.type;\r\n }\r\n public get iTwinId(): string | undefined {\r\n return this.key.iTwinId;\r\n }\r\n /**\r\n * Query Reality Data from provider\r\n */\r\n private async queryRealityData(iTwinId: GuidString | undefined) {\r\n if (this.isContextShare && !this._rd) {\r\n const token = await IModelApp.getAccessToken();\r\n if (token && this.realityDataId) {\r\n if (undefined === IModelApp.realityDataAccess)\r\n throw new Error(\"Missing an implementation of RealityDataAccess on IModelApp, it is required to access reality data. Please provide an implementation to the IModelApp.startup using IModelAppOptions.realityDataAccess.\");\r\n this._rd = await IModelApp.realityDataAccess.getRealityData(token, iTwinId, this.realityDataId);\r\n // A reality data that has not root document set should not be considered.\r\n const rootDocument: string = this._rd.rootDocument ?? \"\";\r\n this.setBaseUrl(rootDocument);\r\n }\r\n }\r\n }\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n private async _doRequest(url: string, responseType: string): Promise<any> {\r\n let options: RequestOptions = {\r\n method: \"GET\",\r\n responseType,\r\n };\r\n\r\n const authToken = this._requestAuthorization;\r\n if (authToken) {\r\n options = {\r\n ...options,\r\n headers: {\r\n authorization: authToken,\r\n },\r\n };\r\n }\r\n\r\n const data = await request(url, options);\r\n return data.body;\r\n }\r\n /**\r\n * Gets a tileset's app data json\r\n * @param name name or path of tile\r\n * @returns app data json object\r\n * @internal\r\n */\r\n public async getRealityDataTileJson(accessToken: AccessToken, name: string, realityData: RealityData): Promise<any> {\r\n const url = await realityData.getBlobUrl(accessToken, name);\r\n\r\n const data = await getJson(url.toString());\r\n return data;\r\n }\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n // If url was not resolved - resolve it\r\n if (this.isContextShare && !this._isUrlResolved) {\r\n const rdSourceKey = this.key;\r\n // we need to resolve tilesetURl from realityDataId and iTwinId\r\n if (undefined === IModelApp.realityDataAccess)\r\n throw new Error(\"Missing an implementation of RealityDataAccess on IModelApp, it is required to access reality data. Please provide an implementation to the IModelApp.startup using IModelAppOptions.realityDataAccess.\");\r\n try {\r\n const resolvedITwinId = iTwinId ? iTwinId : rdSourceKey.iTwinId;\r\n\r\n this._tilesetUrl = await IModelApp.realityDataAccess.getRealityDataUrl(resolvedITwinId, rdSourceKey.id);\r\n this._isUrlResolved=true;\r\n } catch (e) {\r\n const errMsg = `Error getting URL from ContextShare using realityDataId=${rdSourceKey.id} and iTwinId=${iTwinId}`;\r\n Logger.logError(FrontendLoggerCategory.RealityData, errMsg);\r\n }\r\n } else if (this.key.provider === RealityDataProvider.TilesetUrl) {\r\n this._tilesetUrl = this.key.id;\r\n } else if (this.key.provider === RealityDataProvider.CesiumIonAsset ) {\r\n this._tilesetUrl = this.key.id;\r\n if (this.key.id === CesiumIonAssetProvider.osmBuildingId)\r\n this._tilesetUrl = getCesiumOSMBuildingsUrl();\r\n }\r\n return this._tilesetUrl;\r\n }\r\n /** TODO: This probably required three different realitydataSource implementations based on different provider -> locally hosted, RDS and cesium */\r\n public async getRootDocument(iTwinId: GuidString | undefined): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n if (this.isContextShare && token) {\r\n const realityData = this.realityData;\r\n\r\n if (!realityData)\r\n throw new Error(`Reality Data not defined`);\r\n\r\n if (!realityData.rootDocument)\r\n throw new Error(`Root document not defined for reality data: ${realityData.id}`);\r\n\r\n return this.getRealityDataTileJson(token, realityData.rootDocument, realityData);\r\n }\r\n\r\n let url = await this.getServiceUrl(iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to get service url\");\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n const cesiumAsset = CesiumIonAssetProvider.parseCesiumUrl(url);\r\n if (cesiumAsset) {\r\n const tokenAndUrl = await getCesiumAccessTokenAndEndpointUrl(cesiumAsset.id, cesiumAsset.key);\r\n if (tokenAndUrl.url && tokenAndUrl.token) {\r\n url = tokenAndUrl.url;\r\n this._requestAuthorization = `Bearer ${tokenAndUrl.token}`;\r\n }\r\n }\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return this._doRequest(url, \"json\");\r\n }\r\n\r\n /**\r\n * Gets tile content\r\n * @param name name or path of tile\r\n * @returns array buffer of tile content\r\n */\r\n public async getRealityDataTileContent(accessToken: AccessToken, name: string, realityData: RealityData): Promise<any> {\r\n const url = await realityData.getBlobUrl(accessToken, name);\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"arraybuffer\",\r\n };\r\n const data = await request(url.toString(), options);\r\n return data.body;\r\n }\r\n\r\n /**\r\n * TODO: This probably required different realitydataSource implementations based on different provider -> locally hosted, RDS and cesium\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(name: string): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n const useRds = this.isContextShare && token !== undefined;\r\n const tileUrl = this._baseUrl + name;\r\n\r\n if (useRds && this.realityData) {\r\n return this.getRealityDataTileContent(token, tileUrl, this.realityData);\r\n }\r\n\r\n return this._doRequest(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * TODO: This probably required different realitydataSource implementations based on different provider -> locally hosted, RDS and cesium\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(name: string): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n const useRds = this.isContextShare && token !== undefined;\r\n const tileUrl = this._baseUrl + name;\r\n\r\n if (useRds && this.realityData) {\r\n return this.getRealityDataTileJson(token, tileUrl, this.realityData);\r\n }\r\n\r\n return this._doRequest(tileUrl, \"json\");\r\n }\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"file":"RealityDataSource.js","sourceRoot":"","sources":["../../src/RealityDataSource.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { getJson, request, RequestOptions } from \"@bentley/itwin-client\";\r\nimport { AccessToken, BentleyStatus, GuidString, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelError, OrbitGtBlobProps, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { CesiumIonAssetProvider, ContextShareProvider, getCesiumAccessTokenAndEndpointUrl, getCesiumOSMBuildingsUrl } from \"./tile/internal\";\r\n\r\n/**\r\n * This interface provide methods used to access a reality data from a reality data provider\r\n * @beta\r\n */\r\nexport interface RealityDataSource {\r\n readonly key: RealityDataSourceKey;\r\n readonly isContextShare: boolean;\r\n readonly realityDataId: string | undefined;\r\n /** Metatdata on the reality data source */\r\n readonly realityData: RealityData | undefined;\r\n /** The reality data type (e.g.: \"RealityMesh3DTiles\", OPC, Terrain3DTiles, Cesium3DTiles, ... )*/\r\n readonly realityDataType: string | undefined;\r\n /**\r\n * This method returns the URL to obtain the Reality Data properties.\r\n * @param iTwinId id of associated iTwin project\r\n * @returns string containing the URL to reality data.\r\n */\r\n getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined>;\r\n\r\n /**\r\n * Gets a reality data root document json\r\n * @returns tile data json\r\n * @internal\r\n */\r\n getRootDocument(iTwinId: GuidString | undefined): Promise<any>;\r\n /**\r\n * Gets tile content\r\n * @param name name or path of tile\r\n * @returns array buffer of tile content\r\n * @internal\r\n */\r\n getTileContent(name: string): Promise<any>;\r\n /**\r\n * Gets a tileset's app data json\r\n * @param name name or path of tile\r\n * @returns app data json object\r\n * @internal\r\n */\r\n getTileJson(name: string): Promise<any>;\r\n}\r\n/** Utility functions for RealityDataSource\r\n * @beta\r\n */\r\nexport namespace RealityDataSource {\r\n /**\r\n * Create a RealityDataSourceKey from a tilesetUrl.\r\n * @param tilesetUrl the reality data attachment url\r\n * @param inputProvider identify the RealityDataProvider if known, otherwise function will try to extract it from the tilesetUrl\r\n * @param inputFormat identify the RealityDataFormat if known, otherwise function will try to extract it from the tilesetUrl\r\n * @returns the RealityDataSourceKey that uniquely identify a reality data for a provider\r\n */\r\n export function createKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.fromUrl(tilesetUrl);\r\n if (CesiumIonAssetProvider.isProviderUrl(tilesetUrl)) {\r\n const provider = RealityDataProvider.CesiumIonAsset;\r\n // Keep url hidden and use a dummy id\r\n const cesiumIonAssetKey: RealityDataSourceKey = { provider, format, id: CesiumIonAssetProvider.osmBuildingId };\r\n return cesiumIonAssetKey;\r\n }\r\n\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n if (ContextShareProvider.isProviderUrl(tilesetUrl)) {\r\n const info = ContextShareProvider.getInfoFromUrl(tilesetUrl);\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n format = inputFormat ? inputFormat : info.format;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id, iTwinId: info.iTwinId };\r\n return contextShareKey;\r\n }\r\n\r\n // default to tileSetUrl\r\n const provider2 = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const urlKey: RealityDataSourceKey = { provider: provider2, format, id: tilesetUrl };\r\n return urlKey;\r\n }\r\n /** @alpha - was used for a very specific case of point cloud (opc) attachment that should not be made public */\r\n export function createKeyFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const info = ContextShareProvider.getInfoFromBlobUrl(blobUrl);\r\n const format = inputFormat ? inputFormat : info.format;\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id };\r\n return contextShareKey;\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createKeyFromOrbitGtBlobProps(orbitGtBlob: OrbitGtBlobProps, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const format = inputFormat ? inputFormat : RealityDataFormat.OPC;\r\n if(orbitGtBlob.blobFileName && orbitGtBlob.blobFileName.toLowerCase().startsWith(\"http\")) {\r\n return RealityDataSource.createKeyFromBlobUrl(orbitGtBlob.blobFileName,inputProvider,format);\r\n } else if (orbitGtBlob.rdsUrl) {\r\n return RealityDataSource.createKeyFromUrl(orbitGtBlob.rdsUrl,inputProvider,format);\r\n }\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.OrbitGtBlob;\r\n const id = `${orbitGtBlob.accountName}:${orbitGtBlob.containerName}:${orbitGtBlob.blobFileName}:?${orbitGtBlob.sasToken}`;\r\n return { provider, format, id };\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createOrbitGtBlobPropsFromKey(rdSourceKey: RealityDataSourceKey): OrbitGtBlobProps | undefined {\r\n if (rdSourceKey.provider !== RealityDataProvider.OrbitGtBlob)\r\n return undefined;\r\n const splitIds = rdSourceKey.id.split(\":\");\r\n const sasTokenIndex = rdSourceKey.id.indexOf(\":?\");\r\n const sasToken = rdSourceKey.id.substr(sasTokenIndex+2);\r\n const orbitGtBlob: OrbitGtBlobProps = {\r\n accountName: splitIds[0],\r\n containerName: splitIds[1],\r\n blobFileName: splitIds[2],\r\n sasToken,\r\n };\r\n return orbitGtBlob;\r\n }\r\n /** Return an instance of a RealityDataSource from a source key.\r\n * There will aways be only one reality data RealityDataSource for a corresponding reality data source key.\r\n * @internal\r\n */\r\n export async function fromKey(rdSourceKey: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n return RealityDataSourceImpl.fromKey(rdSourceKey, iTwinId);\r\n }\r\n}\r\n\r\n/** This class provides access to the reality data provider services.\r\n * It encapsulates access to a reality data weiter it be from local access, http or ProjectWise Context Share.\r\n * The key provided at the creation determines if this is ProjectWise Context Share reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n* @beta\r\n*/\r\nclass RealityDataSourceImpl implements RealityDataSource {\r\n public readonly key: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n private _isUrlResolved: boolean = false;\r\n private _rd: RealityData | undefined;\r\n /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/\r\n private _baseUrl: string = \"\";\r\n /** Request authorization for non PW ContextShare requests.*/\r\n private _requestAuthorization?: string;\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n this.key = props.sourceKey;\r\n this._isUrlResolved=false;\r\n }\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n public static fromProps(props: RealityDataSourceProps): RealityDataSource {\r\n return new RealityDataSourceImpl(props);\r\n }\r\n /**\r\n * Create an instance of this class from a source key and iTwin context/\r\n */\r\n public static async createFromKey(sourceKey: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n const rdSource = new RealityDataSourceImpl({sourceKey});\r\n let tilesetUrl: string | undefined;\r\n try {\r\n await rdSource.queryRealityData(iTwinId);\r\n tilesetUrl = await rdSource.getServiceUrl(iTwinId);\r\n } catch (e) {\r\n }\r\n\r\n return (tilesetUrl !== undefined) ? rdSource: undefined;\r\n }\r\n /** Return an instance of a RealityDataSource from a source key.\r\n */\r\n public static async fromKey(rdSourceKey: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n return RealityDataSourceImpl.createFromKey(rdSourceKey, iTwinId);\r\n }\r\n public get isContextShare(): boolean {\r\n return (this.key.provider === RealityDataProvider.ContextShare);\r\n }\r\n /**\r\n * Returns Reality Data if available\r\n */\r\n public get realityData(): RealityData | undefined {\r\n return this._rd;\r\n }\r\n public get realityDataId(): string | undefined {\r\n const realityDataId = this.isContextShare ? this.key.id : undefined;\r\n return realityDataId;\r\n }\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public get realityDataType(): string | undefined {\r\n return this._rd?.type;\r\n }\r\n public get iTwinId(): string | undefined {\r\n return this.key.iTwinId;\r\n }\r\n /**\r\n * Query Reality Data from provider\r\n */\r\n private async queryRealityData(iTwinId: GuidString | undefined) {\r\n if (this.isContextShare && !this._rd) {\r\n const token = await IModelApp.getAccessToken();\r\n if (token && this.realityDataId) {\r\n if (undefined === IModelApp.realityDataAccess)\r\n throw new Error(\"Missing an implementation of RealityDataAccess on IModelApp, it is required to access reality data. Please provide an implementation to the IModelApp.startup using IModelAppOptions.realityDataAccess.\");\r\n this._rd = await IModelApp.realityDataAccess.getRealityData(token, iTwinId, this.realityDataId);\r\n // A reality data that has not root document set should not be considered.\r\n const rootDocument: string = this._rd.rootDocument ?? \"\";\r\n this.setBaseUrl(rootDocument);\r\n }\r\n }\r\n }\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n private async _doRequest(url: string, responseType: string): Promise<any> {\r\n let options: RequestOptions = {\r\n method: \"GET\",\r\n responseType,\r\n };\r\n\r\n const authToken = this._requestAuthorization;\r\n if (authToken) {\r\n options = {\r\n ...options,\r\n headers: {\r\n authorization: authToken,\r\n },\r\n };\r\n }\r\n\r\n const data = await request(url, options);\r\n return data.body;\r\n }\r\n /**\r\n * Gets a tileset's app data json\r\n * @param name name or path of tile\r\n * @returns app data json object\r\n * @internal\r\n */\r\n public async getRealityDataTileJson(accessToken: AccessToken, name: string, realityData: RealityData): Promise<any> {\r\n const url = await realityData.getBlobUrl(accessToken, name);\r\n\r\n const data = await getJson(url.toString());\r\n return data;\r\n }\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n // If url was not resolved - resolve it\r\n if (this.isContextShare && !this._isUrlResolved) {\r\n const rdSourceKey = this.key;\r\n // we need to resolve tilesetURl from realityDataId and iTwinId\r\n if (undefined === IModelApp.realityDataAccess)\r\n throw new Error(\"Missing an implementation of RealityDataAccess on IModelApp, it is required to access reality data. Please provide an implementation to the IModelApp.startup using IModelAppOptions.realityDataAccess.\");\r\n try {\r\n const resolvedITwinId = iTwinId ? iTwinId : rdSourceKey.iTwinId;\r\n\r\n this._tilesetUrl = await IModelApp.realityDataAccess.getRealityDataUrl(resolvedITwinId, rdSourceKey.id);\r\n this._isUrlResolved=true;\r\n } catch (e) {\r\n const errMsg = `Error getting URL from ContextShare using realityDataId=${rdSourceKey.id} and iTwinId=${iTwinId}`;\r\n Logger.logError(FrontendLoggerCategory.RealityData, errMsg);\r\n }\r\n } else if (this.key.provider === RealityDataProvider.TilesetUrl) {\r\n this._tilesetUrl = this.key.id;\r\n } else if (this.key.provider === RealityDataProvider.CesiumIonAsset ) {\r\n this._tilesetUrl = this.key.id;\r\n if (this.key.id === CesiumIonAssetProvider.osmBuildingId) {\r\n this._tilesetUrl = getCesiumOSMBuildingsUrl();\r\n this._isUrlResolved = true;\r\n }\r\n }\r\n return this._tilesetUrl;\r\n }\r\n /** TODO: This probably required three different realitydataSource implementations based on different provider -> locally hosted, RDS and cesium */\r\n public async getRootDocument(iTwinId: GuidString | undefined): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n if (this.isContextShare && token) {\r\n const realityData = this.realityData;\r\n\r\n if (!realityData)\r\n throw new Error(`Reality Data not defined`);\r\n\r\n if (!realityData.rootDocument)\r\n throw new Error(`Root document not defined for reality data: ${realityData.id}`);\r\n\r\n return this.getRealityDataTileJson(token, realityData.rootDocument, realityData);\r\n }\r\n\r\n let url = await this.getServiceUrl(iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to get service url\");\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n const cesiumAsset = CesiumIonAssetProvider.parseCesiumUrl(url);\r\n if (cesiumAsset) {\r\n const tokenAndUrl = await getCesiumAccessTokenAndEndpointUrl(cesiumAsset.id, cesiumAsset.key);\r\n if (tokenAndUrl.url && tokenAndUrl.token) {\r\n url = tokenAndUrl.url;\r\n this._requestAuthorization = `Bearer ${tokenAndUrl.token}`;\r\n }\r\n }\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return this._doRequest(url, \"json\");\r\n }\r\n\r\n /**\r\n * Gets tile content\r\n * @param name name or path of tile\r\n * @returns array buffer of tile content\r\n */\r\n public async getRealityDataTileContent(accessToken: AccessToken, name: string, realityData: RealityData): Promise<any> {\r\n const url = await realityData.getBlobUrl(accessToken, name);\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"arraybuffer\",\r\n };\r\n const data = await request(url.toString(), options);\r\n return data.body;\r\n }\r\n\r\n /**\r\n * TODO: This probably required different realitydataSource implementations based on different provider -> locally hosted, RDS and cesium\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(name: string): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n const useRds = this.isContextShare && token !== undefined;\r\n const tileUrl = this._baseUrl + name;\r\n\r\n if (useRds && this.realityData) {\r\n return this.getRealityDataTileContent(token, tileUrl, this.realityData);\r\n }\r\n\r\n return this._doRequest(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * TODO: This probably required different realitydataSource implementations based on different provider -> locally hosted, RDS and cesium\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(name: string): Promise<any> {\r\n const token = await IModelApp.getAccessToken();\r\n const useRds = this.isContextShare && token !== undefined;\r\n const tileUrl = this._baseUrl + name;\r\n\r\n if (useRds && this.realityData) {\r\n return this.getRealityDataTileJson(token, tileUrl, this.realityData);\r\n }\r\n\r\n return this._doRequest(tileUrl, \"json\");\r\n }\r\n}\r\n\r\n"]}
|
package/lib/esm/ViewingSpace.js
CHANGED
|
@@ -204,7 +204,7 @@ export class ViewingSpace {
|
|
|
204
204
|
if (undefined !== globalGeometry) {
|
|
205
205
|
const viewZ = this.rotation.getRow(2);
|
|
206
206
|
const eyeDepth = this.eyePoint ? viewZ.dotProduct(this.eyePoint) : undefined;
|
|
207
|
-
depthRange = globalGeometry.geometry.getFrustumIntersectionDepthRange(frustum, globalGeometry.heightRange, gridPlane, this.view.maxGlobalScopeFactor > 1);
|
|
207
|
+
depthRange = globalGeometry.geometry.getFrustumIntersectionDepthRange(frustum, extents, globalGeometry.heightRange, gridPlane, this.view.maxGlobalScopeFactor > 1);
|
|
208
208
|
if (eyeDepth !== undefined) {
|
|
209
209
|
const maxBackgroundFrontBackRatio = 1.0E6;
|
|
210
210
|
const frontDist = Math.max(.1, eyeDepth - depthRange.high);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewingSpace.js","sourceRoot":"","sources":["../../src/ViewingSpace.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Views\r\n */\r\n\r\nimport {\r\n AxisOrder, ClipPlaneContainment, Constant, Map4d, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Point4d, Range1d, Range2d, Range3d, Transform, Vector3d, XYAndZ, XYZ,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, GridOrientationType, Npc, NpcCorners } from \"@itwin/core-common\";\r\nimport { ApproximateTerrainHeights } from \"./ApproximateTerrainHeights\";\r\nimport { CoordSystem } from \"./CoordSystem\";\r\nimport { Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\nimport { ViewState } from \"./ViewState\";\r\nimport { Frustum2d } from \"./Frustum2d\";\r\nimport { getFrustumPlaneIntersectionDepthRange } from \"./BackgroundMapGeometry\";\r\n\r\n/** Describes a [[Viewport]]'s viewing volume, plus its size on the screen. A new\r\n * instance of ViewingSpace is created every time the Viewport's frustum changes.\r\n * @see [[Viewport.viewingSpace]].\r\n * @public\r\n */\r\nexport class ViewingSpace {\r\n private readonly _viewRange = new ViewRect(); // scratch variable\r\n private readonly _viewCorners = new Range3d(); // scratch variable\r\n\r\n /** @internal */\r\n public frustFraction = 1.0;\r\n /** Maximum ratio of frontplane to backplane distance for 24 bit non-logarithmic zbuffer\r\n * @internal\r\n */\r\n public static nearScaleNonLog24 = 0.0003;\r\n /** Maximum fraction of frontplane to backplane distance for 24 bit logarithmic zbuffer\r\n * @internal\r\n */\r\n public static nearScaleLog24 = 1.0E-8;\r\n /** View origin, potentially expanded */\r\n public readonly viewOrigin = new Point3d();\r\n /** View delta, potentially expanded */\r\n public readonly viewDelta = new Vector3d();\r\n /** View origin (from ViewState, unexpanded) */\r\n public readonly viewOriginUnexpanded = new Point3d();\r\n /** View delta (from ViewState, unexpanded) */\r\n public readonly viewDeltaUnexpanded = new Vector3d();\r\n /** View rotation matrix (copied from ViewState) */\r\n public readonly rotation = new Matrix3d();\r\n /** Provides conversions between world and view coordinates. */\r\n public readonly worldToViewMap = Map4d.createIdentity();\r\n /** Providers conversions between world and Npc (non-dimensional perspective) coordinates. */\r\n public readonly worldToNpcMap = Map4d.createIdentity();\r\n /** @internal */\r\n public readonly zClipAdjusted: boolean = false; // were the view z clip planes adjusted due to front/back clipping off?\r\n /** Eye point - undefined if not a perspective projection. */\r\n public readonly eyePoint: Point3d | undefined;\r\n\r\n private _view: ViewState;\r\n\r\n /** The ViewState for this Viewport */\r\n public get view(): ViewState { return this._view; }\r\n public set view(view: ViewState) { this._view = view; }\r\n\r\n private readonly _clientWidth: number;\r\n private readonly _clientHeight: number;\r\n\r\n /** Get the rectangle of this Viewport in ViewCoordinates. */\r\n private get _viewRect(): ViewRect { this._viewRange.init(0, 0, this._clientWidth, this._clientHeight); return this._viewRange; }\r\n\r\n private static _copyOutput(from: XYZ, to?: XYZ) { let pt = from; if (to) { to.setFrom(from); pt = to; } return pt; }\r\n\r\n /** @internal */\r\n public toViewOrientation(from: XYZ, to?: XYZ) { this.rotation.multiplyVectorInPlace(ViewingSpace._copyOutput(from, to)); }\r\n /** @internal */\r\n public fromViewOrientation(from: XYZ, to?: XYZ) { this.rotation.multiplyTransposeVectorInPlace(ViewingSpace._copyOutput(from, to)); }\r\n\r\n /** Ensure the rotation matrix for this view is aligns the root z with the view out (i.e. a \"2d view\"). */\r\n private alignWithRootZ() {\r\n const zUp = Vector3d.unitZ();\r\n if (zUp.isAlmostEqual(this.rotation.rowZ()))\r\n return;\r\n const r = this.rotation.transpose();\r\n r.setColumn(2, zUp);\r\n Matrix3d.createRigidFromMatrix3d(r, AxisOrder.ZXY, r);\r\n r.transpose(this.rotation);\r\n this.view.setRotation(this.rotation); // Don't let viewState and viewport rotation be different.\r\n }\r\n\r\n private validateCamera() {\r\n const view = this.view;\r\n if (!view.is3d())\r\n return;\r\n\r\n const camera = view.camera;\r\n camera.validateLens();\r\n if (camera.isFocusValid)\r\n return;\r\n\r\n const vDelta = view.getExtents();\r\n const maxDelta = vDelta.x > vDelta.y ? vDelta.x : vDelta.y;\r\n let focusDistance = maxDelta / (2.0 * Math.tan(camera.getLensAngle().radians / 2.0));\r\n\r\n if (focusDistance < vDelta.z / 2.0)\r\n focusDistance = vDelta.z / 2.0;\r\n\r\n const eyePoint = new Point3d(vDelta.x / 2.0, vDelta.y / 2.0, (vDelta.z / 2.0) + focusDistance);\r\n\r\n this.fromViewOrientation(eyePoint);\r\n eyePoint.plus(view.getOrigin(), eyePoint);\r\n camera.setEyePoint(eyePoint);\r\n camera.setFocusDistance(focusDistance);\r\n }\r\n\r\n /** @internal */\r\n public getTerrainHeightRange(): Range1d | undefined {\r\n const frustum = this.getFrustum()!;\r\n const cartoRange = Range2d.createNull();\r\n for (let i = 0; i < 8; i++) {\r\n const corner = frustum.getCorner(i);\r\n const carto = this.view.iModel.spatialToCartographicFromEcef(corner);\r\n cartoRange.extendXY(carto.longitude, carto.latitude);\r\n }\r\n\r\n return ApproximateTerrainHeights.instance.getMinimumMaximumHeights(cartoRange);\r\n }\r\n\r\n private static _minDepth = 1; // Allowing very small depth will cause frustum calculations to fail.\r\n\r\n /** Adjust the front and back planes to encompass the entire viewed volume */\r\n private adjustZPlanes(origin: Point3d, delta: Vector3d): void {\r\n const view = this.view;\r\n if (!view.is3d()) // only necessary for 3d views\r\n return;\r\n\r\n delta.z = Math.max(delta.z, ViewingSpace._minDepth);\r\n\r\n const extents = view.getViewedExtents();\r\n const frustum = new Frustum();\r\n const worldToNpc = this.view.computeWorldToNpc(this.rotation, this.viewOrigin, this.viewDelta, false).map as Map4d;\r\n\r\n if (worldToNpc === undefined)\r\n return;\r\n\r\n worldToNpc.transform1.multiplyPoint3dArrayQuietNormalize(frustum.points);\r\n const clipPlanes = frustum.getRangePlanes(false, false, 0);\r\n const viewedExtentCorners = extents.corners();\r\n\r\n // Only extend depth to include viewed geometry if it is within the frustum. (if viewing global locations).\r\n if (clipPlanes.classifyPointContainment(viewedExtentCorners, false) === ClipPlaneContainment.StronglyOutside)\r\n extents.setNull();\r\n\r\n let depthRange;\r\n let gridPlane;\r\n if (this.view.viewFlags.grid) {\r\n const gridOrigin = this.view.isSpatialView() ? this.view.iModel.globalOrigin : Point3d.create();\r\n switch(this.view.getGridOrientation()) {\r\n case GridOrientationType.WorldXY:\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, Vector3d.create(0, 0, 1));\r\n break;\r\n case GridOrientationType.WorldYZ:\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, Vector3d.create(1, 0, 0));\r\n break;\r\n case GridOrientationType.WorldXZ:\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, Vector3d.create(0, 1, 0));\r\n break;\r\n\r\n case GridOrientationType.AuxCoord:\r\n if (this.view.auxiliaryCoordinateSystem)\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, this.view.auxiliaryCoordinateSystem.getRotation().rowZ());\r\n\r\n break;\r\n }\r\n }\r\n const globalGeometry = this.view.displayStyle.getGlobalGeometryAndHeightRange();\r\n if (undefined !== globalGeometry) {\r\n const viewZ = this.rotation.getRow(2);\r\n const eyeDepth = this.eyePoint ? viewZ.dotProduct(this.eyePoint) : undefined;\r\n\r\n depthRange = globalGeometry.geometry.getFrustumIntersectionDepthRange(frustum, globalGeometry.heightRange, gridPlane, this.view.maxGlobalScopeFactor > 1);\r\n\r\n if (eyeDepth !== undefined) {\r\n const maxBackgroundFrontBackRatio = 1.0E6;\r\n const frontDist = Math.max(.1, eyeDepth - depthRange.high);\r\n const backDist = eyeDepth - depthRange.low;\r\n if (backDist / frontDist > maxBackgroundFrontBackRatio)\r\n depthRange.high = eyeDepth - backDist / maxBackgroundFrontBackRatio;\r\n }\r\n } else\r\n depthRange = gridPlane ? getFrustumPlaneIntersectionDepthRange(frustum, gridPlane) : Range1d.createNull();\r\n\r\n if (!extents.isNull) {\r\n const viewZ = this.rotation.getRow(2);\r\n const corners = extents.corners();\r\n for (const corner of corners)\r\n depthRange.extendX(viewZ.dotProduct(corner));\r\n }\r\n\r\n if (depthRange.isNull)\r\n return;\r\n\r\n this.rotation.multiplyVectorInPlace(origin); // put origin in view coordinates\r\n origin.z = depthRange.low; // set origin to back of viewed extents\r\n delta.z = Math.max(depthRange.high - depthRange.low, ViewingSpace._minDepth); // and delta to front of viewed extents\r\n this.rotation.multiplyTransposeVectorInPlace(origin);\r\n\r\n if (!view.isCameraOn)\r\n return;\r\n\r\n // if the camera is on, we need to make sure that the viewed volume is not behind the eye\r\n const eyeOrg = this.eyePoint!.minus(origin);\r\n this.rotation.multiplyVectorInPlace(eyeOrg);\r\n\r\n // if the distance from the eye to origin in less than 1 meter, move the origin away from the eye. Usually, this means\r\n // that the camera is outside the viewed extents and pointed away from it. There's nothing to see anyway.\r\n if (eyeOrg.z < 1.0) {\r\n this.rotation.multiplyVectorInPlace(origin);\r\n origin.z -= (2.0 - eyeOrg.z);\r\n this.rotation.multiplyTransposeVectorInPlace(origin);\r\n delta.z = 1.0;\r\n return;\r\n }\r\n\r\n // if part of the viewed extents are behind the eye, don't include that.\r\n if (delta.z > eyeOrg.z)\r\n delta.z = eyeOrg.z;\r\n }\r\n\r\n /* get the mapping from NPC to view\r\n * @internal\r\n */\r\n public calcNpcToView(): Map4d {\r\n const corners = this.getViewCorners();\r\n const map = Map4d.createBoxMap(NpcCorners[Npc._000], NpcCorners[Npc._111], corners.low, corners.high);\r\n\r\n // The map may be undefined if the view rect's width or height is zero.\r\n return undefined === map ? Map4d.createIdentity() : map;\r\n }\r\n\r\n /* Get the extents of this view, in ViewCoordinates, as a Range3d */\r\n public getViewCorners(): Range3d {\r\n const corners = this._viewCorners;\r\n const viewRect = this._viewRect;\r\n corners.high.x = viewRect.right;\r\n corners.low.y = viewRect.bottom; // y's are swapped on the screen!\r\n corners.low.x = 0;\r\n corners.high.y = 0;\r\n corners.low.z = -32767;\r\n corners.high.z = 32767;\r\n return corners;\r\n }\r\n\r\n private constructor(vp: Viewport) {\r\n const view = this._view = vp.view;\r\n const viewRect = vp.viewRect;\r\n this._clientWidth = viewRect.width;\r\n this._clientHeight = viewRect.height;\r\n const origin = view.getOrigin().clone();\r\n const delta = view.getExtents().clone();\r\n this.rotation.setFrom(view.getRotation());\r\n\r\n // first, make sure none of the deltas are negative\r\n delta.x = Math.abs(delta.x);\r\n delta.y = Math.abs(delta.y);\r\n delta.z = Math.abs(delta.z);\r\n\r\n this.viewOriginUnexpanded.setFrom(origin);\r\n this.viewDeltaUnexpanded.setFrom(delta);\r\n this.viewOrigin.setFrom(origin);\r\n this.viewDelta.setFrom(delta);\r\n this.zClipAdjusted = false;\r\n this.eyePoint = undefined;\r\n\r\n if (view.is3d()) {\r\n if (!view.allow3dManipulations()) {\r\n // we're in a \"2d\" view of a physical model. That means that we must have our orientation with z out of the screen with z=0 at the center.\r\n this.alignWithRootZ(); // make sure we're in a z Up view\r\n\r\n const extents = view.getViewedExtents();\r\n if (extents.isNull) {\r\n extents.low.z = Frustum2d.minimumZExtents.low;\r\n extents.high.z = Frustum2d.minimumZExtents.high;\r\n }\r\n\r\n let zMax = Math.max(Math.abs(extents.low.z), Math.abs(extents.high.z));\r\n zMax = Math.max(zMax, 1.0); // make sure we have at least +-1m. Data may be purely planar\r\n delta.z = 2.0 * zMax;\r\n origin.z = -zMax;\r\n } else {\r\n if (view.isCameraOn)\r\n this.validateCamera();\r\n\r\n if (view.isCameraOn)\r\n this.eyePoint = view.camera.getEyePoint().clone();\r\n\r\n this.adjustZPlanes(origin, delta); // make sure view volume includes entire volume of view\r\n\r\n // if the camera is on, don't allow front plane behind camera\r\n if (this.eyePoint) {\r\n const eyeOrg = this.eyePoint.minus(origin); // vector from eye to origin\r\n this.toViewOrientation(eyeOrg);\r\n\r\n const frontDist = eyeOrg.z - delta.z; // front distance is backDist - delta.z\r\n\r\n // allow ViewState to specify a minimum front dist, but in no case less than 6 inches\r\n const minFrontDist = Math.max(15.2 * Constant.oneCentimeter, view.forceMinFrontDist);\r\n if (frontDist < minFrontDist) {\r\n // camera is too close to front plane, move origin away from eye to maintain a minimum front distance.\r\n this.toViewOrientation(origin);\r\n origin.z -= (minFrontDist - frontDist);\r\n this.fromViewOrientation(origin);\r\n }\r\n }\r\n\r\n // if we moved the z planes, set the \"zClipAdjusted\" flag.\r\n if (!origin.isExactEqual(this.viewOriginUnexpanded) || !delta.isExactEqual(this.viewDeltaUnexpanded))\r\n this.zClipAdjusted = true;\r\n }\r\n } else { // 2d viewport\r\n this.alignWithRootZ();\r\n }\r\n\r\n this.viewOrigin.setFrom(origin);\r\n this.viewDelta.setFrom(delta);\r\n\r\n const newRootToNpc = this.view.computeWorldToNpc(this.rotation, origin, delta, !this.view.displayStyle.getIsBackgroundMapVisible() /* if displaying background map, don't enforce front/back ratio as no Z-Buffer */);\r\n if (newRootToNpc.map === undefined) {\r\n this.frustFraction = 0; // invalid frustum\r\n return;\r\n }\r\n\r\n this.worldToNpcMap.setFrom(newRootToNpc.map);\r\n this.frustFraction = newRootToNpc.frustFraction;\r\n this.worldToViewMap.setFrom(this.calcNpcToView().multiplyMapMap(this.worldToNpcMap));\r\n }\r\n\r\n /** Create from a Viewport. */\r\n public static createFromViewport(vp: Viewport): ViewingSpace | undefined {\r\n return new ViewingSpace(vp);\r\n }\r\n\r\n /** Convert an array of points from CoordSystem.View to CoordSystem.Npc */\r\n public viewToNpcArray(pts: Point3d[]): void {\r\n const corners = this.getViewCorners();\r\n const scrToNpcTran = Transform.createIdentity();\r\n Transform.initFromRange(corners.low, corners.high, undefined, scrToNpcTran);\r\n scrToNpcTran.multiplyPoint3dArrayInPlace(pts);\r\n }\r\n\r\n /** Convert an array of points from CoordSystem.Npc to CoordSystem.View */\r\n public npcToViewArray(pts: Point3d[]): void {\r\n const corners = this.getViewCorners();\r\n for (const p of pts)\r\n corners.fractionToPoint(p.x, p.y, p.z, p);\r\n }\r\n\r\n /** Convert a point from CoordSystem.View to CoordSystem.Npc\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public viewToNpc(pt: Point3d, out?: Point3d): Point3d {\r\n const corners = this.getViewCorners();\r\n const scrToNpcTran = Transform.createIdentity();\r\n Transform.initFromRange(corners.low, corners.high, undefined, scrToNpcTran);\r\n return scrToNpcTran.multiplyPoint3d(pt, out);\r\n }\r\n\r\n /** Convert a point from CoordSystem.Npc to CoordSystem.View\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public npcToView(pt: Point3d, out?: Point3d): Point3d {\r\n const corners = this.getViewCorners();\r\n return corners.fractionToPoint(pt.x, pt.y, pt.z, out);\r\n }\r\n\r\n /** Convert an array of points from CoordSystem.World to CoordSystem.Npc */\r\n public worldToNpcArray(pts: Point3d[]): void { this.worldToNpcMap.transform0.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.Npc to CoordSystem.World */\r\n public npcToWorldArray(pts: Point3d[]): void { this.worldToNpcMap.transform1.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.World to CoordSystem.View */\r\n public worldToViewArray(pts: Point3d[]): void { this.worldToViewMap.transform0.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.World to CoordSystem.View, as Point4ds */\r\n public worldToView4dArray(worldPts: Point3d[], viewPts: Point4d[]): void { this.worldToViewMap.transform0.multiplyPoint3dArray(worldPts, viewPts); }\r\n /** Convert an array of points from CoordSystem.View to CoordSystem.World */\r\n public viewToWorldArray(pts: Point3d[]) { this.worldToViewMap.transform1.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.View as Point4ds to CoordSystem.World */\r\n public view4dToWorldArray(viewPts: Point4d[], worldPts: Point3d[]): void { this.worldToViewMap.transform1.multiplyPoint4dArrayQuietRenormalize(viewPts, worldPts); }\r\n\r\n /**\r\n * Convert a point from CoordSystem.World to CoordSystem.Npc\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public worldToNpc(pt: XYAndZ, out?: Point3d): Point3d { return this.worldToNpcMap.transform0.multiplyPoint3dQuietNormalize(pt, out); }\r\n /**\r\n * Convert a point from CoordSystem.Npc to CoordSystem.World\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public npcToWorld(pt: XYAndZ, out?: Point3d): Point3d { return this.worldToNpcMap.transform1.multiplyPoint3dQuietNormalize(pt, out); }\r\n /**\r\n * Convert a point from CoordSystem.World to CoordSystem.View\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public worldToView(input: XYAndZ, out?: Point3d): Point3d { return this.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(input, out); }\r\n /**\r\n * Convert a point from CoordSystem.World to CoordSystem.View as Point4d\r\n * @param input the point to convert\r\n * @param out optional location for result. If undefined, a new Point4d is created.\r\n */\r\n public worldToView4d(input: XYAndZ, out?: Point4d): Point4d { return this.worldToViewMap.transform0.multiplyPoint3d(input, 1.0, out); }\r\n /**\r\n * Convert a point from CoordSystem.View to CoordSystem.World\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public viewToWorld(input: XYAndZ, out?: Point3d): Point3d { return this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(input, out); }\r\n /**\r\n * Convert a point from CoordSystem.View as a Point4d to CoordSystem.View\r\n * @param input the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public view4dToWorld(input: Point4d, out?: Point3d): Point3d { return this.worldToViewMap.transform1.multiplyXYZWQuietRenormalize(input.x, input.y, input.z, input.w, out); }\r\n\r\n /** Get an 8-point Frustum corresponding to the 8 corners of the Viewport in the specified coordinate system.\r\n *\r\n * There are two sets of corners that may be of interest.\r\n * The \"adjusted\" box is the one that is computed by examining the \"viewed extents\" and moving\r\n * the front and back planes to enclose everything in the view.\r\n * The \"unadjusted\" box is the one that is stored in the ViewState.\r\n * @param sys Coordinate system for points\r\n * @param adjustedBox If true, retrieve the adjusted box. Otherwise retrieve the box that came from the view definition.\r\n * @param box optional Frustum for return value\r\n * @return the view frustum\r\n * @note The \"adjusted\" box may be either larger or smaller than the \"unadjusted\" box.\r\n */\r\n public getFrustum(sys: CoordSystem = CoordSystem.World, adjustedBox: boolean = true, box?: Frustum): Frustum {\r\n box = box ? box.initNpc() : new Frustum();\r\n\r\n // if they are looking for the \"unexpanded\" (that is before f/b clipping expansion) box, we need to get the npc\r\n // coordinates that correspond to the unexpanded box in the npc space of the Expanded view (that's the basis for all\r\n // of the root-based maps.)\r\n if (!adjustedBox && this.zClipAdjusted) {\r\n // to get unexpanded box, we have to go recompute rootToNpc from original View.\r\n const ueRootToNpc = this.view.computeWorldToNpc(this.rotation, this.viewOriginUnexpanded, this.viewDeltaUnexpanded);\r\n if (undefined === ueRootToNpc.map)\r\n return box; // invalid frustum\r\n\r\n // get the root corners of the unexpanded box\r\n const ueRootBox = new Frustum();\r\n ueRootToNpc.map.transform1.multiplyPoint3dArrayQuietNormalize(ueRootBox.points);\r\n\r\n // and convert them to npc coordinates of the expanded view\r\n this.worldToNpcArray(ueRootBox.points);\r\n box.setFrom(ueRootBox);\r\n }\r\n\r\n // now convert from NPC space to the specified coordinate system.\r\n switch (sys) {\r\n case CoordSystem.View:\r\n this.npcToViewArray(box.points);\r\n break;\r\n\r\n case CoordSystem.World:\r\n this.npcToWorldArray(box.points);\r\n break;\r\n }\r\n return box;\r\n }\r\n\r\n /** @internal */\r\n public getPixelSizeAtPoint(inPoint?: Point3d) {\r\n const viewPt = !!inPoint ? this.worldToView(inPoint) : this.npcToView(new Point3d(0.5, 0.5, 0.5));\r\n const viewPt2 = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n return this.viewToWorld(viewPt).distance(this.viewToWorld(viewPt2));\r\n }\r\n\r\n /** @internal */\r\n public getPreloadFrustum(transformOrScale?: Transform | number, result?: Frustum) {\r\n const viewFrustum = this.getFrustum(CoordSystem.World, true);\r\n\r\n if (transformOrScale && transformOrScale instanceof Transform) {\r\n return viewFrustum.transformBy(transformOrScale, result);\r\n } else {\r\n const scale = transformOrScale === undefined ? 2 : transformOrScale;\r\n const expandedFrustum = viewFrustum.clone(result);\r\n expandedFrustum.scaleXYAboutCenter(scale);\r\n return expandedFrustum;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ViewingSpace.js","sourceRoot":"","sources":["../../src/ViewingSpace.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EACL,SAAS,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAW,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,GAC3J,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qCAAqC,EAAE,MAAM,yBAAyB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAmOvB,YAAoB,EAAY;QAlOf,eAAU,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAC,mBAAmB;QAChD,iBAAY,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC,mBAAmB;QAElE,gBAAgB;QACT,kBAAa,GAAG,GAAG,CAAC;QAS3B,wCAAwC;QACxB,eAAU,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3C,uCAAuC;QACvB,cAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3C,+CAA+C;QAC/B,yBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;QACrD,8CAA8C;QAC9B,wBAAmB,GAAG,IAAI,QAAQ,EAAE,CAAC;QACrD,mDAAmD;QACnC,aAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1C,+DAA+D;QAC/C,mBAAc,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACxD,6FAA6F;QAC7E,kBAAa,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACvD,gBAAgB;QACA,kBAAa,GAAY,KAAK,CAAC,CAAI,uEAAuE;QAuMxH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAE1C,mDAAmD;QACnD,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAE1B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAChC,0IAA0I;gBAC1I,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,iCAAiC;gBAExD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxC,IAAI,OAAO,CAAC,MAAM,EAAE;oBAClB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC;iBACjD;gBAED,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,6DAA6D;gBACzF,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;gBACrB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;aAClB;iBAAM;gBACL,IAAI,IAAI,CAAC,UAAU;oBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;gBAExB,IAAI,IAAI,CAAC,UAAU;oBACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;gBAEpD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,uDAAuD;gBAE1F,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B;oBACxE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,uCAAuC;oBAE7E,qFAAqF;oBACrF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACrF,IAAI,SAAS,GAAG,YAAY,EAAE;wBAC5B,sGAAsG;wBACtG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;wBAC/B,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;wBACvC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;qBAClC;iBACF;gBAED,0DAA0D;gBAC1D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;oBAClG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;SACF;aAAM,EAAE,cAAc;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,CAAC,iFAAiF,CAAC,CAAC;QACtN,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,kBAAkB;YAC1C,OAAO;SACR;QAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvF,CAAC;IAlRD,sCAAsC;IACtC,IAAW,IAAI,KAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,IAAW,IAAI,CAAC,IAAe,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IAKvD,6DAA6D;IAC7D,IAAY,SAAS,KAAe,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAExH,MAAM,CAAC,WAAW,CAAC,IAAS,EAAE,EAAQ,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,EAAE,GAAG,EAAE,CAAC;KAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEpH,gBAAgB;IACT,iBAAiB,CAAC,IAAS,EAAE,EAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1H,gBAAgB;IACT,mBAAmB,CAAC,IAAS,EAAE,EAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErI,0GAA0G;IAClG,cAAc;QACpB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzC,OAAO;QACT,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpB,QAAQ,CAAC,uBAAuB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,0DAA0D;IAClG,CAAC;IAEO,cAAc;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,YAAY;YACrB,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,aAAa,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QAErF,IAAI,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG;YAChC,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QAE/F,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IACT,qBAAqB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAG,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;YACrE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SACtD;QAED,OAAO,yBAAyB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACjF,CAAC;IAID,6EAA6E;IACrE,aAAa,CAAC,MAAe,EAAE,KAAe;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,8BAA8B;YAC9C,OAAO;QAET,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAY,CAAC;QAEnH,IAAI,UAAU,KAAK,SAAS;YAC1B,OAAO;QAET,UAAU,CAAC,UAAU,CAAC,kCAAkC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAE9C,2GAA2G;QAC3G,IAAI,UAAU,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,KAAK,CAAC,KAAK,oBAAoB,CAAC,eAAe;YAC1G,OAAO,CAAC,OAAO,EAAE,CAAC;QAEpB,IAAI,UAAU,CAAC;QACf,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAChG,QAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBACrC,KAAK,mBAAmB,CAAC,OAAO;oBAC9B,SAAS,GAAG,4BAA4B,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM;gBACR,KAAK,mBAAmB,CAAC,OAAO;oBAC9B,SAAS,GAAG,4BAA4B,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM;gBACR,KAAK,mBAAmB,CAAC,OAAO;oBAC9B,SAAS,GAAG,4BAA4B,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM;gBAER,KAAK,mBAAmB,CAAC,QAAQ;oBAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,yBAAyB;wBACrC,SAAS,GAAG,4BAA4B,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBAExH,MAAM;aACT;SACF;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE,CAAC;QAChF,IAAI,SAAS,KAAK,cAAc,EAAE;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE7E,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;YAEnK,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,MAAM,2BAA2B,GAAG,KAAK,CAAC;gBAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC3C,IAAI,QAAQ,GAAG,SAAS,GAAG,2BAA2B;oBACpD,UAAU,CAAC,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,2BAA2B,CAAC;aACvE;SACF;;YACC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,qCAAqC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAE7G,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,MAAM,IAAI,OAAO;gBAC1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;SAChD;QAED,IAAI,UAAU,CAAC,MAAM;YACnB,OAAO;QAET,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAO,iCAAiC;QACpF,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAA0B,uCAAuC;QAC3F,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,uCAAuC;QACrH,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,OAAO;QAET,yFAAyF;QACzF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAE5C,sHAAsH;QACtH,yGAAyG;QACzG,IAAI,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;YACrD,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACd,OAAO;SACR;QAED,wEAAwE;QACxE,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YACpB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtG,uEAAuE;QACvE,OAAO,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,CAAC;IAED,oEAAoE;IAC7D,cAAc;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAI,iCAAiC;QACrE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,OAAO,OAAO,CAAC;IACjB,CAAC;IAsFD,8BAA8B;IACvB,MAAM,CAAC,kBAAkB,CAAC,EAAY;QAC3C,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,0EAA0E;IACnE,cAAc,CAAC,GAAc;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAChD,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC5E,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,0EAA0E;IACnE,cAAc,CAAC,GAAc;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,GAAG;YACjB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,EAAW,EAAE,GAAa;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAChD,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC5E,OAAO,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,EAAW,EAAE,GAAa;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,2EAA2E;IACpE,eAAe,CAAC,GAAc,IAAU,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvH,2EAA2E;IACpE,eAAe,CAAC,GAAc,IAAU,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvH,4EAA4E;IACrE,gBAAgB,CAAC,GAAc,IAAU,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzH,yFAAyF;IAClF,kBAAkB,CAAC,QAAmB,EAAE,OAAkB,IAAU,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpJ,4EAA4E;IACrE,gBAAgB,CAAC,GAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnH,wFAAwF;IACjF,kBAAkB,CAAC,OAAkB,EAAE,QAAmB,IAAU,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,oCAAoC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpK;;;;OAIG;IACI,UAAU,CAAC,EAAU,EAAE,GAAa,IAAa,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtI;;;;OAIG;IACI,UAAU,CAAC,EAAU,EAAE,GAAa,IAAa,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtI;;;;OAIG;IACI,WAAW,CAAC,KAAa,EAAE,GAAa,IAAa,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9I;;;;OAIG;IACI,aAAa,CAAC,KAAa,EAAE,GAAa,IAAa,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvI;;;;OAIG;IACI,WAAW,CAAC,KAAa,EAAE,GAAa,IAAa,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,6BAA6B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9I;;;;OAIG;IACI,aAAa,CAAC,KAAc,EAAE,GAAa,IAAa,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAE7K;;;;;;;;;;;OAWG;IACI,UAAU,CAAC,MAAmB,WAAW,CAAC,KAAK,EAAE,cAAuB,IAAI,EAAE,GAAa;QAChG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAE1C,+GAA+G;QAC/G,oHAAoH;QACpH,2BAA2B;QAC3B,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE;YACtC,+EAA+E;YAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpH,IAAI,SAAS,KAAK,WAAW,CAAC,GAAG;gBAC/B,OAAO,GAAG,CAAC,CAAC,kBAAkB;YAEhC,6CAA6C;YAC7C,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;YAChC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,kCAAkC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAEhF,2DAA2D;YAC3D,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACxB;QAED,iEAAiE;QACjE,QAAQ,GAAG,EAAE;YACX,KAAK,WAAW,CAAC,IAAI;gBACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,WAAW,CAAC,KAAK;gBACpB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM;SACT;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IACT,mBAAmB,CAAC,OAAiB;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAClG,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,gBAAqC,EAAE,MAAgB;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,gBAAgB,IAAI,gBAAgB,YAAY,SAAS,EAAE;YAC7D,OAAO,WAAW,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;SAC1D;aAAM;YACL,MAAM,KAAK,GAAG,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACpE,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,eAAe,CAAC;SACxB;IACH,CAAC;;AA5cD;;GAEG;AACW,8BAAiB,GAAG,MAAM,CAAC;AACzC;;GAEG;AACW,2BAAc,GAAG,MAAM,CAAC;AAyFvB,sBAAS,GAAG,CAAC,CAAC,CAAC,qEAAqE","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Views\r\n */\r\n\r\nimport {\r\n AxisOrder, ClipPlaneContainment, Constant, Map4d, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Point4d, Range1d, Range2d, Range3d, Transform, Vector3d, XYAndZ, XYZ,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, GridOrientationType, Npc, NpcCorners } from \"@itwin/core-common\";\r\nimport { ApproximateTerrainHeights } from \"./ApproximateTerrainHeights\";\r\nimport { CoordSystem } from \"./CoordSystem\";\r\nimport { Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\nimport { ViewState } from \"./ViewState\";\r\nimport { Frustum2d } from \"./Frustum2d\";\r\nimport { getFrustumPlaneIntersectionDepthRange } from \"./BackgroundMapGeometry\";\r\n\r\n/** Describes a [[Viewport]]'s viewing volume, plus its size on the screen. A new\r\n * instance of ViewingSpace is created every time the Viewport's frustum changes.\r\n * @see [[Viewport.viewingSpace]].\r\n * @public\r\n */\r\nexport class ViewingSpace {\r\n private readonly _viewRange = new ViewRect(); // scratch variable\r\n private readonly _viewCorners = new Range3d(); // scratch variable\r\n\r\n /** @internal */\r\n public frustFraction = 1.0;\r\n /** Maximum ratio of frontplane to backplane distance for 24 bit non-logarithmic zbuffer\r\n * @internal\r\n */\r\n public static nearScaleNonLog24 = 0.0003;\r\n /** Maximum fraction of frontplane to backplane distance for 24 bit logarithmic zbuffer\r\n * @internal\r\n */\r\n public static nearScaleLog24 = 1.0E-8;\r\n /** View origin, potentially expanded */\r\n public readonly viewOrigin = new Point3d();\r\n /** View delta, potentially expanded */\r\n public readonly viewDelta = new Vector3d();\r\n /** View origin (from ViewState, unexpanded) */\r\n public readonly viewOriginUnexpanded = new Point3d();\r\n /** View delta (from ViewState, unexpanded) */\r\n public readonly viewDeltaUnexpanded = new Vector3d();\r\n /** View rotation matrix (copied from ViewState) */\r\n public readonly rotation = new Matrix3d();\r\n /** Provides conversions between world and view coordinates. */\r\n public readonly worldToViewMap = Map4d.createIdentity();\r\n /** Providers conversions between world and Npc (non-dimensional perspective) coordinates. */\r\n public readonly worldToNpcMap = Map4d.createIdentity();\r\n /** @internal */\r\n public readonly zClipAdjusted: boolean = false; // were the view z clip planes adjusted due to front/back clipping off?\r\n /** Eye point - undefined if not a perspective projection. */\r\n public readonly eyePoint: Point3d | undefined;\r\n\r\n private _view: ViewState;\r\n\r\n /** The ViewState for this Viewport */\r\n public get view(): ViewState { return this._view; }\r\n public set view(view: ViewState) { this._view = view; }\r\n\r\n private readonly _clientWidth: number;\r\n private readonly _clientHeight: number;\r\n\r\n /** Get the rectangle of this Viewport in ViewCoordinates. */\r\n private get _viewRect(): ViewRect { this._viewRange.init(0, 0, this._clientWidth, this._clientHeight); return this._viewRange; }\r\n\r\n private static _copyOutput(from: XYZ, to?: XYZ) { let pt = from; if (to) { to.setFrom(from); pt = to; } return pt; }\r\n\r\n /** @internal */\r\n public toViewOrientation(from: XYZ, to?: XYZ) { this.rotation.multiplyVectorInPlace(ViewingSpace._copyOutput(from, to)); }\r\n /** @internal */\r\n public fromViewOrientation(from: XYZ, to?: XYZ) { this.rotation.multiplyTransposeVectorInPlace(ViewingSpace._copyOutput(from, to)); }\r\n\r\n /** Ensure the rotation matrix for this view is aligns the root z with the view out (i.e. a \"2d view\"). */\r\n private alignWithRootZ() {\r\n const zUp = Vector3d.unitZ();\r\n if (zUp.isAlmostEqual(this.rotation.rowZ()))\r\n return;\r\n const r = this.rotation.transpose();\r\n r.setColumn(2, zUp);\r\n Matrix3d.createRigidFromMatrix3d(r, AxisOrder.ZXY, r);\r\n r.transpose(this.rotation);\r\n this.view.setRotation(this.rotation); // Don't let viewState and viewport rotation be different.\r\n }\r\n\r\n private validateCamera() {\r\n const view = this.view;\r\n if (!view.is3d())\r\n return;\r\n\r\n const camera = view.camera;\r\n camera.validateLens();\r\n if (camera.isFocusValid)\r\n return;\r\n\r\n const vDelta = view.getExtents();\r\n const maxDelta = vDelta.x > vDelta.y ? vDelta.x : vDelta.y;\r\n let focusDistance = maxDelta / (2.0 * Math.tan(camera.getLensAngle().radians / 2.0));\r\n\r\n if (focusDistance < vDelta.z / 2.0)\r\n focusDistance = vDelta.z / 2.0;\r\n\r\n const eyePoint = new Point3d(vDelta.x / 2.0, vDelta.y / 2.0, (vDelta.z / 2.0) + focusDistance);\r\n\r\n this.fromViewOrientation(eyePoint);\r\n eyePoint.plus(view.getOrigin(), eyePoint);\r\n camera.setEyePoint(eyePoint);\r\n camera.setFocusDistance(focusDistance);\r\n }\r\n\r\n /** @internal */\r\n public getTerrainHeightRange(): Range1d | undefined {\r\n const frustum = this.getFrustum()!;\r\n const cartoRange = Range2d.createNull();\r\n for (let i = 0; i < 8; i++) {\r\n const corner = frustum.getCorner(i);\r\n const carto = this.view.iModel.spatialToCartographicFromEcef(corner);\r\n cartoRange.extendXY(carto.longitude, carto.latitude);\r\n }\r\n\r\n return ApproximateTerrainHeights.instance.getMinimumMaximumHeights(cartoRange);\r\n }\r\n\r\n private static _minDepth = 1; // Allowing very small depth will cause frustum calculations to fail.\r\n\r\n /** Adjust the front and back planes to encompass the entire viewed volume */\r\n private adjustZPlanes(origin: Point3d, delta: Vector3d): void {\r\n const view = this.view;\r\n if (!view.is3d()) // only necessary for 3d views\r\n return;\r\n\r\n delta.z = Math.max(delta.z, ViewingSpace._minDepth);\r\n\r\n const extents = view.getViewedExtents();\r\n const frustum = new Frustum();\r\n const worldToNpc = this.view.computeWorldToNpc(this.rotation, this.viewOrigin, this.viewDelta, false).map as Map4d;\r\n\r\n if (worldToNpc === undefined)\r\n return;\r\n\r\n worldToNpc.transform1.multiplyPoint3dArrayQuietNormalize(frustum.points);\r\n const clipPlanes = frustum.getRangePlanes(false, false, 0);\r\n const viewedExtentCorners = extents.corners();\r\n\r\n // Only extend depth to include viewed geometry if it is within the frustum. (if viewing global locations).\r\n if (clipPlanes.classifyPointContainment(viewedExtentCorners, false) === ClipPlaneContainment.StronglyOutside)\r\n extents.setNull();\r\n\r\n let depthRange;\r\n let gridPlane;\r\n if (this.view.viewFlags.grid) {\r\n const gridOrigin = this.view.isSpatialView() ? this.view.iModel.globalOrigin : Point3d.create();\r\n switch(this.view.getGridOrientation()) {\r\n case GridOrientationType.WorldXY:\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, Vector3d.create(0, 0, 1));\r\n break;\r\n case GridOrientationType.WorldYZ:\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, Vector3d.create(1, 0, 0));\r\n break;\r\n case GridOrientationType.WorldXZ:\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, Vector3d.create(0, 1, 0));\r\n break;\r\n\r\n case GridOrientationType.AuxCoord:\r\n if (this.view.auxiliaryCoordinateSystem)\r\n gridPlane = Plane3dByOriginAndUnitNormal.create(gridOrigin, this.view.auxiliaryCoordinateSystem.getRotation().rowZ());\r\n\r\n break;\r\n }\r\n }\r\n const globalGeometry = this.view.displayStyle.getGlobalGeometryAndHeightRange();\r\n if (undefined !== globalGeometry) {\r\n const viewZ = this.rotation.getRow(2);\r\n const eyeDepth = this.eyePoint ? viewZ.dotProduct(this.eyePoint) : undefined;\r\n\r\n depthRange = globalGeometry.geometry.getFrustumIntersectionDepthRange(frustum, extents, globalGeometry.heightRange, gridPlane, this.view.maxGlobalScopeFactor > 1);\r\n\r\n if (eyeDepth !== undefined) {\r\n const maxBackgroundFrontBackRatio = 1.0E6;\r\n const frontDist = Math.max(.1, eyeDepth - depthRange.high);\r\n const backDist = eyeDepth - depthRange.low;\r\n if (backDist / frontDist > maxBackgroundFrontBackRatio)\r\n depthRange.high = eyeDepth - backDist / maxBackgroundFrontBackRatio;\r\n }\r\n } else\r\n depthRange = gridPlane ? getFrustumPlaneIntersectionDepthRange(frustum, gridPlane) : Range1d.createNull();\r\n\r\n if (!extents.isNull) {\r\n const viewZ = this.rotation.getRow(2);\r\n const corners = extents.corners();\r\n for (const corner of corners)\r\n depthRange.extendX(viewZ.dotProduct(corner));\r\n }\r\n\r\n if (depthRange.isNull)\r\n return;\r\n\r\n this.rotation.multiplyVectorInPlace(origin); // put origin in view coordinates\r\n origin.z = depthRange.low; // set origin to back of viewed extents\r\n delta.z = Math.max(depthRange.high - depthRange.low, ViewingSpace._minDepth); // and delta to front of viewed extents\r\n this.rotation.multiplyTransposeVectorInPlace(origin);\r\n\r\n if (!view.isCameraOn)\r\n return;\r\n\r\n // if the camera is on, we need to make sure that the viewed volume is not behind the eye\r\n const eyeOrg = this.eyePoint!.minus(origin);\r\n this.rotation.multiplyVectorInPlace(eyeOrg);\r\n\r\n // if the distance from the eye to origin in less than 1 meter, move the origin away from the eye. Usually, this means\r\n // that the camera is outside the viewed extents and pointed away from it. There's nothing to see anyway.\r\n if (eyeOrg.z < 1.0) {\r\n this.rotation.multiplyVectorInPlace(origin);\r\n origin.z -= (2.0 - eyeOrg.z);\r\n this.rotation.multiplyTransposeVectorInPlace(origin);\r\n delta.z = 1.0;\r\n return;\r\n }\r\n\r\n // if part of the viewed extents are behind the eye, don't include that.\r\n if (delta.z > eyeOrg.z)\r\n delta.z = eyeOrg.z;\r\n }\r\n\r\n /* get the mapping from NPC to view\r\n * @internal\r\n */\r\n public calcNpcToView(): Map4d {\r\n const corners = this.getViewCorners();\r\n const map = Map4d.createBoxMap(NpcCorners[Npc._000], NpcCorners[Npc._111], corners.low, corners.high);\r\n\r\n // The map may be undefined if the view rect's width or height is zero.\r\n return undefined === map ? Map4d.createIdentity() : map;\r\n }\r\n\r\n /* Get the extents of this view, in ViewCoordinates, as a Range3d */\r\n public getViewCorners(): Range3d {\r\n const corners = this._viewCorners;\r\n const viewRect = this._viewRect;\r\n corners.high.x = viewRect.right;\r\n corners.low.y = viewRect.bottom; // y's are swapped on the screen!\r\n corners.low.x = 0;\r\n corners.high.y = 0;\r\n corners.low.z = -32767;\r\n corners.high.z = 32767;\r\n return corners;\r\n }\r\n\r\n private constructor(vp: Viewport) {\r\n const view = this._view = vp.view;\r\n const viewRect = vp.viewRect;\r\n this._clientWidth = viewRect.width;\r\n this._clientHeight = viewRect.height;\r\n const origin = view.getOrigin().clone();\r\n const delta = view.getExtents().clone();\r\n this.rotation.setFrom(view.getRotation());\r\n\r\n // first, make sure none of the deltas are negative\r\n delta.x = Math.abs(delta.x);\r\n delta.y = Math.abs(delta.y);\r\n delta.z = Math.abs(delta.z);\r\n\r\n this.viewOriginUnexpanded.setFrom(origin);\r\n this.viewDeltaUnexpanded.setFrom(delta);\r\n this.viewOrigin.setFrom(origin);\r\n this.viewDelta.setFrom(delta);\r\n this.zClipAdjusted = false;\r\n this.eyePoint = undefined;\r\n\r\n if (view.is3d()) {\r\n if (!view.allow3dManipulations()) {\r\n // we're in a \"2d\" view of a physical model. That means that we must have our orientation with z out of the screen with z=0 at the center.\r\n this.alignWithRootZ(); // make sure we're in a z Up view\r\n\r\n const extents = view.getViewedExtents();\r\n if (extents.isNull) {\r\n extents.low.z = Frustum2d.minimumZExtents.low;\r\n extents.high.z = Frustum2d.minimumZExtents.high;\r\n }\r\n\r\n let zMax = Math.max(Math.abs(extents.low.z), Math.abs(extents.high.z));\r\n zMax = Math.max(zMax, 1.0); // make sure we have at least +-1m. Data may be purely planar\r\n delta.z = 2.0 * zMax;\r\n origin.z = -zMax;\r\n } else {\r\n if (view.isCameraOn)\r\n this.validateCamera();\r\n\r\n if (view.isCameraOn)\r\n this.eyePoint = view.camera.getEyePoint().clone();\r\n\r\n this.adjustZPlanes(origin, delta); // make sure view volume includes entire volume of view\r\n\r\n // if the camera is on, don't allow front plane behind camera\r\n if (this.eyePoint) {\r\n const eyeOrg = this.eyePoint.minus(origin); // vector from eye to origin\r\n this.toViewOrientation(eyeOrg);\r\n\r\n const frontDist = eyeOrg.z - delta.z; // front distance is backDist - delta.z\r\n\r\n // allow ViewState to specify a minimum front dist, but in no case less than 6 inches\r\n const minFrontDist = Math.max(15.2 * Constant.oneCentimeter, view.forceMinFrontDist);\r\n if (frontDist < minFrontDist) {\r\n // camera is too close to front plane, move origin away from eye to maintain a minimum front distance.\r\n this.toViewOrientation(origin);\r\n origin.z -= (minFrontDist - frontDist);\r\n this.fromViewOrientation(origin);\r\n }\r\n }\r\n\r\n // if we moved the z planes, set the \"zClipAdjusted\" flag.\r\n if (!origin.isExactEqual(this.viewOriginUnexpanded) || !delta.isExactEqual(this.viewDeltaUnexpanded))\r\n this.zClipAdjusted = true;\r\n }\r\n } else { // 2d viewport\r\n this.alignWithRootZ();\r\n }\r\n\r\n this.viewOrigin.setFrom(origin);\r\n this.viewDelta.setFrom(delta);\r\n\r\n const newRootToNpc = this.view.computeWorldToNpc(this.rotation, origin, delta, !this.view.displayStyle.getIsBackgroundMapVisible() /* if displaying background map, don't enforce front/back ratio as no Z-Buffer */);\r\n if (newRootToNpc.map === undefined) {\r\n this.frustFraction = 0; // invalid frustum\r\n return;\r\n }\r\n\r\n this.worldToNpcMap.setFrom(newRootToNpc.map);\r\n this.frustFraction = newRootToNpc.frustFraction;\r\n this.worldToViewMap.setFrom(this.calcNpcToView().multiplyMapMap(this.worldToNpcMap));\r\n }\r\n\r\n /** Create from a Viewport. */\r\n public static createFromViewport(vp: Viewport): ViewingSpace | undefined {\r\n return new ViewingSpace(vp);\r\n }\r\n\r\n /** Convert an array of points from CoordSystem.View to CoordSystem.Npc */\r\n public viewToNpcArray(pts: Point3d[]): void {\r\n const corners = this.getViewCorners();\r\n const scrToNpcTran = Transform.createIdentity();\r\n Transform.initFromRange(corners.low, corners.high, undefined, scrToNpcTran);\r\n scrToNpcTran.multiplyPoint3dArrayInPlace(pts);\r\n }\r\n\r\n /** Convert an array of points from CoordSystem.Npc to CoordSystem.View */\r\n public npcToViewArray(pts: Point3d[]): void {\r\n const corners = this.getViewCorners();\r\n for (const p of pts)\r\n corners.fractionToPoint(p.x, p.y, p.z, p);\r\n }\r\n\r\n /** Convert a point from CoordSystem.View to CoordSystem.Npc\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public viewToNpc(pt: Point3d, out?: Point3d): Point3d {\r\n const corners = this.getViewCorners();\r\n const scrToNpcTran = Transform.createIdentity();\r\n Transform.initFromRange(corners.low, corners.high, undefined, scrToNpcTran);\r\n return scrToNpcTran.multiplyPoint3d(pt, out);\r\n }\r\n\r\n /** Convert a point from CoordSystem.Npc to CoordSystem.View\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public npcToView(pt: Point3d, out?: Point3d): Point3d {\r\n const corners = this.getViewCorners();\r\n return corners.fractionToPoint(pt.x, pt.y, pt.z, out);\r\n }\r\n\r\n /** Convert an array of points from CoordSystem.World to CoordSystem.Npc */\r\n public worldToNpcArray(pts: Point3d[]): void { this.worldToNpcMap.transform0.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.Npc to CoordSystem.World */\r\n public npcToWorldArray(pts: Point3d[]): void { this.worldToNpcMap.transform1.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.World to CoordSystem.View */\r\n public worldToViewArray(pts: Point3d[]): void { this.worldToViewMap.transform0.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.World to CoordSystem.View, as Point4ds */\r\n public worldToView4dArray(worldPts: Point3d[], viewPts: Point4d[]): void { this.worldToViewMap.transform0.multiplyPoint3dArray(worldPts, viewPts); }\r\n /** Convert an array of points from CoordSystem.View to CoordSystem.World */\r\n public viewToWorldArray(pts: Point3d[]) { this.worldToViewMap.transform1.multiplyPoint3dArrayQuietNormalize(pts); }\r\n /** Convert an array of points from CoordSystem.View as Point4ds to CoordSystem.World */\r\n public view4dToWorldArray(viewPts: Point4d[], worldPts: Point3d[]): void { this.worldToViewMap.transform1.multiplyPoint4dArrayQuietRenormalize(viewPts, worldPts); }\r\n\r\n /**\r\n * Convert a point from CoordSystem.World to CoordSystem.Npc\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public worldToNpc(pt: XYAndZ, out?: Point3d): Point3d { return this.worldToNpcMap.transform0.multiplyPoint3dQuietNormalize(pt, out); }\r\n /**\r\n * Convert a point from CoordSystem.Npc to CoordSystem.World\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public npcToWorld(pt: XYAndZ, out?: Point3d): Point3d { return this.worldToNpcMap.transform1.multiplyPoint3dQuietNormalize(pt, out); }\r\n /**\r\n * Convert a point from CoordSystem.World to CoordSystem.View\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public worldToView(input: XYAndZ, out?: Point3d): Point3d { return this.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(input, out); }\r\n /**\r\n * Convert a point from CoordSystem.World to CoordSystem.View as Point4d\r\n * @param input the point to convert\r\n * @param out optional location for result. If undefined, a new Point4d is created.\r\n */\r\n public worldToView4d(input: XYAndZ, out?: Point4d): Point4d { return this.worldToViewMap.transform0.multiplyPoint3d(input, 1.0, out); }\r\n /**\r\n * Convert a point from CoordSystem.View to CoordSystem.World\r\n * @param pt the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public viewToWorld(input: XYAndZ, out?: Point3d): Point3d { return this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(input, out); }\r\n /**\r\n * Convert a point from CoordSystem.View as a Point4d to CoordSystem.View\r\n * @param input the point to convert\r\n * @param out optional location for result. If undefined, a new Point3d is created.\r\n */\r\n public view4dToWorld(input: Point4d, out?: Point3d): Point3d { return this.worldToViewMap.transform1.multiplyXYZWQuietRenormalize(input.x, input.y, input.z, input.w, out); }\r\n\r\n /** Get an 8-point Frustum corresponding to the 8 corners of the Viewport in the specified coordinate system.\r\n *\r\n * There are two sets of corners that may be of interest.\r\n * The \"adjusted\" box is the one that is computed by examining the \"viewed extents\" and moving\r\n * the front and back planes to enclose everything in the view.\r\n * The \"unadjusted\" box is the one that is stored in the ViewState.\r\n * @param sys Coordinate system for points\r\n * @param adjustedBox If true, retrieve the adjusted box. Otherwise retrieve the box that came from the view definition.\r\n * @param box optional Frustum for return value\r\n * @return the view frustum\r\n * @note The \"adjusted\" box may be either larger or smaller than the \"unadjusted\" box.\r\n */\r\n public getFrustum(sys: CoordSystem = CoordSystem.World, adjustedBox: boolean = true, box?: Frustum): Frustum {\r\n box = box ? box.initNpc() : new Frustum();\r\n\r\n // if they are looking for the \"unexpanded\" (that is before f/b clipping expansion) box, we need to get the npc\r\n // coordinates that correspond to the unexpanded box in the npc space of the Expanded view (that's the basis for all\r\n // of the root-based maps.)\r\n if (!adjustedBox && this.zClipAdjusted) {\r\n // to get unexpanded box, we have to go recompute rootToNpc from original View.\r\n const ueRootToNpc = this.view.computeWorldToNpc(this.rotation, this.viewOriginUnexpanded, this.viewDeltaUnexpanded);\r\n if (undefined === ueRootToNpc.map)\r\n return box; // invalid frustum\r\n\r\n // get the root corners of the unexpanded box\r\n const ueRootBox = new Frustum();\r\n ueRootToNpc.map.transform1.multiplyPoint3dArrayQuietNormalize(ueRootBox.points);\r\n\r\n // and convert them to npc coordinates of the expanded view\r\n this.worldToNpcArray(ueRootBox.points);\r\n box.setFrom(ueRootBox);\r\n }\r\n\r\n // now convert from NPC space to the specified coordinate system.\r\n switch (sys) {\r\n case CoordSystem.View:\r\n this.npcToViewArray(box.points);\r\n break;\r\n\r\n case CoordSystem.World:\r\n this.npcToWorldArray(box.points);\r\n break;\r\n }\r\n return box;\r\n }\r\n\r\n /** @internal */\r\n public getPixelSizeAtPoint(inPoint?: Point3d) {\r\n const viewPt = !!inPoint ? this.worldToView(inPoint) : this.npcToView(new Point3d(0.5, 0.5, 0.5));\r\n const viewPt2 = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\r\n return this.viewToWorld(viewPt).distance(this.viewToWorld(viewPt2));\r\n }\r\n\r\n /** @internal */\r\n public getPreloadFrustum(transformOrScale?: Transform | number, result?: Frustum) {\r\n const viewFrustum = this.getFrustum(CoordSystem.World, true);\r\n\r\n if (transformOrScale && transformOrScale instanceof Transform) {\r\n return viewFrustum.transformBy(transformOrScale, result);\r\n } else {\r\n const scale = transformOrScale === undefined ? 2 : transformOrScale;\r\n const expandedFrustum = viewFrustum.clone(result);\r\n expandedFrustum.scaleXYAboutCenter(scale);\r\n return expandedFrustum;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -211,4 +211,8 @@ export * from "./RealityDataSource";
|
|
|
211
211
|
* APIs for working with user preferences in an iModelApp.
|
|
212
212
|
* See [the learning articles]($docs/learning/frontend/preferences.md).
|
|
213
213
|
*/
|
|
214
|
+
/**
|
|
215
|
+
* @docs-group-description MapLayers
|
|
216
|
+
* Classes supporting map layers display.
|
|
217
|
+
*/
|
|
214
218
|
//# sourceMappingURL=core-frontend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-frontend.d.ts","sourceRoot":"","sources":["../../src/core-frontend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core-frontend.d.ts","sourceRoot":"","sources":["../../src/core-frontend.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/core-frontend.js
CHANGED
|
@@ -215,4 +215,8 @@ export * from "./RealityDataSource";
|
|
|
215
215
|
* APIs for working with user preferences in an iModelApp.
|
|
216
216
|
* See [the learning articles]($docs/learning/frontend/preferences.md).
|
|
217
217
|
*/
|
|
218
|
+
/**
|
|
219
|
+
* @docs-group-description MapLayers
|
|
220
|
+
* Classes supporting map layers display.
|
|
221
|
+
*/
|
|
218
222
|
//# sourceMappingURL=core-frontend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-frontend.js","sourceRoot":"","sources":["../../src/core-frontend.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nexport * from \"./AccuDraw\";\r\nexport * from \"./AccuSnap\";\r\nexport * from \"./AuxCoordSys\";\r\nexport * from \"./BingLocation\";\r\nexport * from \"./BriefcaseConnection\";\r\nexport * from \"./BriefcaseTxns\";\r\nexport * from \"./CategorySelectorState\";\r\nexport * from \"./ChangeFlags\";\r\nexport * from \"./ContextRealityModelState\";\r\nexport * from \"./CoordSystem\";\r\nexport * from \"./DecorationsCache\";\r\nexport * from \"./DevTools\";\r\nexport * from \"./DisplayStyleState\";\r\nexport * from \"./DrawingViewState\";\r\nexport * from \"./ElementLocateManager\";\r\nexport * from \"./EmphasizeElements\";\r\nexport * from \"./EntityState\";\r\nexport * from \"./EnvironmentDecorations\";\r\nexport * from \"./FeatureOverrideProvider\";\r\nexport * from \"./FlashSettings\";\r\nexport * from \"./FrontendLoggerCategory\";\r\nexport * from \"./FrontendHubAccess\";\r\nexport * from \"./Frustum2d\";\r\nexport * from \"./FrustumAnimator\";\r\nexport * from \"./FuzzySearch\";\r\nexport * from \"./GeoServices\";\r\nexport * from \"./GlobeAnimator\";\r\nexport * from \"./HitDetail\";\r\nexport * from \"./ImageUtil\";\r\nexport * from \"./IModelApp\";\r\nexport * from \"./IModelConnection\";\r\nexport * from \"./IModelRoutingContext\";\r\nexport * from \"./GraphicalEditingScope\";\r\nexport * from \"./IpcApp\";\r\nexport * from \"./LinePlaneIntersect\";\r\nexport * from \"./MarginPercent\";\r\nexport * from \"./Marker\";\r\nexport * from \"./ModelSelectorState\";\r\nexport * from \"./ModelState\";\r\nexport * from \"./NativeApp\";\r\nexport * from \"./NativeAppLogger\";\r\nexport * from \"./NoRenderApp\";\r\nexport * from \"./NotificationManager\";\r\nexport * from \"./PerModelCategoryVisibility\";\r\nexport * from \"./PlanarClipMaskState\";\r\nexport * from \"./quantity-formatting/QuantityFormatter\";\r\nexport * from \"./quantity-formatting/BaseUnitFormattingSettingsProvider\";\r\nexport * from \"./quantity-formatting/LocalUnitFormatProvider\";\r\nexport * from \"./RenderScheduleState\";\r\nexport * from \"./CheckpointConnection\";\r\nexport * from \"./SelectionSet\";\r\nexport * from \"./SheetViewState\";\r\nexport * from \"./SpatialViewState\";\r\nexport * from \"./Sprites\";\r\nexport * from \"./StandardView\";\r\nexport * from \"./SubCategoriesCache\";\r\nexport * from \"./TentativePoint\";\r\nexport * from \"./Tiles\";\r\nexport * from \"./TwoWayViewportSync\";\r\nexport * from \"./UserPreferences\";\r\nexport * from \"./ViewAnimation\";\r\nexport * from \"./ViewContext\";\r\nexport * from \"./ViewGlobalLocation\";\r\nexport * from \"./ViewingSpace\";\r\nexport * from \"./ViewManager\";\r\nexport * from \"./Viewport\";\r\nexport * from \"./ViewPose\";\r\nexport * from \"./ViewRect\";\r\nexport * from \"./ViewState\";\r\nexport * from \"./ViewStatus\";\r\nexport * from \"./properties/AngleDescription\";\r\nexport * from \"./properties/FormattedQuantityDescription\";\r\nexport * from \"./properties/LengthDescription\";\r\nexport * from \"./render/CanvasDecoration\";\r\nexport * from \"./render/Decorations\";\r\nexport * from \"./render/FeatureSymbology\";\r\nexport * from \"./render/FrameStats\";\r\nexport * from \"./render/GraphicBranch\";\r\nexport * from \"./render/GraphicBuilder\";\r\nexport * from \"./render/GraphicPrimitive\";\r\nexport * from \"./render/InstancedGraphicParams\";\r\nexport * from \"./render/MockRender\";\r\nexport * from \"./render/ParticleCollectionBuilder\";\r\nexport * from \"./render/Pixel\";\r\nexport * from \"./render/RenderClipVolume\";\r\nexport * from \"./render/RenderGraphic\";\r\nexport * from \"./render/RenderMemory\";\r\nexport * from \"./render/RenderPlan\";\r\nexport * from \"./render/RenderPlanarClassifier\";\r\nexport * from \"./render/RenderTarget\";\r\nexport * from \"./render/RenderSystem\";\r\nexport * from \"./render/RenderTexture\";\r\nexport * from \"./render/Scene\";\r\nexport * from \"./render/ScreenSpaceEffectBuilder\";\r\nexport * from \"./render/VisibleFeature\";\r\nexport * from \"./render/webgl/PerformanceMetrics\";\r\nexport * from \"./render/webgl/Target\";\r\nexport * from \"./render/webgl/IModelFrameLifecycle\";\r\nexport * from \"./tools/AccuDrawTool\";\r\nexport * from \"./tile/internal\";\r\nexport * from \"./tools/ClipViewTool\";\r\nexport * from \"./tools/EditManipulator\";\r\nexport * from \"./tools/ElementSetTool\";\r\nexport * from \"./tools/EventController\";\r\nexport * from \"./tools/IdleTool\";\r\nexport * from \"./tools/MeasureTool\";\r\nexport * from \"./tools/PrimitiveTool\";\r\nexport * from \"./tools/SelectTool\";\r\nexport * from \"./tools/Tool\";\r\nexport * from \"./tools/ToolSettings\";\r\nexport * from \"./tools/ToolAdmin\";\r\nexport * from \"./tools/ToolAssistance\";\r\nexport * from \"./tools/ViewTool\";\r\nexport * from \"./BackgroundMapGeometry\";\r\nexport * from \"./ViewCreator2d\";\r\nexport * from \"./ViewCreator3d\";\r\nexport * from \"./LocalhostIpcApp\";\r\nexport * from \"./RealityDataSource\";\r\n\r\n/** @docs-package-description\r\n * The core-frontend package always runs in a web browser. It contains classes for [querying iModels and showing views]($docs/learning/frontend/index.md).\r\n */\r\n\r\n/**\r\n * @docs-group-description IModelApp\r\n * Classes for configuring and administering an iTwin.js application.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description IModelConnection\r\n * Classes for working with a connection to an [iModel briefcase]($docs/learning/IModels.md)\r\n */\r\n/**\r\n * @docs-group-description ElementState\r\n * Classes for working with the *state* of Elements in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description ModelState\r\n * Classes for working with the *state* of Models in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Tools\r\n * Classes for [working with Tools]($docs/learning/frontend/Tools.md)\r\n */\r\n/**\r\n * @docs-group-description Measure\r\n * Classes for reporting point to point distances and mass properties of elements.\r\n */\r\n/**\r\n * @docs-group-description Views\r\n * Classes for [working with Views]($docs/learning/frontend/Views.md)\r\n */\r\n/**\r\n * @docs-group-description LocatingElements\r\n * Classes for locating and snapping to elements in views.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description AccuDraw\r\n * AccuDraw provides helpful assistance for creating and modifying elements in a view.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Notifications\r\n * Notifications provide feedback to the user of something of interest.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Extensions\r\n * Classes for creating and managing runtime [Extensions]($docs/learning/frontend/Extensions.md)\r\n */\r\n/**\r\n * @docs-group-description Properties\r\n * Classes for working with property records and descriptions.\r\n */\r\n/**\r\n * @docs-group-description Rendering\r\n * Classes for rendering the contents of views.\r\n */\r\n/**\r\n * @docs-group-description SelectionSet\r\n * Classes for working with the set of selected elements.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description NativeApp\r\n * Classes for working with Native Applications\r\n */\r\n/**\r\n * @docs-group-description Utils\r\n * Miscellaneous utility classes.\r\n */\r\n/**\r\n * @docs-group-description Logging\r\n * Logger categories used by this package\r\n */\r\n/**\r\n * @docs-group-description QuantityFormatting\r\n * Classes for formatting and parsing quantity values.\r\n */\r\n/**\r\n * @docs-group-description Tiles\r\n * Classes representing graphics as [hierarchical 3d tiles](https://github.com/CesiumGS/3d-tiles).\r\n */\r\n/**\r\n * @docs-group-description HubAccess\r\n * APIs for working with IModelHub\r\n */\r\n/**\r\n * @docs-group-description UserPreferences\r\n * APIs for working with user preferences in an iModelApp.\r\n * See [the learning articles]($docs/learning/frontend/preferences.md).\r\n */\r\n\r\n"]}
|
|
1
|
+
{"version":3,"file":"core-frontend.js","sourceRoot":"","sources":["../../src/core-frontend.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yCAAyC,CAAC;AACxD,cAAc,0DAA0D,CAAC;AACzE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AAEpC;;GAEG;AAEH;;;;GAIG;AACH;;;GAGG;AACH;;;;GAIG;AACH;;;;GAIG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;;GAIG;AACH;;;;GAIG;AACH;;;;GAIG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;;GAIG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;GAGG;AACH;;;;GAIG;AACH;;;GAGG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nexport * from \"./AccuDraw\";\r\nexport * from \"./AccuSnap\";\r\nexport * from \"./AuxCoordSys\";\r\nexport * from \"./BingLocation\";\r\nexport * from \"./BriefcaseConnection\";\r\nexport * from \"./BriefcaseTxns\";\r\nexport * from \"./CategorySelectorState\";\r\nexport * from \"./ChangeFlags\";\r\nexport * from \"./ContextRealityModelState\";\r\nexport * from \"./CoordSystem\";\r\nexport * from \"./DecorationsCache\";\r\nexport * from \"./DevTools\";\r\nexport * from \"./DisplayStyleState\";\r\nexport * from \"./DrawingViewState\";\r\nexport * from \"./ElementLocateManager\";\r\nexport * from \"./EmphasizeElements\";\r\nexport * from \"./EntityState\";\r\nexport * from \"./EnvironmentDecorations\";\r\nexport * from \"./FeatureOverrideProvider\";\r\nexport * from \"./FlashSettings\";\r\nexport * from \"./FrontendLoggerCategory\";\r\nexport * from \"./FrontendHubAccess\";\r\nexport * from \"./Frustum2d\";\r\nexport * from \"./FrustumAnimator\";\r\nexport * from \"./FuzzySearch\";\r\nexport * from \"./GeoServices\";\r\nexport * from \"./GlobeAnimator\";\r\nexport * from \"./HitDetail\";\r\nexport * from \"./ImageUtil\";\r\nexport * from \"./IModelApp\";\r\nexport * from \"./IModelConnection\";\r\nexport * from \"./IModelRoutingContext\";\r\nexport * from \"./GraphicalEditingScope\";\r\nexport * from \"./IpcApp\";\r\nexport * from \"./LinePlaneIntersect\";\r\nexport * from \"./MarginPercent\";\r\nexport * from \"./Marker\";\r\nexport * from \"./ModelSelectorState\";\r\nexport * from \"./ModelState\";\r\nexport * from \"./NativeApp\";\r\nexport * from \"./NativeAppLogger\";\r\nexport * from \"./NoRenderApp\";\r\nexport * from \"./NotificationManager\";\r\nexport * from \"./PerModelCategoryVisibility\";\r\nexport * from \"./PlanarClipMaskState\";\r\nexport * from \"./quantity-formatting/QuantityFormatter\";\r\nexport * from \"./quantity-formatting/BaseUnitFormattingSettingsProvider\";\r\nexport * from \"./quantity-formatting/LocalUnitFormatProvider\";\r\nexport * from \"./RenderScheduleState\";\r\nexport * from \"./CheckpointConnection\";\r\nexport * from \"./SelectionSet\";\r\nexport * from \"./SheetViewState\";\r\nexport * from \"./SpatialViewState\";\r\nexport * from \"./Sprites\";\r\nexport * from \"./StandardView\";\r\nexport * from \"./SubCategoriesCache\";\r\nexport * from \"./TentativePoint\";\r\nexport * from \"./Tiles\";\r\nexport * from \"./TwoWayViewportSync\";\r\nexport * from \"./UserPreferences\";\r\nexport * from \"./ViewAnimation\";\r\nexport * from \"./ViewContext\";\r\nexport * from \"./ViewGlobalLocation\";\r\nexport * from \"./ViewingSpace\";\r\nexport * from \"./ViewManager\";\r\nexport * from \"./Viewport\";\r\nexport * from \"./ViewPose\";\r\nexport * from \"./ViewRect\";\r\nexport * from \"./ViewState\";\r\nexport * from \"./ViewStatus\";\r\nexport * from \"./properties/AngleDescription\";\r\nexport * from \"./properties/FormattedQuantityDescription\";\r\nexport * from \"./properties/LengthDescription\";\r\nexport * from \"./render/CanvasDecoration\";\r\nexport * from \"./render/Decorations\";\r\nexport * from \"./render/FeatureSymbology\";\r\nexport * from \"./render/FrameStats\";\r\nexport * from \"./render/GraphicBranch\";\r\nexport * from \"./render/GraphicBuilder\";\r\nexport * from \"./render/GraphicPrimitive\";\r\nexport * from \"./render/InstancedGraphicParams\";\r\nexport * from \"./render/MockRender\";\r\nexport * from \"./render/ParticleCollectionBuilder\";\r\nexport * from \"./render/Pixel\";\r\nexport * from \"./render/RenderClipVolume\";\r\nexport * from \"./render/RenderGraphic\";\r\nexport * from \"./render/RenderMemory\";\r\nexport * from \"./render/RenderPlan\";\r\nexport * from \"./render/RenderPlanarClassifier\";\r\nexport * from \"./render/RenderTarget\";\r\nexport * from \"./render/RenderSystem\";\r\nexport * from \"./render/RenderTexture\";\r\nexport * from \"./render/Scene\";\r\nexport * from \"./render/ScreenSpaceEffectBuilder\";\r\nexport * from \"./render/VisibleFeature\";\r\nexport * from \"./render/webgl/PerformanceMetrics\";\r\nexport * from \"./render/webgl/Target\";\r\nexport * from \"./render/webgl/IModelFrameLifecycle\";\r\nexport * from \"./tools/AccuDrawTool\";\r\nexport * from \"./tile/internal\";\r\nexport * from \"./tools/ClipViewTool\";\r\nexport * from \"./tools/EditManipulator\";\r\nexport * from \"./tools/ElementSetTool\";\r\nexport * from \"./tools/EventController\";\r\nexport * from \"./tools/IdleTool\";\r\nexport * from \"./tools/MeasureTool\";\r\nexport * from \"./tools/PrimitiveTool\";\r\nexport * from \"./tools/SelectTool\";\r\nexport * from \"./tools/Tool\";\r\nexport * from \"./tools/ToolSettings\";\r\nexport * from \"./tools/ToolAdmin\";\r\nexport * from \"./tools/ToolAssistance\";\r\nexport * from \"./tools/ViewTool\";\r\nexport * from \"./BackgroundMapGeometry\";\r\nexport * from \"./ViewCreator2d\";\r\nexport * from \"./ViewCreator3d\";\r\nexport * from \"./LocalhostIpcApp\";\r\nexport * from \"./RealityDataSource\";\r\n\r\n/** @docs-package-description\r\n * The core-frontend package always runs in a web browser. It contains classes for [querying iModels and showing views]($docs/learning/frontend/index.md).\r\n */\r\n\r\n/**\r\n * @docs-group-description IModelApp\r\n * Classes for configuring and administering an iTwin.js application.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description IModelConnection\r\n * Classes for working with a connection to an [iModel briefcase]($docs/learning/IModels.md)\r\n */\r\n/**\r\n * @docs-group-description ElementState\r\n * Classes for working with the *state* of Elements in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description ModelState\r\n * Classes for working with the *state* of Models in the frontend.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Tools\r\n * Classes for [working with Tools]($docs/learning/frontend/Tools.md)\r\n */\r\n/**\r\n * @docs-group-description Measure\r\n * Classes for reporting point to point distances and mass properties of elements.\r\n */\r\n/**\r\n * @docs-group-description Views\r\n * Classes for [working with Views]($docs/learning/frontend/Views.md)\r\n */\r\n/**\r\n * @docs-group-description LocatingElements\r\n * Classes for locating and snapping to elements in views.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description AccuDraw\r\n * AccuDraw provides helpful assistance for creating and modifying elements in a view.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Notifications\r\n * Notifications provide feedback to the user of something of interest.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description Extensions\r\n * Classes for creating and managing runtime [Extensions]($docs/learning/frontend/Extensions.md)\r\n */\r\n/**\r\n * @docs-group-description Properties\r\n * Classes for working with property records and descriptions.\r\n */\r\n/**\r\n * @docs-group-description Rendering\r\n * Classes for rendering the contents of views.\r\n */\r\n/**\r\n * @docs-group-description SelectionSet\r\n * Classes for working with the set of selected elements.\r\n * See [the learning articles]($docs/learning/frontend/index.md).\r\n */\r\n/**\r\n * @docs-group-description NativeApp\r\n * Classes for working with Native Applications\r\n */\r\n/**\r\n * @docs-group-description Utils\r\n * Miscellaneous utility classes.\r\n */\r\n/**\r\n * @docs-group-description Logging\r\n * Logger categories used by this package\r\n */\r\n/**\r\n * @docs-group-description QuantityFormatting\r\n * Classes for formatting and parsing quantity values.\r\n */\r\n/**\r\n * @docs-group-description Tiles\r\n * Classes representing graphics as [hierarchical 3d tiles](https://github.com/CesiumGS/3d-tiles).\r\n */\r\n/**\r\n * @docs-group-description HubAccess\r\n * APIs for working with IModelHub\r\n */\r\n/**\r\n * @docs-group-description UserPreferences\r\n * APIs for working with user preferences in an iModelApp.\r\n * See [the learning articles]($docs/learning/frontend/preferences.md).\r\n */\r\n/**\r\n * @docs-group-description MapLayers\r\n * Classes supporting map layers display.\r\n */\r\n\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAY,QAAQ,EAA2B,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAgB,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { BatchState } from "./BatchState";
|
|
|
12
12
|
import { Matrix3, Matrix4 } from "./Matrix";
|
|
13
13
|
import { RenderCommands } from "./RenderCommands";
|
|
14
14
|
import { desync, sync } from "./Sync";
|
|
15
|
+
import { System } from "./System";
|
|
15
16
|
import { ClipStack } from "./ClipStack";
|
|
16
17
|
function equalXYZs(a, b) {
|
|
17
18
|
if (a === b)
|
|
@@ -188,15 +189,17 @@ export class BranchUniforms {
|
|
|
188
189
|
}
|
|
189
190
|
Matrix4d.createTransform(mv, this._mv);
|
|
190
191
|
this._mv32.initFromTransform(mv);
|
|
191
|
-
const inv = this._mv.createInverse();
|
|
192
|
-
if (undefined !== inv) {
|
|
193
|
-
const invTr = inv.cloneTransposed();
|
|
194
|
-
this._mvn32.initFromMatrix3d(invTr.matrixPart());
|
|
195
|
-
}
|
|
196
192
|
// Don't bother computing mvp for instanced geometry - it's not used.
|
|
197
193
|
if (!this._isInstanced) {
|
|
198
194
|
uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);
|
|
199
195
|
this._mvp32.initFromMatrix4d(this._mvp);
|
|
196
|
+
if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2
|
|
197
|
+
const inv = this._mv.createInverse();
|
|
198
|
+
if (undefined !== inv) {
|
|
199
|
+
const invTr = inv.cloneTransposed();
|
|
200
|
+
this._mvn32.initFromMatrix3d(invTr.matrixPart());
|
|
201
|
+
}
|
|
202
|
+
}
|
|
200
203
|
}
|
|
201
204
|
return true;
|
|
202
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAc,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAO,MAAM,sBAAsB,CAAC;AAI/F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,SAAS,SAAS,CAAC,CAAkB,EAAE,CAAkB;IACvD,IAAI,CAAC,KAAK,CAAC;QACT,OAAO,IAAI,CAAC;IAEd,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IAEf,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC;QACpC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAE3B,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IAkCzB,YAAmB,MAAc;QAhCzB,qBAAgB,GAAG,KAAK,CAAC;QAI1B,YAAO,GAAG,CAAC,CAAC;QACF,WAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAG5C,0CAA0C;QAClC,iBAAY,GAAG,KAAK,CAAC;QAG7B,YAAY;QACK,QAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChC,SAAI,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAElD,YAAY;QACK,UAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QACtB,WAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACvB,SAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACrB,SAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACrB,WAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAExC,gBAAgB;QACC,sBAAiB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,uBAAkB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAChD,wBAAmB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChD,0BAAqB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QACnD,eAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAKjD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAC5B,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACxC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAC7D,CAAC;IACJ,CAAC;IARD,IAAW,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAUhD,gBAAgB;QACrB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,oBAAoB,CAAC,UAAsB;QAChD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEM,UAAU,CAAC,MAAc;QAC9B,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAEM,SAAS,CAAC,KAAkB;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,YAAY;QACjB,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,6EAA6E;QAC7E,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEM,WAAW;QAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEM,gBAAgB,CAAC,EAAa,EAAE,IAAa,EAAE,KAAsC;QAC1F,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,cAAc,CAAC,IAA4B,EAAE,KAAgB;QAClE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,wBAAwB,CAAC,GAA+B;QAC7D,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAEM,mBAAmB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,6BAA6B,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QACtG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,yBAAyB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,yBAAyB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,uBAAuB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAChG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAC,OAAsB,EAAE,QAAwB,EAAE,YAAqB;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,CAAC;QAEf,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC3C,IAAI,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;YACpD,IAAI,CAAC,YAAY,GAAG,SAAS,KAAK,aAAa,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,CAAC;SACd;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;YAChD,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC;SACd;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACrB,OAAO,KAAK,CAAC;QAEf,IAAI,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAClD,IAAI,YAAY,EAAE;YAChB,yCAAyC;YACzC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACnE,IAAI,aAAa;gBACf,EAAE,GAAG,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAE9C,qCAAqC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpG,UAAU,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC/C;aAAM;YACL,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;YAC5D,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE9C,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,yHAAyH;gBACzH,4FAA4F;gBAC5F,IAAI,GAAG,EAAE;oBACP,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAChJ,EAAE,CAAC,0BAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;iBAClD;qBAAM;oBACL,EAAE,CAAC,0BAA0B,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;iBACpF;aACF;iBAAM;gBACL,IAAI,SAAS,KAAK,GAAG,EAAE;oBACrB,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAC5G,EAAE,CAAC,0BAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;iBAClD;qBAAM;oBACL,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;iBACrD;aACF;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAC7E;QAED,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEjC,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,qEAAqE;gBACjH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,SAAS,KAAK,GAAG,EAAE;oBACrB,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;iBAClD;aACF;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
@@ -282,7 +282,7 @@ export class SolarShadowMap {
|
|
|
282
282
|
mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadwowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.
|
|
283
283
|
const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();
|
|
284
284
|
if (undefined !== backgroundMapGeometry) {
|
|
285
|
-
const backgroundDepthRange = backgroundMapGeometry.getFrustumIntersectionDepthRange(this._shadowFrustum);
|
|
285
|
+
const backgroundDepthRange = backgroundMapGeometry.getFrustumIntersectionDepthRange(this._shadowFrustum, iModel.projectExtents);
|
|
286
286
|
if (!backgroundDepthRange.isNull)
|
|
287
287
|
shadowRange.low.z = Math.min(shadowRange.low.z, backgroundDepthRange.low);
|
|
288
288
|
}
|