configurationCompatibility.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { ViewerConfiguration, getConfigurationKey } from './configuration'
  2. /**
  3. * This function will make sure the configuration file is taking deprecated fields into account
  4. * and is setting them to the correct keys and values.
  5. *
  6. * @param configuration The configuration to process. Mutable!
  7. */
  8. export function processConfigurationCompatibility(configuration: ViewerConfiguration) {
  9. if (configuration.camera) {
  10. // camera contrast -> image processing contrast
  11. if (configuration.camera.contrast !== undefined) {
  12. setKeyInObject(configuration, "scene.imageProcessingConfiguration.contrast", configuration.camera.contrast);
  13. }
  14. // camera exposure -> image processing exposure
  15. if (configuration.camera.exposure !== undefined) {
  16. setKeyInObject(configuration, "scene.imageProcessingConfiguration.exposure", configuration.camera.exposure);
  17. }
  18. }
  19. if (configuration.scene) {
  20. //glow
  21. if (configuration.scene.glow) {
  22. setKeyInObject(configuration, "lab.defaultRenderingPipelines.glowLayerEnabled", true);
  23. let enabledProcessing = getConfigurationKey("scene.imageProcessingConfiguration.isEnabled", configuration);
  24. if (enabledProcessing !== false) {
  25. setKeyInObject(configuration, "scene.imageProcessingConfiguration.isEnabled", true);
  26. }
  27. }
  28. if (configuration.scene.mainColor) {
  29. setKeyInObject(configuration, "environmentMap.mainColor", configuration.scene.mainColor, true);
  30. }
  31. }
  32. if (configuration.model && typeof configuration.model === 'object') {
  33. // castShadows === castShadow
  34. if ((<any>configuration.model).castShadows !== undefined && configuration.model.castShadow === undefined) {
  35. configuration.model.castShadow = (<any>configuration.model).castShadows;
  36. }
  37. }
  38. if (configuration.lab) {
  39. if (configuration.lab.assetsRootURL) {
  40. setKeyInObject(configuration, "scene.assetsRootURL", configuration.lab.assetsRootURL, true);
  41. }
  42. if (configuration.lab.environmentMap) {
  43. setKeyInObject(configuration, "environmentMap", configuration.lab.environmentMap, true);
  44. }
  45. }
  46. }
  47. function setKeyInObject(object: any, keys: string, value: any, shouldOverwrite?: boolean) {
  48. let keySplit = keys.split(".");
  49. if (keySplit.length === 0) return;
  50. let lastKey = keySplit.pop();
  51. if (!lastKey) return;
  52. let curObj = object;
  53. keySplit.forEach(key => {
  54. curObj[key] = curObj[key] || {};
  55. curObj = curObj[key];
  56. });
  57. if (curObj[lastKey] !== undefined && !shouldOverwrite) return;
  58. curObj[lastKey] = value;
  59. }