diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..563440cb --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,38 @@ +module.exports = { + "env": { + "browser": true, + "es6": true + }, + "extends": "standard", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "semi": [2, "always"], + "indent": "off", + "padded-blocks": "off", + "no-trailing-spaces": "off", + "one-var": "off", + "camelcase": "off", + "prefer-const": "off", + "quotes": "off", + "space-before-function-paren": "off", + "eol-last": "off", + "standard/no-callback-literal": "off", + "eqeqeq": "off", + "no-return-assign": "off", + "no-undef": "off", + "no-multi-spaces": "off", + "dot-notation": "off", + "no-useless-constructor": "off", + "no-void": "off", + "spaced-comment": "off", + "quote-props": "off", + "no-useless-escape": "off" + } +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore index 01fa0316..07cf6255 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ Thumbs.db Release Debug + +eslint node_modules .eslintrc diff --git a/eslint/.eslintrc.json b/eslint/.eslintrc.json deleted file mode 100644 index b4120aad..00000000 --- a/eslint/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true - }, - "extends": "eslint:recommended", - "rules": { - "indent": [ - "error", - 4 - ], - "linebreak-style": [ - "error", - "windows" - ], - "quotes": [ - "error", - "double" - ], - "semi": [ - "error", - "always" - ] - } -} \ No newline at end of file diff --git a/eslint/errors.html b/eslint/errors.html deleted file mode 100644 index 4a144c32..00000000 --- a/eslint/errors.html +++ /dev/null @@ -1,10223 +0,0 @@ - - - ESLint Report - - - -
-

ESLint Report

-
- 1112 problems (1112 errors, 0 warnings) - Generated on Thu Mar 01 2018 18:44:40 GMT+0300 (RTZ 2 (зима)) -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- [+] e:\OpenGlobus\OpenGlobus\src\og\ajax.js - 33 problems (33 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\clock.js - 21 problems (21 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\console.js - 3 problems (3 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\frustum.js - 14 problems (14 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\globus.js - 48 problems (48 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\inheritance.js - 4 problems (4 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\lock.js - 6 problems (6 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\lonlat.js - 32 problems (32 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\mercator.js - 23 problems (23 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\mercator.jsdoc - 0 problems -
- [+] e:\OpenGlobus\OpenGlobus\src\og\og-deps.js - 883 problems (883 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\og.js - 8 problems (8 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\queueArray.js - 10 problems (10 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\rectangle.js - 10 problems (10 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\rgb.js - 6 problems (6 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\rgba.js - 6 problems (6 errors, 0 warnings) -
- [+] e:\OpenGlobus\OpenGlobus\src\og\stack.js - 5 problems (5 errors, 0 warnings) -
- - - diff --git a/eslint/og-eslint.bat b/eslint/og-eslint.bat deleted file mode 100644 index abef564b..00000000 --- a/eslint/og-eslint.bat +++ /dev/null @@ -1 +0,0 @@ -eslint -c .eslintrc.json -o errors.html -f html ../src/og/*.* \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 387b4ec0..98b8b95d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "og", - "version": "0.1.1", + "version": "0.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1415,6 +1415,16 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -2722,6 +2732,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -3245,21 +3261,6 @@ "esutils": "^2.0.2" } }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -3274,12 +3275,289 @@ "integrity": "sha1-oJCtwTspNeP0OzzQSKknAWVOWtU=", "dev": true }, + "eslint-config-standard": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", + "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", + "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", + "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "dev": true + } + } + }, "eslint-plugin-eslint-plugin": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.1.0.tgz", "integrity": "sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg==", "dev": true }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", + "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", + "dev": true + }, "eslint-plugin-react": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz", @@ -3298,6 +3576,12 @@ "resolve": "^1.13.1" } }, + "eslint-plugin-standard": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", + "dev": true + }, "eslint-scope": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", @@ -3341,9 +3625,9 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", + "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", "dev": true, "requires": { "estraverse": "^4.0.0" @@ -3625,9 +3909,9 @@ } }, "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -4388,6 +4672,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "globals": { "version": "12.3.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", @@ -4621,6 +4914,12 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", @@ -4724,9 +5023,9 @@ "dev": true }, "inquirer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", - "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -7158,6 +7457,60 @@ "node-modules-regexp": "^1.0.0" } }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -8794,9 +9147,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, "validate-npm-package-license": { diff --git a/package.json b/package.json index f0c37605..057da843 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "og", - "version": "0.1.1", + "version": "0.1.2", "description": "[OpenGlobus](http://www.openglobus.org/) is a javascript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers and 3d objects. It uses the WebGL technology, open source and completely free.", "directories": { "example": "./sandbox" @@ -11,7 +11,8 @@ "build": "node_modules/.bin/rollup -c", "webgl": "node_modules/.bin/rollup -c --environment entry:webgl", "core": "node_modules/.bin/rollup -c --environment entry:core", - "test": "jest --coverage" + "test": "jest --coverage", + "lint": "node_modules/.bin/eslint src/og" }, "repository": { "type": "git", @@ -32,7 +33,12 @@ "enhanced-resolve": "^4.1.1", "eslint": "^6.8.0", "eslint-config-defaults": "^9.0.0", + "eslint-config-standard": "^14.1.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.3.0", + "eslint-plugin-standard": "^4.0.1", "jaguarjs-jsdoc": "^1.1.0", "jest": "^24.9.0", "jsdoc": "^3.6.3", diff --git a/sandbox/mapbox/mapbox.js b/sandbox/mapbox/mapbox.js index 8250b97a..2c7f82c7 100644 --- a/sandbox/mapbox/mapbox.js +++ b/sandbox/mapbox/mapbox.js @@ -1,15 +1,15 @@ 'use strict'; import { Globe } from '../../src/og/Globe.js'; -import { GlobusTerrain } from '../../src/og/terrain/GlobusTerrain.js'; +// import { GlobusTerrain } from '../../src/og/terrain/GlobusTerrain.js'; import { MapboxTerrain } from '../../src/og/terrain/MapboxTerrain.js'; import { XYZ } from '../../src/og/layer/XYZ.js'; import { CanvasTiles } from '../../src/og/layer/CanvasTiles.js'; -import { Vector } from '../../src/og/layer/Vector.js'; -import { Entity } from '../../src/og/entity/Entity.js'; +// import { Vector } from '../../src/og/layer/Vector.js'; +// import { Entity } from '../../src/og/entity/Entity.js'; import { DebugInfo } from '../../src/og/control/DebugInfo.js'; import { ToggleWireframe } from '../../src/og/control/ToggleWireframe.js'; -import * as math from '../../src/og/math.js'; +// import * as math from '../../src/og/math.js'; import { LayerSwitcher } from '../../src/og/control/LayerSwitcher.js'; let cnv = document.createElement("canvas"); @@ -21,10 +21,10 @@ const tg = new CanvasTiles("Tile grid", { visibility: true, isBaseLayer: true, drawTile: function (material, applyCanvas) { - //Clear canvas + // Clear canvas ctx.clearRect(0, 0, cnv.width, cnv.height); - //Draw border + // Draw border ctx.beginPath(); ctx.rect(0, 0, cnv.width, cnv.height); ctx.lineWidth = 2; @@ -33,7 +33,7 @@ const tg = new CanvasTiles("Tile grid", { let size; - //Draw text + // Draw text if (material.segment.tileZoom > 17) { size = "18"; } else if (material.segment.tileZoom > 14) { @@ -46,31 +46,30 @@ const tg = new CanvasTiles("Tile grid", { ctx.textAlign = 'center'; ctx.fillText(material.segment.tileX + "," + material.segment.tileY + "," + material.segment.tileZoom, cnv.width / 2, cnv.height / 2); - //Draw canvas tile + // Draw canvas tile applyCanvas(cnv); } }); let osm = new XYZ("OSM", { - 'specular': [0.0003, 0.00012, 0.00001], - 'shininess': 20, - 'diffuse': [0.89, 0.9, 0.83], - 'isBaseLayer': true, - 'url': "//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", - 'visibility': true, - 'attribution': 'Data @ OpenStreetMap contributors, ODbL' + specular: [0.0003, 0.00012, 0.00001], + shininess: 20, + diffuse: [0.89, 0.9, 0.83], + isBaseLayer: true, + url: "//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + visibility: true, + attribution: 'Data @ OpenStreetMap contributors, ODbL' }); - window.globe = new Globe({ - 'name': "Earth", - 'target': "earth", - 'terrain': new MapboxTerrain(), - 'layers': [osm, tg] + name: "Earth", + target: "earth", + terrain: new MapboxTerrain(), + layers: [osm, tg] }); -globe.planet.addControl(new DebugInfo()); -globe.planet.addControl(new ToggleWireframe({ +window.globe.planet.addControl(new DebugInfo()); +window.globe.planet.addControl(new ToggleWireframe({ isActive: false })); -globe.planet.addControl(new LayerSwitcher()); \ No newline at end of file +window.globe.planet.addControl(new LayerSwitcher()); \ No newline at end of file diff --git a/src/og/Events.js b/src/og/Events.js index 1823a4e9..e11bb758 100644 --- a/src/og/Events.js +++ b/src/og/Events.js @@ -59,7 +59,7 @@ class Events { */ registerNames(eventNames) { for (var i = 0; i < eventNames.length; i++) { - this[eventNames[i]] = { "active": true, "handlers": [] }; + this[eventNames[i]] = { active: true, handlers: [] }; this._eventNames.push(eventNames[i]); } } @@ -79,7 +79,7 @@ class Events { var ogid = stamp(obj); - var st = this._getStamp(name, this.__id, ogid);//name + "_" + this.__id + "_" + ogid; + var st = this._getStamp(name, this.__id, ogid); if (!this._stampCache[st]) { this._stampCache[st] = ogid; @@ -105,7 +105,6 @@ class Events { binaryInsert(this[name].handlers, c, (a, b) => { return b._openglobus_priority - a._openglobus_priority; }); - //this[name].handlers.unshift(c); } } } @@ -118,7 +117,7 @@ class Events { */ off(name, callback) { if (callback) { - var st = this._getStamp(name, this.__id, callback._openglobus_id);//name + "_" + this.__id + "_" + callback._openglobus_id; + var st = this._getStamp(name, this.__id, callback._openglobus_id); if (callback._openglobus_id && this._stampCache[st]) { var h = this[name].handlers; var i = h.length; diff --git a/src/og/Extent.js b/src/og/Extent.js index 808fd7c7..16507594 100644 --- a/src/og/Extent.js +++ b/src/og/Extent.js @@ -182,7 +182,7 @@ Extent.prototype.getWidth = function () { * @return {number} Extent height. */ Extent.prototype.getHeight = function () { - return this.northEast.lat - this.southWest.lat + return this.northEast.lat - this.southWest.lat; }; /** diff --git a/src/og/Frustum.js b/src/og/Frustum.js index d985c6b2..0173eb67 100644 --- a/src/og/Frustum.js +++ b/src/og/Frustum.js @@ -23,9 +23,11 @@ class Frustum { * @type {Array.>} */ this._f = new Array(6); - for (var i = 0; i < 6; i++) + for (var i = 0; i < 6; i++) { this._f[i] = new Array(4); + } } + /** * Normalize frustum plane. * @static @@ -125,8 +127,9 @@ class Frustum { var d; for (var p = 0; p < 6; p++) { d = point.dotArr(this._f[p]) + this._f[p][3]; - if (d <= 0) + if (d <= 0) { return false; + } } return true; } @@ -206,17 +209,18 @@ class Frustum { for (var k = 0; k < 8 && (cin === 0 || cout === 0); k++) { var d = box.vertices[k].dotArr(this._f[i]) + this._f[i][3]; - if (d < 0) + if (d < 0) { cout++; - else + } else { cin++; + } } - if (cin === 0) + if (cin === 0) { return false; - else if (cout > 0) + } else if (cout > 0) { result = true; - + } } return result; diff --git a/src/og/Globe.js b/src/og/Globe.js index 9e3a9e7a..119a2c35 100644 --- a/src/og/Globe.js +++ b/src/og/Globe.js @@ -61,7 +61,7 @@ const PLANET_NAME_PREFIX = "globus_planet_"; class Globe { constructor(options) { - //Canvas creation. + // Canvas creation var _canvasId = CANVAS_ID_PREFIX + Globe._staticCounter++; this._canvas = document.createElement("canvas"); @@ -92,14 +92,14 @@ class Globe { */ this.renderer = new Renderer( new Handler(_canvasId, { - 'context': { - 'alpha': false, - 'antialias': false, - 'powerPreference': "high-performance" + context: { + alpha: false, + antialias: false, + powerPreference: "high-performance" } }), { - 'autoActivate': false - }); + autoActivate: false + }); this.renderer.initialize(); this.renderer.div = this.div; this.renderer.div.attributions = document.createElement("div"); @@ -110,7 +110,7 @@ class Globe { this.div.appendChild(this.renderer.div.attributions); } - //Skybox + // Skybox if (options.skybox) { this.renderer.addNode(options.skybox); } @@ -129,13 +129,13 @@ class Globe { * @type {og.scene.Planet|og.scene.PlanetAtmosphere} */ - //TODO: + // TODO: } else { this.planet = new Planet(this._planetName, options.ellipsoid ? options.ellipsoid : wgs84); } - //Attach terrain provider + // Attach terrain provider if (options.terrain) { this.planet.setTerrain(options.terrain); } else { @@ -144,9 +144,7 @@ class Globe { this.renderer.addNode(this.planet); - this.sun; - - //Add controls + // Add controls if (options.controls) { this.planet.addControls(options.controls); } else { @@ -181,7 +179,7 @@ class Globe { this.planet.addLayers(options.layers); } - //TODO: view center, altitude, extent + // TODO: view center, altitude, extent if (options.viewExtent) { this.planet.viewToExtent(options.viewExtent); } @@ -190,7 +188,7 @@ class Globe { this._fadeHandler = null; this._stopHandler = null; - //Run! + // Run! if (options.autoActivate || isEmpty(options.autoActivate)) { this.renderer.start(); this.fadeIn(); diff --git a/src/og/ImageCanvas.js b/src/og/ImageCanvas.js index 4d50c5ab..6c89e4d3 100644 --- a/src/og/ImageCanvas.js +++ b/src/og/ImageCanvas.js @@ -187,7 +187,7 @@ class ImageCanvas { that.resize(img.width, img.height); that._context.drawImage(img, 0, 0, img.width, img.height); callback && callback(img); - } + }; img.src = url; } @@ -199,9 +199,9 @@ class ImageCanvas { var img = this.getImage(); var dataUrl = img.src; var windowContent = ''; - windowContent += '' + windowContent += ''; windowContent += 'Print'; - windowContent += '' + windowContent += ''; windowContent += ''; windowContent += ''; windowContent += ''; @@ -212,7 +212,6 @@ class ImageCanvas { printWin.focus(); } - destroy() { this._canvas.width = 1; this._canvas.height = 1; diff --git a/src/og/LonLat.js b/src/og/LonLat.js index be5ce062..f6b4e31a 100644 --- a/src/og/LonLat.js +++ b/src/og/LonLat.js @@ -6,21 +6,12 @@ import * as mercator from './mercator.js'; - - const HALF_PI = Math.PI * 0.5; - -const PI_BY_180 = Math.PI / 180.0; - const INV_PI_BY_180 = 180.0 / Math.PI; - const INV_PI_BY_360 = INV_PI_BY_180 * 2.0; - const PI_BY_360 = Math.PI / 360.0; - const INV_PI_BY_180_HALF_PI = INV_PI_BY_180 * HALF_PI; - /** * Represents a geographical point with a certain latitude, longitude and height. * @class @@ -167,7 +158,6 @@ LonLat.prototype.forwardMercatorEPS01 = function () { Math.log(Math.tan((90.0 + lat) * PI_BY_360)) * mercator.POLE_BY_PI); }; - /** * Converts from mercator coordinates. * @public diff --git a/src/og/QueueArray.js b/src/og/QueueArray.js index 0b829ed3..8c841054 100644 --- a/src/og/QueueArray.js +++ b/src/og/QueueArray.js @@ -9,7 +9,7 @@ class QueueArray { this.length = 0; } - reset(){ + reset() { this._popIndex = parseInt(this._size * 0.5); this._shiftIndex = this._popIndex; this.length = 0; @@ -31,7 +31,7 @@ class QueueArray { pop() { if (this.length) { this.length--; - var res = this._array[--this._popIndex] + var res = this._array[--this._popIndex]; this._array[this._popIndex] = null; if (!this._array[this._popIndex - 1]) { this._popIndex = parseInt(this._size * 0.5); diff --git a/src/og/ajax.js b/src/og/ajax.js index a10b4be9..cd2af149 100644 --- a/src/og/ajax.js +++ b/src/og/ajax.js @@ -90,8 +90,8 @@ const defaultParams = { function createXMLHttp() { var xhr = null; - if (typeof XMLHttpRequest !== undefined) { - xhr = new XMLHttpRequest; + if (typeof XMLHttpRequest != "undefined") { + xhr = new XMLHttpRequest(); return xhr; } else if (window.ActiveXObject) { var ieXMLHttpVersions = ['MSXML2.XMLHttp.5.0', 'MSXML2.XMLHttp.4.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp', 'Microsoft.XMLHttp']; @@ -100,7 +100,7 @@ function createXMLHttp() { xhr = new ActiveXObject(ieXMLHttpVersions[i]); return xhr; } catch (e) { - console.log('error: og.ajax.createXMLHttp creation filed.'); + throw new Error('og.ajax.createXMLHttp creation failed.'); } } } @@ -166,21 +166,23 @@ ajax.request = function (url, params) { xhr.open(p.type, url, p.async); } - if (p.async) + if (p.async) { xhr.responseType = p.responseType; + } xhr.overrideMimeType("text/plain"); xhr.onreadystatechange = function () { if (xhr.readyState === ajax.ReadyState.Complete) { if (xhr.status === ajax.Status.OK) { - if (params.success) + if (params.success) { /** * Success callback. * @callback ajax.Xhr~successCallback * @param {Object} Response data */ params.success.call(params.sender || customXhr, xhr.response); + } } else if (xhr.aborted) { /** * Abort callback. @@ -202,7 +204,7 @@ ajax.request = function (url, params) { xhr.onreadystatechange = null; xhr = null; } else { - //still loading + // still loading } }; diff --git a/src/og/astro/astro.js b/src/og/astro/astro.js index 95abd73d..cdc44f9c 100644 --- a/src/og/astro/astro.js +++ b/src/og/astro/astro.js @@ -1,10 +1,5 @@ -/** - * @module og/astro/astro - */ - 'use strict'; - import * as jd from './jd.js'; /** diff --git a/src/og/astro/earth.js b/src/og/astro/earth.js index a37dc2c0..d7ab072f 100644 --- a/src/og/astro/earth.js +++ b/src/og/astro/earth.js @@ -4,7 +4,6 @@ 'use strict'; - import * as jd from './jd.js'; import * as math from '../math.js'; import * as astro from './astro.js'; @@ -17,7 +16,7 @@ import { Vec3 } from '../math/Vec3.js'; * @returns {og.Vec3} - Sun geocentric coordinates. */ export function getSunPosition(jDate) { - //http://stjarnhimlen.se/comp/tutorial.html + // http://stjarnhimlen.se/comp/tutorial.html // a Mean distance, or semi-major axis // e Eccentricity // T Time at perihelion @@ -71,31 +70,31 @@ export function getSunPosition(jDate) { var d = jDate - jd.J2000; - var w = 282.9404 + 4.70935E-5 * d; //longitude of perihelion - var a = 1.000000; //mean distance, a.u. - var e = 0.016709 - 1.151E-9 * d; //eccentricity - var M = math.rev(356.0470 + 0.9856002585 * d); //mean anomaly + var w = 282.9404 + 4.70935E-5 * d; // longitude of perihelion + // var a = 1.000000; // mean distance, a.u. + var e = 0.016709 - 1.151E-9 * d; // eccentricity + var M = math.rev(356.0470 + 0.9856002585 * d); // mean anomaly - var oblecl = astro.J2000_OBLIQUITY - 3.563E-7 * d; //obliquity of the ecliptic + var oblecl = astro.J2000_OBLIQUITY - 3.563E-7 * d; // obliquity of the ecliptic - var L = math.rev(w + M); //Sun's mean longitude + // var L = math.rev(w + M); // Sun's mean longitude - var E = M + math.DEGREES * e * Math.sin(M * math.RADIANS) * (1 + e * Math.cos(M * math.RADIANS)); //eccentric anomaly + var E = M + math.DEGREES * e * Math.sin(M * math.RADIANS) * (1 + e * Math.cos(M * math.RADIANS)); // eccentric anomaly - //Sun rectangular coordiantes, where the X axis points towards the perihelion + // Sun rectangular coordiantes, where the X axis points towards the perihelion var x = Math.cos(E * math.RADIANS) - e; var y = Math.sin(E * math.RADIANS) * Math.sqrt(1 - e * e); - var r = Math.sqrt(x * x + y * y); // distance + var r = Math.sqrt(x * x + y * y); // distance var v = Math.atan2(y, x) * math.DEGREES; // true anomaly - var lon = math.rev(v + w); //longitude of the Sun + var lon = math.rev(v + w); // longitude of the Sun - //the Sun's ecliptic rectangular coordinates + // the Sun's ecliptic rectangular coordinates x = r * Math.cos(lon * math.RADIANS); y = r * Math.sin(lon * math.RADIANS); - //We use oblecl, and rotate these coordinates + // We use oblecl, and rotate these coordinates var xequat = x; var yequat = y * Math.cos(oblecl * math.RADIANS); var zequat = y * Math.sin(oblecl * math.RADIANS); @@ -105,7 +104,7 @@ export function getSunPosition(jDate) { return Quat.yRotation(-theta).mulVec3(new Vec3(-yequat * astro.AU_TO_METERS, zequat * astro.AU_TO_METERS, -xequat * astro.AU_TO_METERS)); - //Convert to RA and Decl - //var RA = Math.atan2(yequat, xequat) * math.DEGREES; - //var Decl = Math.atan2(zequat, Math.sqrt(xequat * xequat + yequat * yequat)) * math.DEGREES; + // Convert to RA and Decl + // var RA = Math.atan2(yequat, xequat) * math.DEGREES; + // var Decl = Math.atan2(zequat, Math.sqrt(xequat * xequat + yequat * yequat)) * math.DEGREES; }; diff --git a/src/og/astro/jd.js b/src/og/astro/jd.js index 166f0aab..9e61a82c 100644 --- a/src/og/astro/jd.js +++ b/src/og/astro/jd.js @@ -475,39 +475,39 @@ export function daysToSeconds(d) { function __ls(jd, leapSeconds) { return { - "jd": jd, - "leapSeconds": leapSeconds + jd: jd, + leapSeconds: leapSeconds }; }; const leapSecondsTable = [ - __ls(2441317.5, 10.0), // 1972-01-01T00:00:00.000Z - __ls(2441499.5, 11.0), // 1972-07-01T00:00:00.000Z - __ls(2441683.5, 12.0), // 1973-01-01T00:00:00.000Z - __ls(2442048.5, 13.0), // 1974-01-01T00:00:00.000Z - __ls(2442413.5, 14.0), // 1975-01-01T00:00:00.000Z - __ls(2442778.5, 15.0), // 1976-01-01T00:00:00.000Z - __ls(2443144.5, 16.0), // 1977-01-01T00:00:00.000Z - __ls(2443509.5, 17.0), // 1978-01-01T00:00:00.000Z - __ls(2443874.5, 18.0), // 1979-01-01T00:00:00.000Z - __ls(2444239.5, 19.0), // 1980-01-01T00:00:00.000Z - __ls(2444786.5, 20.0), // 1981-07-01T00:00:00.000Z - __ls(2445151.5, 21.0), // 1982-07-01T00:00:00.000Z - __ls(2445516.5, 22.0), // 1983-01-01T00:00:00.000Z - __ls(2446247.5, 23.0), // 1985-07-01T00:00:00.000Z - __ls(2447161.5, 24.0), // 1988-01-01T00:00:00.000Z - __ls(2447892.5, 25.0), // 1990-01-01T00:00:00.000Z - __ls(2448257.5, 26.0), // 1991-01-01T00:00:00.000Z - __ls(2448804.5, 27.0), // 1992-07-01T00:00:00.000Z - __ls(2449169.5, 28.0), // 1993-07-01T00:00:00.000Z - __ls(2449534.5, 29.0), // 1994-07-01T00:00:00.000Z - __ls(2450083.5, 30.0), // 1996-01-01T00:00:00.000Z - __ls(2450630.5, 31.0), // 1997-07-01T00:00:00.000Z - __ls(2451179.5, 32.0), // 1999-01-01T00:00:00.000Z - __ls(2453736.5, 33.0), // 2006-01-01T00:00:00.000Z - __ls(2454832.5, 34.0), // 2009-01-01T00:00:00.000Z - __ls(2456109.5, 35.0), // 2012-07-01T00:00:00.000Z - __ls(2457204.5, 36.0) // 2015-07-01T00:00:00.000Z + __ls(2441317.5, 10.0), // 1972-01-01T00:00:00.000Z + __ls(2441499.5, 11.0), // 1972-07-01T00:00:00.000Z + __ls(2441683.5, 12.0), // 1973-01-01T00:00:00.000Z + __ls(2442048.5, 13.0), // 1974-01-01T00:00:00.000Z + __ls(2442413.5, 14.0), // 1975-01-01T00:00:00.000Z + __ls(2442778.5, 15.0), // 1976-01-01T00:00:00.000Z + __ls(2443144.5, 16.0), // 1977-01-01T00:00:00.000Z + __ls(2443509.5, 17.0), // 1978-01-01T00:00:00.000Z + __ls(2443874.5, 18.0), // 1979-01-01T00:00:00.000Z + __ls(2444239.5, 19.0), // 1980-01-01T00:00:00.000Z + __ls(2444786.5, 20.0), // 1981-07-01T00:00:00.000Z + __ls(2445151.5, 21.0), // 1982-07-01T00:00:00.000Z + __ls(2445516.5, 22.0), // 1983-01-01T00:00:00.000Z + __ls(2446247.5, 23.0), // 1985-07-01T00:00:00.000Z + __ls(2447161.5, 24.0), // 1988-01-01T00:00:00.000Z + __ls(2447892.5, 25.0), // 1990-01-01T00:00:00.000Z + __ls(2448257.5, 26.0), // 1991-01-01T00:00:00.000Z + __ls(2448804.5, 27.0), // 1992-07-01T00:00:00.000Z + __ls(2449169.5, 28.0), // 1993-07-01T00:00:00.000Z + __ls(2449534.5, 29.0), // 1994-07-01T00:00:00.000Z + __ls(2450083.5, 30.0), // 1996-01-01T00:00:00.000Z + __ls(2450630.5, 31.0), // 1997-07-01T00:00:00.000Z + __ls(2451179.5, 32.0), // 1999-01-01T00:00:00.000Z + __ls(2453736.5, 33.0), // 2006-01-01T00:00:00.000Z + __ls(2454832.5, 34.0), // 2009-01-01T00:00:00.000Z + __ls(2456109.5, 35.0), // 2012-07-01T00:00:00.000Z + __ls(2457204.5, 36.0) // 2015-07-01T00:00:00.000Z ]; export const J2000TAI = UTCtoTAI(J2000); diff --git a/src/og/astro/orbit.js b/src/og/astro/orbit.js index 156cdc97..83e44f1d 100644 --- a/src/og/astro/orbit.js +++ b/src/og/astro/orbit.js @@ -22,14 +22,14 @@ export function getEccentricAnomaly(M, ecc) { // Extremely stable Laguerre-Conway method for solving Kepler's // equation. Only use this for high-eccentricity orbits, as it // requires more calcuation. - var E = M + 0.85 * ecc * sign(sin(M)); + let E = M + 0.85 * ecc * sign(sin(M)); return math.solve_iteration_fixed(solveKeplerLaguerreConway(ecc, M), E, 8); } else if (ecc == 1.0) { - //TODO: Parabolic orbit + // TODO: Parabolic orbit return M; } else { // Laguerre-Conway method for hyperbolic (ecc > 1) orbits. - var E = log(2 * M / ecc + 1.85); + let E = log(2 * M / ecc + 1.85); return math.solve_iteration_fixed(solveKeplerLaguerreConwayHyp(ecc, M), E, 30); } }; @@ -38,7 +38,7 @@ export function getEccentricAnomaly(M, ecc) { function solveKeplerFunc1(ecc, M) { return function (x) { return M + ecc * Math.sin(x); - } + }; }; // Faster converging iteration for Kepler's Equation; more efficient @@ -47,7 +47,7 @@ function solveKeplerFunc1(ecc, M) { function solveKeplerFunc2(ecc, M) { return function (x) { return x + (M + ecc * Math.sin(x) - x) / (1 - ecc * Math.cos(x)); - } + }; }; function solveKeplerLaguerreConway(ecc, M) { @@ -59,7 +59,7 @@ function solveKeplerLaguerreConway(ecc, M) { var f2 = s; x += -5 * f / (f1 + Math.sign(f1) * Math.sqrt(abs(16 * f1 * f1 - 20 * f * f2))); return x; - } + }; }; function solveKeplerLaguerreConwayHyp(ecc, M) { @@ -71,7 +71,7 @@ function solveKeplerLaguerreConwayHyp(ecc, M) { var f2 = s; x += -5 * f / (f1 + Math.sign(f1) * Math.sqrt(Math.abs(16 * f1 * f1 - 20 * f * f2))); return x; - } + }; }; export function getEllipticalEccentricAnomaly(meanAnomaly, eccentricity) { diff --git a/src/og/camera/Camera.js b/src/og/camera/Camera.js index c3239630..49850366 100644 --- a/src/og/camera/Camera.js +++ b/src/og/camera/Camera.js @@ -138,14 +138,14 @@ class Camera { * @protected * @type {og.Vec3} */ - this._u = new Vec3(0, 1, 0); //up x n + this._u = new Vec3(0, 1, 0); // up x n /** * Camera up vector. * @protected * @type {og.Vec3} */ - this._v = new Vec3(1, 0, 0); //n x u - UP + this._v = new Vec3(1, 0, 0); // n x u - UP this.slope = 0; @@ -154,7 +154,7 @@ class Camera { * @protected * @type {og.Vec3} */ - this._n = new Vec3(0, 0, 1); //eye - look - FORWARD + this._n = new Vec3(0, 0, 1); // eye - look - FORWARD this._pu = this._u.clone(); this._pv = this._v.clone(); @@ -299,7 +299,7 @@ class Camera { this._projectionViewMatrix = this._projectionMatrix.mul(this._viewMatrix); this.frustum.setFrustum(this._projectionViewMatrix); this._inverseProjectionViewMatrix = this._projectionViewMatrix.inverseTo(); - this._normalMatrix = this._viewMatrix.toMatrix3();//this._viewMatrix.toInverseMatrix3().transposeTo(); + this._normalMatrix = this._viewMatrix.toMatrix3();// this._viewMatrix.toInverseMatrix3().transposeTo(); this.events.dispatch(this.events.viewchange, this); } @@ -646,12 +646,12 @@ const EVENT_NAMES = [ ]; const defaultOptions = { - 'viewAngle': 30, - 'near': 1, - 'far': 500000000, - 'eye': new Vec3(), - 'look': new Vec3(), - 'up': new Vec3(0.0, 1.0, 0.0) + viewAngle: 30, + near: 1, + far: 500000000, + eye: new Vec3(), + look: new Vec3(), + up: new Vec3(0.0, 1.0, 0.0) }; export { Camera }; \ No newline at end of file diff --git a/src/og/camera/PlanetCamera.js b/src/og/camera/PlanetCamera.js index 6e7f76d4..fae9705a 100644 --- a/src/og/camera/PlanetCamera.js +++ b/src/og/camera/PlanetCamera.js @@ -10,7 +10,6 @@ import { Camera } from './Camera.js'; import { Vec3 } from '../math/Vec3.js'; import { Key } from '../Lock.js'; import { LonLat } from '../LonLat.js'; -import { Mat4 } from '../math/Mat4.js'; import { Ray } from '../math/Ray.js'; import { Quat } from '../math/Quat.js'; @@ -93,7 +92,7 @@ class PlanetCamera extends Camera { this._keyLock = new Key(); - //Camera's flying frames + // Camera's flying frames this._framesArr = []; this._framesCounter = 0; this._numFrames = 50; @@ -138,7 +137,7 @@ class PlanetCamera extends Camera { this._inverseProjectionViewMatrix = this._projectionMatrixPrecise.mul(this._viewMatrix).inverseTo(); - //this._normalMatrix = this._viewMatrix.toInverseMatrix3().transposeTo(); + // this._normalMatrix = this._viewMatrix.toInverseMatrix3().transposeTo(); this._normalMatrix = this._viewMatrix.toMatrix3(); this.updateGeodeticPosition(); @@ -257,7 +256,7 @@ class PlanetCamera extends Camera { northEast.subA(center); southWest.subA(center); - var direction = center.normal();//ellipsoid.getSurfaceNormal(center).negate().normalize(); + var direction = center.normal(); // ellipsoid.getSurfaceNormal(center).negate().normalize(); var right = direction.cross(Vec3.UP).normalize(); var up = right.cross(direction).normalize(); @@ -349,11 +348,6 @@ class PlanetCamera extends Camera { */ flyCartesian(cartesian, look, up, ampl = 1.0, completeCallback, startCallback, frameCallback) { - //??????? - //if (this.eye.distance(cartesian) < 23000) { - // return; - //} - this.stopFlying(); this._completeCallback = completeCallback; @@ -396,13 +390,13 @@ class PlanetCamera extends Camera { var max_h = currMaxHeight + 2.5 * hM_a * (maxHeight - currMaxHeight); var zero = Vec3.ZERO; - //camera path and orientations calculation + // camera path and orientations calculation for (var i = 0; i <= this._numFrames; i++) { var d = 1 - i / this._numFrames; d = d * d * (3 - 2 * d); d *= d; - //Error here + // Error here var g_i = ground_a.smerp(ground_b, d).normalize(); var ground_i = this.planet.getRayIntersectionEllipsoid(new Ray(zero, g_i)); var t = 1 - d; @@ -419,10 +413,10 @@ class PlanetCamera extends Camera { var v = n.cross(u); this._framesArr[i] = { - "eye": eye_i, - "n": n, - "u": u, - "v": v + eye: eye_i, + n: n, + u: u, + v: v }; } diff --git a/src/og/cons.js b/src/og/cons.js index 294fcde2..7114a8c5 100644 --- a/src/og/cons.js +++ b/src/og/cons.js @@ -105,5 +105,4 @@ export class Cons { } } -export const cons = new Cons(); - +export const cons = new Cons(); \ No newline at end of file diff --git a/src/og/control/DebugInfo.js b/src/og/control/DebugInfo.js index 1fe4396d..dd81fc30 100644 --- a/src/og/control/DebugInfo.js +++ b/src/og/control/DebugInfo.js @@ -5,7 +5,6 @@ 'use strict'; import { Control } from './Control.js'; -import { print2d } from '../utils/shared.js'; /** * Debug information @@ -54,51 +53,51 @@ class DebugInfo extends Control { if (p) { this.addWatches([{ - 'label': "Nodes count", - 'frame': () => p._renderedNodes.length + label: "Nodes count", + frame: () => p._renderedNodes.length }, { - 'label': "createdNodes", - 'frame': () => p._createdNodesCount + label: "createdNodes", + frame: () => p._createdNodesCount }, { - 'label': "distBeforeMemClear", - 'frame': () => p._distBeforeMemClear - },{ - 'label': "maxZoom/minZoom", - 'frame': () => p.maxCurrZoom + '/' + p.minCurrZoom + label: "distBeforeMemClear", + frame: () => p._distBeforeMemClear }, { - 'label': "height/alt (km)", - 'frame': () => (p.camera._lonLat.height / 1000.0).toFixed(2) + '/' + (p.camera.getAltitude() / 1000.0).toFixed(2) + label: "maxZoom/minZoom", + frame: () => p.maxCurrZoom + '/' + p.minCurrZoom }, { - 'label': "cam.slope", - 'frame': () => p.camera.slope + label: "height/alt (km)", + frame: () => (p.camera._lonLat.height / 1000.0).toFixed(2) + '/' + (p.camera.getAltitude() / 1000.0).toFixed(2) }, { - 'label': "lodRatio", - 'frame': () => p._lodRatio + label: "cam.slope", + frame: () => p.camera.slope }, { - 'label': "deltaTime", - 'frame': () => p.renderer.handler.deltaTime + label: "lodRatio", + frame: () => p._lodRatio }, { - 'label': "-------------------------" + label: "deltaTime", + frame: () => p.renderer.handler.deltaTime }, { - 'label': "PlainWorker", - 'frame': () => p._plainSegmentWorker._pendingQueue.length + label: "-------------------------" }, { - 'label': "TileLoader", - 'frame': () => p._tileLoader._loading + ' ' + p._tileLoader._queue.length + label: "PlainWorker", + frame: () => p._plainSegmentWorker._pendingQueue.length }, { - 'label': "TerrainLoader", - 'frame': () => { - if (p.terrain && p.terrain._loader) + label: "TileLoader", + frame: () => p._tileLoader._loading + ' ' + p._tileLoader._queue.length + }, { + label: "TerrainLoader", + frame: () => { + if (p.terrain && p.terrain._loader) { return p.terrain._loader._loading + ' ' + p.terrain._loader._queue.length; - else - return ''; + } + return ''; } }, { - 'label': "TerrainWorker", - 'frame': () => p._terrainWorker._pendingQueue.length + label: "TerrainWorker", + frame: () => p._terrainWorker._pendingQueue.length }, { - 'label': "NormalMapCreator", - 'frame': () => p._normalMapCreator._queue.length + label: "NormalMapCreator", + frame: () => p._normalMapCreator._queue.length }]); } } diff --git a/src/og/control/EarthCoordinates.js b/src/og/control/EarthCoordinates.js index 3436517c..779d1e40 100644 --- a/src/og/control/EarthCoordinates.js +++ b/src/og/control/EarthCoordinates.js @@ -7,10 +7,10 @@ import { Control } from './Control.js'; function dec2deg(base) { - var t, t2; + var t; var degrees = base < 0 ? Math.ceil(base) : Math.floor(base); var minutes = Math.floor(t = Math.abs((base - degrees)) * 60); - var seconds = Math.floor(t2 = (t - minutes) * 6000); + var seconds = Math.floor((t - minutes) * 6000); seconds = seconds / 100.00; return (numToFixedString(degrees, 3) + "\u00B0" + numToFixedString(minutes, 2) + "\u0027" + @@ -107,8 +107,11 @@ class EarthCoordinates extends Control { var that = this; function _refresh(el) { - if (that._displayType >= DisplayTypesConverters.length) + + if (that._displayType >= DisplayTypesConverters.length) { that._displayType = 0; + } + if (that._displayType == 0) { el.style.width = "275px"; } else if (that._displayType == 1) { @@ -175,7 +178,6 @@ class EarthCoordinates extends Control { _grabCoordinates() { var r = this.renderer; - var ts = r.events.touchState; this.position = this.planet.getLonLatFromPixelTerrain(r.handler.getCenter()); this._showPosition(); } diff --git a/src/og/control/GeoImageDragControl.js b/src/og/control/GeoImageDragControl.js index ddf18ccd..bae572a7 100644 --- a/src/og/control/GeoImageDragControl.js +++ b/src/og/control/GeoImageDragControl.js @@ -34,7 +34,7 @@ class GeoImageDragControl extends Control { _bindLayer(layer) { if (layer instanceof BaseGeoImage) { - + var p = this.planet; layer.events.on('mousemove', function (ms) { @@ -46,7 +46,7 @@ class GeoImageDragControl extends Control { } else { this._cornerIndex = -1; for (var i = 0; i < layer._cornersWgs84.length; i++) { - var ground = p.getLonLatFromPixelTerrain(ms, true) + var ground = p.getLonLatFromPixelTerrain(ms, true); if (ground && p.ellipsoid.getGreatCircleDistance(layer._cornersWgs84[i], ground) / p.getDistanceFromPixel(ms, true) <= 0.05) { this._cornerIndex = i; break; @@ -59,7 +59,6 @@ class GeoImageDragControl extends Control { layer.events.on('ldown', function (ms) { if (this._active && this._cornerIndex != -1) { this._catchCorner = true; - //p.renderer.controls.mouseNavigation._active = false; ms.renderer.controls.mouseNavigation.deactivate(); } }, this); @@ -67,7 +66,6 @@ class GeoImageDragControl extends Control { layer.events.on('lup', function (ms) { if (this._active) { this._catchCorner = false; - //p.renderer.controls.mouseNavigation._active = true; ms.renderer.controls.mouseNavigation.activate(); } }, this); diff --git a/src/og/control/LayerSwitcher.js b/src/og/control/LayerSwitcher.js index d85d85b8..758d517e 100644 --- a/src/og/control/LayerSwitcher.js +++ b/src/og/control/LayerSwitcher.js @@ -84,7 +84,7 @@ class LayerSwitcher extends Control { obj._removeCallback = function () { container.removeChild(lineDiv); - } + }; lineDiv.appendChild(center); lineDiv.appendChild(inp); @@ -155,5 +155,4 @@ class LayerSwitcher extends Control { } }; -export { LayerSwitcher }; - +export { LayerSwitcher }; \ No newline at end of file diff --git a/src/og/control/MouseNavigation.js b/src/og/control/MouseNavigation.js index d46cc469..c8e2430f 100644 --- a/src/og/control/MouseNavigation.js +++ b/src/og/control/MouseNavigation.js @@ -15,7 +15,6 @@ import { Ray } from '../math/Ray.js'; import { Sphere } from '../bv/Sphere.js'; import { Vec3 } from '../math/Vec3.js'; - /** * Mouse planet camera dragging control. * @class @@ -52,7 +51,7 @@ class MouseNavigation extends Control { static getMovePointsFromPixelTerrain(cam, planet, stepsCount, delta, point, forward, dir) { - var steps = [] + var steps = []; var eye = cam.eye.clone(), n = cam._n.clone(), @@ -86,7 +85,7 @@ class MouseNavigation extends Control { grabbedSpheroid.radius = a.length(); var rotArr = [], - eyeArr = [] + eyeArr = []; var breaked = false; for (var i = 0; i < stepsCount; i++) { @@ -102,7 +101,7 @@ class MouseNavigation extends Control { } if (!breaked) { - for (var i = 0; i < stepsCount; i++) { + for (let i = 0; i < stepsCount; i++) { var rot = rotArr[i]; steps[i] = {}; steps[i].eye = rot.mulVec3(eyeArr[i]); @@ -112,7 +111,7 @@ class MouseNavigation extends Control { } } else { eye = cam.eye.clone(); - for (var i = 0; i < stepsCount; i++) { + for (let i = 0; i < stepsCount; i++) { steps[i] = {}; steps[i].eye = eye.addA(scaled_n).clone(); steps[i].v = v; @@ -121,7 +120,7 @@ class MouseNavigation extends Control { } } } else { - for (var i = 0; i < stepsCount; i++) { + for (let i = 0; i < stepsCount; i++) { steps[i] = {}; steps[i].eye = eye.addA(dir.scaleTo(-d)).clone(); steps[i].v = v; @@ -176,8 +175,9 @@ class MouseNavigation extends Control { onMouseWheel(event) { - if (this.stepIndex) + if (this.stepIndex) { return; + } this.planet.stopFlying(); @@ -243,8 +243,10 @@ class MouseNavigation extends Control { onMouseLeftButtonDown(e) { if (this._active) { - if (!this.grabbedPoint) + + if (!this.grabbedPoint) { return; + } this.planet.stopFlying(); @@ -356,8 +358,9 @@ class MouseNavigation extends Control { } } - if (r.events.mouseState.leftButtonDown || !this.scaleRot) + if (r.events.mouseState.leftButtonDown || !this.scaleRot) { return; + } this.scaleRot -= this.inertia; if (this.scaleRot <= 0.0) { diff --git a/src/og/control/ShowFps.js b/src/og/control/ShowFps.js index 67c44f1e..eaa27a64 100644 --- a/src/og/control/ShowFps.js +++ b/src/og/control/ShowFps.js @@ -25,8 +25,7 @@ class ShowFps extends Control { document.body.appendChild(d); this.renderer.events.on("draw", this._draw, this); } - - + _draw() { print2d("ogShowFpsControl", (1000.0 / this.renderer.handler.deltaTime).toFixed(1), this.renderer.handler.canvas.clientWidth - 60, 0); } diff --git a/src/og/control/SimpleNavigation.js b/src/og/control/SimpleNavigation.js index 48ff5f79..b147e2ab 100644 --- a/src/og/control/SimpleNavigation.js +++ b/src/og/control/SimpleNavigation.js @@ -1,10 +1,5 @@ -/** - * @module og/control/SimpleNavigation - */ - 'use strict'; -import * as math from '../math.js'; import { Control } from './Control.js'; import { input } from '../input/input.js'; @@ -23,7 +18,6 @@ class SimpleNavigation extends Control { this.speed = options.speed || 1.0; } - oninit() { this.camera = this.renderer.activeCamera; this.renderer.events.on("keypress", input.KEY_W, this.onCameraMoveForward, this); @@ -99,7 +93,6 @@ class SimpleNavigation extends Control { } }; - /** * Creates simple navigation control instance. */ diff --git a/src/og/control/Sun.js b/src/og/control/Sun.js index 5aa6d654..92aa44fb 100644 --- a/src/og/control/Sun.js +++ b/src/og/control/Sun.js @@ -6,7 +6,6 @@ import { Control } from './Control.js'; import { getSunPosition } from '../astro/earth.js'; -import { input } from '../input/input.js'; import { LightSource } from '../light/LightSource.js'; import { Quat } from '../math/Quat.js'; import { Vec3 } from '../math/Vec3.js'; @@ -38,7 +37,7 @@ class Sun extends Control { * @private * @type {boolean} */ - //this._isCameraSunlight = false; + // this._isCameraSunlight = false; this.offsetVertical = options.offsetVertical || -5000000; @@ -76,20 +75,20 @@ class Sun extends Control { this.planet.lightEnabled = true; - //sunlight initialization + // sunlight initialization this.sunlight = new LightSource("Sun", { - 'ambient': new Vec3(0.15, 0.15, 0.25), - 'diffuse': new Vec3(0.9, 0.9, 0.8), - 'specular': new Vec3(0.1, 0.1, 0.06), - 'shininess': 110 + ambient: new Vec3(0.15, 0.15, 0.25), + diffuse: new Vec3(0.9, 0.9, 0.8), + specular: new Vec3(0.1, 0.1, 0.06), + shininess: 110 }); this.sunlight.addTo(this.planet); - var that = this; this.renderer.events.on("draw", this._draw, this); - if (!this._clockPtr) + if (!this._clockPtr) { this._clockPtr = this.renderer.handler.defaultClock; + } } stop() { @@ -126,8 +125,8 @@ class Sun extends Control { var pos = cam.eye.add(d); if (this._k > 0) { this._k -= 0.01; - var rot = Quat.getRotationBetweenVectors(this.sunlight._position.normal(), pos.normal()); - var r = rot.slerp(Quat.IDENTITY, this._k).normalize(); + let rot = Quat.getRotationBetweenVectors(this.sunlight._position.normal(), pos.normal()); + let r = rot.slerp(Quat.IDENTITY, this._k).normalize(); this.sunlight.setPosition3v(r.mulVec3(this.sunlight._position)); } else { this.sunlight.setPosition3v(pos); @@ -136,11 +135,11 @@ class Sun extends Control { this._k = 1; if (this._f > 0) { this._f -= 0.01; - var rot = Quat.getRotationBetweenVectors(this.sunlight._position.normal(), getSunPosition(this._currDate).normal()); - var r = rot.slerp(Quat.IDENTITY, this._f).normalize(); + let rot = Quat.getRotationBetweenVectors(this.sunlight._position.normal(), getSunPosition(this._currDate).normal()); + let r = rot.slerp(Quat.IDENTITY, this._f).normalize(); this.sunlight.setPosition3v(r.mulVec3(this.sunlight._position)); } else { - if (Math.abs(this._currDate - this._prevDate) > 0.00034 && this._active || this._lightOn) { + if ((Math.abs(this._currDate - this._prevDate) > 0.00034 && this._active) || this._lightOn) { this._lightOn = false; this._prevDate = this._currDate; this.sunlight.setPosition3v(getSunPosition(this._currDate)); @@ -158,5 +157,4 @@ export function sun(options) { return Sun(options); } -export { Sun }; - +export { Sun }; \ No newline at end of file diff --git a/src/og/control/ToggleWireframe.js b/src/og/control/ToggleWireframe.js index a147538d..209b3267 100644 --- a/src/og/control/ToggleWireframe.js +++ b/src/og/control/ToggleWireframe.js @@ -19,7 +19,6 @@ class ToggleWireframe extends Control { this._isActive = options.isActive || false; } - oninit() { this.renderer.events.on("charkeypress", input.KEY_X, this.toogleWireframe, this); if (this._isActive) { diff --git a/src/og/control/TouchNavigation.js b/src/og/control/TouchNavigation.js index c59cca4d..21eff903 100644 --- a/src/og/control/TouchNavigation.js +++ b/src/og/control/TouchNavigation.js @@ -6,16 +6,13 @@ import * as math from '../math.js'; import { Control } from './Control.js'; -import { input } from '../input/input.js'; import { Key } from '../Lock.js'; import { LonLat } from '../LonLat.js'; -import { Mat4 } from '../math/Mat4.js'; import { Quat } from '../math/Quat.js'; import { Ray } from '../math/Ray.js'; import { Sphere } from '../bv/Sphere.js'; import { Vec3 } from '../math/Vec3.js'; - /** * Touch pad planet camera dragging control. * @class @@ -90,7 +87,7 @@ class TouchNavigation extends Control { t1.prev_y = e.sys.touches.item(1).clientY - e.sys.offsetTop; t1.grabbedPoint = this.planet.getCartesianFromPixelTerrain(t1, true); - //this.planet._viewChanged = true; + // this.planet._viewChanged = true; this.pointOnEarth = this.planet.getCartesianFromPixelTerrain(this.renderer.handler.getCenter(), true); if (this.pointOnEarth) { @@ -133,8 +130,9 @@ class TouchNavigation extends Control { } onDoubleTouch(e) { - if (this.stepIndex) + if (this.stepIndex) { return; + } this.planet.stopFlying(); this.stopRotation(); @@ -145,16 +143,18 @@ class TouchNavigation extends Control { onTouchEnd(e) { - if (e.sys.touches.length === 0) + if (e.sys.touches.length === 0) { this._touching = false; + } if (e.sys.touches.length === 1) { this._startTouchOne(e); } - if (Math.abs(this.touches[0].x - this.touches[0].prev_x) < 3 && - Math.abs(this.touches[0].y - this.touches[0].prev_y) < 3) + if ((Math.abs(this.touches[0].x - this.touches[0].prev_x) < 3) && + (Math.abs(this.touches[0].y - this.touches[0].prev_y) < 3)) { this.scaleRot = 0; + } } onTouchCancel(e) { @@ -171,8 +171,9 @@ class TouchNavigation extends Control { var t0 = this.touches[0], t1 = this.touches[1]; - if (!t0.grabbedPoint || !t1.grabbedPoint) + if (!t0.grabbedPoint || !t1.grabbedPoint) { return; + } this.planet.stopFlying(); @@ -186,23 +187,8 @@ class TouchNavigation extends Control { t1.x = e.sys.touches.item(1).clientX - e.sys.offsetLeft; t1.y = e.sys.touches.item(1).clientY - e.sys.offsetTop; - //var center_x = Math.round(t0.x + (t1.x - t0.x) * 0.5); - //var center_y = Math.round(t0.y + (t1.y - t0.y) * 0.5); - - //var dirC = cam.unproject(center_x, center_y); - //var targetPointC = this.planet.getCartesianFromPixelTerrain(new og.math.Pixel(center_x, center_y)); - - //var dir0 = cam.unproject(t0.x, t0.y); - //var targetPoint0 = new og.Ray(cam.eye, dir0).hitSphere(t0.grabbedSpheroid); - - //var dir1 = cam.unproject(t1.x, t1.y); - //var targetPoint1 = new og.Ray(cam.eye, dir1).hitSphere(t1.grabbedSpheroid); - - //print2d("t1", center_x + "," + center_y, 100, 100); - //print2d("t2", targetPointC.x + "," + targetPointC.y + "," + targetPointC.z, 100, 120); - - if (t0.dY() > 0 && t1.dY() > 0 || t0.dY() < 0 && t1.dY() < 0 || - t0.dX() > 0 && t1.dX() > 0 || t0.dX() < 0 && t1.dX() < 0) { + if ((t0.dY() > 0 && t1.dY() > 0) || (t0.dY() < 0 && t1.dY() < 0) || + (t0.dX() > 0 && t1.dX() > 0) || (t0.dX() < 0 && t1.dX() < 0)) { var l = 0.5 / cam.eye.distance(this.pointOnEarth) * cam._lonLat.height * math.RADIANS; if (l > 0.007) l = 0.007; cam.rotateHorizontal(l * t0.dX(), false, this.pointOnEarth, this.earthUp); @@ -222,8 +208,9 @@ class TouchNavigation extends Control { t.x = e.sys.touches.item(0).clientX - e.sys.offsetLeft; t.y = e.sys.touches.item(0).clientY - e.sys.offsetTop; - if (!t.grabbedPoint) + if (!t.grabbedPoint) { return; + } this.planet.stopFlying(); @@ -262,8 +249,9 @@ class TouchNavigation extends Control { this.renderer.controlsBag.scaleRot = this.scaleRot; - if (this._touching) + if (this._touching) { return; + } var r = this.renderer; var cam = r.activeCamera; @@ -272,7 +260,6 @@ class TouchNavigation extends Control { if (this.stepIndex) { r.controlsBag.scaleRot = 1; var sf = this.stepsForward[this.stepsCount - this.stepIndex--]; - var cam = this.renderer.activeCamera; cam.eye = sf.eye; cam._v = sf.v; cam._u = sf.u; @@ -281,15 +268,15 @@ class TouchNavigation extends Control { cam.update(); } - if (r.events.mouseState.leftButtonDown || !this.scaleRot) + if (r.events.mouseState.leftButtonDown || !this.scaleRot) { return; + } this.scaleRot -= this.inertia; - if (this.scaleRot <= 0) + if (this.scaleRot <= 0) { this.scaleRot = 0; - else { + } else { r.controlsBag.scaleRot = this.scaleRot; - var cam = r.activeCamera; var rot = this.qRot.slerp(Quat.IDENTITY, 1 - this.scaleRot * this.scaleRot * this.scaleRot).normalize(); if (!(rot.x || rot.y || rot.z)) { this.scaleRot = 0; diff --git a/src/og/control/ZoomControl.js b/src/og/control/ZoomControl.js index 98ee3126..5db0c76e 100644 --- a/src/og/control/ZoomControl.js +++ b/src/og/control/ZoomControl.js @@ -46,13 +46,13 @@ class ZoomControl extends Control { btnZoomOut.addEventListener("mousedown", (e) => this.zoomOut()); btnZoomOut.addEventListener("mouseup", (e) => this.stopZoom()); - btnZoomIn.addEventListener('touchstart', (e) => { e.preventDefault(); this.zoomIn() }); - btnZoomIn.addEventListener('touchend', (e) => { e.preventDefault(); this.stopZoom() }); - btnZoomIn.addEventListener('touchcancel', (e) => { e.preventDefault(); this.stopZoom() }); + btnZoomIn.addEventListener('touchstart', (e) => { e.preventDefault(); this.zoomIn(); }); + btnZoomIn.addEventListener('touchend', (e) => { e.preventDefault(); this.stopZoom(); }); + btnZoomIn.addEventListener('touchcancel', (e) => { e.preventDefault(); this.stopZoom(); }); - btnZoomOut.addEventListener('touchstart', (e) => { e.preventDefault(); this.zoomOut() }); - btnZoomOut.addEventListener('touchend', (e) => { e.preventDefault(); this.stopZoom() }); - btnZoomOut.addEventListener('touchcancel', (e) => { e.preventDefault(); this.stopZoom() }); + btnZoomOut.addEventListener('touchstart', (e) => { e.preventDefault(); this.zoomOut(); }); + btnZoomOut.addEventListener('touchend', (e) => { e.preventDefault(); this.stopZoom(); }); + btnZoomOut.addEventListener('touchcancel', (e) => { e.preventDefault(); this.stopZoom(); }); this.renderer.events.on("draw", this._draw, this); } diff --git a/src/og/ellipsoid/Ellipsoid.js b/src/og/ellipsoid/Ellipsoid.js index dee0b726..284bd4f4 100644 --- a/src/og/ellipsoid/Ellipsoid.js +++ b/src/og/ellipsoid/Ellipsoid.js @@ -43,8 +43,9 @@ class Ellipsoid { b_y = Math.cos(b), b_x = Math.sin(b); let c = a_y * b_x - b_y * a_x, d = a_x * b_x + a_y * b_y; - if (c > 0.0) + if (c > 0.0) { return Math.acos(d); + } return -Math.acos(d); } @@ -110,8 +111,7 @@ class Ellipsoid { if (Math.abs(dLon) > Math.PI) { if (dLon > 0) { dLon = (2 * Math.PI - dLon) * -1; - } - else { + } else { dLon = 2 * Math.PI + dLon; } } @@ -161,8 +161,7 @@ class Ellipsoid { var df = f2 - f1, dl = l2 - l1; - var d12 = 2 * Math.asin(Math.sqrt(Math.sin(df / 2) * Math.sin(df / 2) - + Math.cos(f1) * Math.cos(f2) * Math.sin(dl / 2) * Math.sin(dl / 2))); + var d12 = 2 * Math.asin(Math.sqrt(Math.sin(df / 2) * Math.sin(df / 2) + Math.cos(f1) * Math.cos(f2) * Math.sin(dl / 2) * Math.sin(dl / 2))); if (d12 == 0) return null; // initial/final bearings between points @@ -177,10 +176,10 @@ class Ellipsoid { var a2 = (D21 - D23 + Math.PI) % (2 * Math.PI) - Math.PI; if (Math.sin(a1) == 0 && Math.sin(a2) == 0) return null; // infinite intersections - if (Math.sin(a1) * Math.sin(a2) < 0) return null; // ambiguous intersection + if (Math.sin(a1) * Math.sin(a2) < 0) return null; // ambiguous intersection - //a1 = Math.abs(a1); - //a2 = Math.abs(a2); + // a1 = Math.abs(a1); + // a2 = Math.abs(a2); // ... Ed Williams takes abs of a1/a2, but seems to break calculation? var a3 = Math.acos(-Math.cos(a1) * Math.cos(a2) + Math.sin(a1) * Math.sin(a2) * Math.cos(d12)); @@ -311,13 +310,12 @@ class Ellipsoid { var q = Math.sqrt(1.0 + 2.0 * ecc22 * p); var recc2r0 = r - ecc2 * (-(p * ecc2 * r) / 1 + q + Math.sqrt(0.5 * this._a2 * (1.0 + 1.0 / q) - p * (1.0 - ecc2) * z2 / (q * (1.0 + q)) - 0.5 * p * r2)); var recc2r02 = recc2r0 * recc2r0; - var u = Math.sqrt(recc2r02 + z2); + // var u = Math.sqrt(recc2r02 + z2); var v = Math.sqrt(recc2r02 + (1.0 - ecc2) * z2); var z0 = this._b2 * z / (this._a * v); var lat = Math.atan((z + this._k2 * z0) / r) * math.DEGREES; var lon = Math.atan2(y, x) * math.DEGREES; - var c = this.geodeticToCartesian(lon, lat); - return new LonLat(lon, lat, cartesian.length() - c.length()); + return new LonLat(lon, lat, cartesian.length() - this.geodeticToCartesian(lon, lat).length()); } /** @@ -335,7 +333,6 @@ class Ellipsoid { return new Vec3(nx * l, ny * l, nz * l); } - /** * Returns the distance from one point to another(using haversine formula) on the great circle. * @param {og.LonLat} lonLat1 - Longitude/latitude of source point. @@ -356,8 +353,7 @@ class Ellipsoid { var f1 = lonLat1.lat * math.RADIANS, l1 = nlon * math.RADIANS; var dR = distance / this._a; var f2 = Math.asin(Math.sin(f1) * Math.cos(dR) + Math.cos(f1) * Math.sin(dR) * Math.cos(bearing)); - return new LonLat((l1 + Math.atan2(Math.sin(bearing) * Math.sin(dR) * Math.cos(f1), Math.cos(dR) - Math.sin(f1) * Math.sin(f2))) - * math.DEGREES, f2 * math.DEGREES); + return new LonLat((l1 + Math.atan2(Math.sin(bearing) * Math.sin(dR) * Math.cos(f1), Math.cos(dR) - Math.sin(f1) * Math.sin(f2))) * math.DEGREES, f2 * math.DEGREES); } /** diff --git a/src/og/entity/Billboard.js b/src/og/entity/Billboard.js index bfbbae57..38e55475 100644 --- a/src/og/entity/Billboard.js +++ b/src/og/entity/Billboard.js @@ -116,8 +116,8 @@ class Billboard extends BaseBillboard { */ getSize() { return { - "width": this._width, - "height": this._height + width: this._width, + height: this._height }; } diff --git a/src/og/entity/BillboardHandler.js b/src/og/entity/BillboardHandler.js index 6adeecc1..517ba42a 100644 --- a/src/og/entity/BillboardHandler.js +++ b/src/og/entity/BillboardHandler.js @@ -201,7 +201,7 @@ class BillboardHandler { this._billboards.push(billboard); this._addBillboardToArrays(billboard); this.refresh(); - billboard.setSrc(billboard._src || billboard._image && billboard._image.src); + billboard.setSrc(billboard._src || (billboard._image && billboard._image.src)); } } @@ -217,7 +217,7 @@ class BillboardHandler { var x = billboard._positionHigh.x, y = billboard._positionHigh.y, z = billboard._positionHigh.z, w; BillboardHandler.concArr(this._positionHighArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); - x = billboard._positionLow.x, y = billboard._positionLow.y, z = billboard._positionLow.z; + x = billboard._positionLow.x; y = billboard._positionLow.y; z = billboard._positionLow.z; BillboardHandler.concArr(this._positionLowArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); x = billboard._width; y = billboard._height; @@ -232,10 +232,10 @@ class BillboardHandler { x = billboard._rotation; BillboardHandler.concArr(this._rotationArr, [x, x, x, x, x, x]); - x = billboard._alignedAxis.x, y = billboard._alignedAxis.y, z = billboard._alignedAxis.z; + x = billboard._alignedAxis.x; y = billboard._alignedAxis.y; z = billboard._alignedAxis.z; BillboardHandler.concArr(this._alignedAxisArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); - x = billboard._entity._pickingColor.x / 255, y = billboard._entity._pickingColor.y / 255, z = billboard._entity._pickingColor.z / 255; + x = billboard._entity._pickingColor.x / 255; y = billboard._entity._pickingColor.y / 255; z = billboard._entity._pickingColor.z / 255; BillboardHandler.concArr(this._pickingColorArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); } @@ -304,8 +304,6 @@ class BillboardHandler { var sha = sh.attributes, shu = sh.uniforms; - var gl = h.gl; - var gl = h.gl, ec = this._entityCollection; @@ -412,7 +410,7 @@ class BillboardHandler { var i = index * 18; - //High + // High var a = this._positionHighArr, x = positionHigh.x, y = positionHigh.y, z = positionHigh.z; a[i] = x; @@ -439,8 +437,8 @@ class BillboardHandler { a[i + 16] = y; a[i + 17] = z; - //Low - a = this._positionLowArr, x = positionLow.x, y = positionLow.y, z = positionLow.z; + // Low + a = this._positionLowArr; x = positionLow.x; y = positionLow.y; z = positionLow.z; a[i] = x; a[i + 1] = y; @@ -609,7 +607,7 @@ class BillboardHandler { a[i + 4] = rotation; a[i + 5] = rotation; - this._changedBuffers[ROTATION_BUFFER] = true + this._changedBuffers[ROTATION_BUFFER] = true; } setTexCoordArr(index, tcoordArr) { diff --git a/src/og/entity/Entity.js b/src/og/entity/Entity.js index 7e4e5d92..c0be3cfc 100644 --- a/src/og/entity/Entity.js +++ b/src/og/entity/Entity.js @@ -8,7 +8,6 @@ import * as mercator from '../mercator.js'; import * as utils from '../utils/shared.js'; import { Billboard } from './Billboard.js'; import { Strip } from './Strip.js'; -//import { Box } from '../shapes/Box.js'; import { Extent } from '../Extent.js'; import { Geometry } from './Geometry.js'; import { Label } from './Label.js'; @@ -19,7 +18,6 @@ import { PointCloud } from './PointCloud.js'; import { Sphere } from '../shapes/Sphere.js'; import { Vec3 } from '../math/Vec3.js'; - /** * Entity instances aggregate multiple forms of visualization into a single high-level object. * They can be created manually and added to entity collection. @@ -154,15 +152,15 @@ class Entity { this._pickingColor = new Vec3(0, 0, 0); this._featureConstructorArray = { - "billboard": [Billboard, this.setBillboard], - "label": [Label, this.setLabel], - "sphere": [Sphere, this.setShape], - //"box": [Box, this.setShape], - "polyline": [Polyline, this.setPolyline], - "pointCloud": [PointCloud, this.setPointCloud], - "geometry": [Geometry, this.setGeometry], - "strip": [Strip, this.setStrip], - "ray": [Ray, this.setRay] + billboard: [Billboard, this.setBillboard], + label: [Label, this.setLabel], + sphere: [Sphere, this.setShape], + // box: [Box, this.setShape], + polyline: [Polyline, this.setPolyline], + pointCloud: [PointCloud, this.setPointCloud], + geometry: [Geometry, this.setGeometry], + strip: [Strip, this.setStrip], + ray: [Ray, this.setRay] }; /** @@ -220,9 +218,6 @@ class Entity { * @type {og.Strip} */ this.strip = this._createOptionFeature('strip', options.strip); - - //this.model = null; - //... } static get _staticCounter() { @@ -281,22 +276,22 @@ class Entity { setVisibility(visibility) { this._visibility = visibility; - //billboards + // billboards this.billboard && this.billboard.setVisibility(visibility); - //labels + // labels this.label && this.label.setVisibility(visibility); - //shape + // shape this.shape && this.shape.setVisibility(visibility); - //polyline + // polyline this.polyline && this.polyline.setVisibility(visibility); - //ray + // ray this.ray && this.ray.setVisibility(visibility); - //geometry + // geometry this.geometry && this.geometry.setVisibility(visibility); for (var i = 0; i < this.childrenNodes.length; i++) { @@ -337,13 +332,13 @@ class Entity { p.y = y; p.z = z; - //billboards + // billboards this.billboard && this.billboard.setPosition3v(p); - //labels + // labels this.label && this.label.setPosition3v(p); - //shape + // shape this.shape && this.shape.setPosition3v(p); for (var i = 0; i < this.childrenNodes.length; i++) { @@ -380,13 +375,13 @@ class Entity { p.y = cartesian.y; p.z = cartesian.z; - //billboards + // billboards this.billboard && this.billboard.setPosition3v(p); - //labels + // labels this.label && this.label.setPosition3v(p); - //shape + // shape this.shape && this.shape.setPosition3v(p); for (var i = 0; i < this.childrenNodes.length; i++) { @@ -641,22 +636,22 @@ class Entity { var c = this._pickingColor; - //billboard + // billboard this.billboard && this.billboard.setPickingColor3v(c); - //label + // label this.label && this.label.setPickingColor3v(c); - //shape + // shape this.shape && this.shape.setPickingColor3v(c); - //polyline + // polyline this.polyline && this.polyline.setPickingColor3v(c); - //ray + // ray this.ray && this.ray.setPickingColor3v(c); - //strip + // strip this.strip && this.strip.setPickingColor3v(c); for (var i = 0; i < this.childrenNodes.length; i++) { @@ -681,7 +676,7 @@ class Entity { ne = res.northEast; if (this.polyline) { - var e = this.polyline.getExtent(); + let e = this.polyline.getExtent(); if (e.southWest.lon < sw.lon) sw.lon = e.southWest.lon; if (e.southWest.lat < sw.lat) sw.lat = e.southWest.lat; if (e.northEast.lon > ne.lon) ne.lon = e.northEast.lon; @@ -689,7 +684,7 @@ class Entity { } if (this.geometry) { - var e = this.geometry.getExtent(); + let e = this.geometry.getExtent(); if (e.southWest.lon < sw.lon) sw.lon = e.southWest.lon; if (e.southWest.lat < sw.lat) sw.lat = e.southWest.lat; if (e.northEast.lon > ne.lon) ne.lon = e.northEast.lon; @@ -697,7 +692,7 @@ class Entity { } for (var i = 0; i < this.childrenNodes.length; i++) { - var e = this.childrenNodes[i].getExtent(); + let e = this.childrenNodes[i].getExtent(); if (e.southWest.lon < sw.lon) sw.lon = e.southWest.lon; if (e.southWest.lat < sw.lat) sw.lat = e.southWest.lat; if (e.northEast.lon > ne.lon) ne.lon = e.northEast.lon; diff --git a/src/og/entity/EntityCollection.js b/src/og/entity/EntityCollection.js index cc4e66f8..68e299bb 100644 --- a/src/og/entity/EntityCollection.js +++ b/src/og/entity/EntityCollection.js @@ -158,8 +158,6 @@ class EntityCollection { * @type {og.StripHandler} */ this.stripHandler = new StripHandler(this); - // - //... if (options.pickingEnabled != undefined) { this.setPickingEnabled(options.pickingEnabled); @@ -206,9 +204,10 @@ class EntityCollection { this.rendererEvents = this.events; - //initialize current entities - if (options.entities) + // initialize current entities + if (options.entities) { this.addEntities(options.entities); + } } static get _staticCounter() { @@ -295,25 +294,25 @@ class EntityCollection { _addRecursively(entity) { - //billboard + // billboard entity.billboard && this.billboardHandler.add(entity.billboard); - //label + // label entity.label && this.labelHandler.add(entity.label); - //shape + // shape entity.shape && this.shapeHandler.add(entity.shape); - //polyline + // polyline entity.polyline && this.polylineHandler.add(entity.polyline); - //ray + // ray entity.ray && this.rayHandler.add(entity.ray); - //pointCloud + // pointCloud entity.pointCloud && this.pointCloudHandler.add(entity.pointCloud); - //strip + // strip entity.strip && this.stripHandler.add(entity.strip); this.events.dispatch(this.events.entityadd, entity); @@ -377,25 +376,25 @@ class EntityCollection { entity._entityCollection = null; entity._entityCollectionIndex = -1; - //billboard + // billboard entity.billboard && this.billboardHandler.remove(entity.billboard); - //label + // label entity.label && this.labelHandler.remove(entity.label); - //shape + // shape entity.shape && this.shapeHandler.remove(entity.shape); - //polyline + // polyline entity.polyline && this.polylineHandler.remove(entity.polyline); - //ray + // ray entity.ray && this.rayHandler.remove(entity.ray); - //pointCloud + // pointCloud entity.pointCloud && this.pointCloudHandler.remove(entity.pointCloud); - //strip + // strip entity.strip && this.stripHandler.remove(entity.strip); for (var i = 0; i < entity.childrenNodes.length; i++) { @@ -412,7 +411,7 @@ class EntityCollection { this._entities.splice(entity._entityCollectionIndex, 1); this.reindexEntitiesArray(entity._entityCollectionIndex); - //clear picking color + // clear picking color if (this.renderNode && this.renderNode.renderer) { this.renderNode.renderer.clearPickingColor(entity); entity._pickingColor.clear(); @@ -429,7 +428,7 @@ class EntityCollection { this._entities.splice(entity._entityCollectionIndex, 1); this.reindexEntitiesArray(entity._entityCollectionIndex); - //clear picking color + // clear picking color if (this.renderNode && this.renderNode.renderer) { this.renderNode.renderer.clearPickingColor(entity); entity._pickingColor.clear(); @@ -511,6 +510,7 @@ class EntityCollection { this.createPickingColors(); } } + /** * Updates coordiantes all lonLat entities in collection after collecction attached to the planet node. * @private @@ -557,7 +557,7 @@ class EntityCollection { if (this.renderNode) { if (this._renderNodeIndex !== -1) { this.renderNode.entityCollections.splice(this._renderNodeIndex, 1); - //reindex in the renderNode + // reindex in the renderNode for (var i = this._renderNodeIndex; i < this.renderNode.entityCollections.length; i++) { this.renderNode.entityCollections._renderNodeIndex = i; } @@ -596,8 +596,8 @@ class EntityCollection { */ clear() { - //TODO: Optimize by replace delete - //code to the clearEntity function. + // TODO: Optimize by replace delete + // code to the clearEntity function. this.billboardHandler.clear(); this.labelHandler.clear(); this.shapeHandler.clear(); @@ -633,7 +633,6 @@ class EntityCollection { } }; - const EVENT_NAMES = [ /** * Triggered when entity has moved. diff --git a/src/og/entity/Geometry.js b/src/og/entity/Geometry.js index fecf3a4a..dd9175c0 100644 --- a/src/og/entity/Geometry.js +++ b/src/og/entity/Geometry.js @@ -34,14 +34,14 @@ class Geometry { this._handler = null; this._handlerIndex = -1; - //Polygon + // Polygon this._polyVerticesMerc = []; this._polyVerticesLength = -1; this._polyIndexesLength = -1; this._polyVerticesHandlerIndex = -1; this._polyIndexesHandlerIndex = -1; - //Line(Linestring and polygon's stroke(s) + // Line(Linestring and polygon's stroke(s) this._lineVerticesMerc = []; this._lineVerticesLength = -1; this._lineOrdersLength = -1; @@ -54,11 +54,11 @@ class Geometry { this._lineThicknessHandlerIndex = -1; this._lineColorsHandlerIndex = -1; - this._type = options.type && Geometry.getType(options.type) || GeometryType.POINT; + this._type = (options.type && Geometry.getType(options.type)) || GeometryType.POINT; this._coordinates = []; this._extent = Geometry.getExtent({ - 'type': options.type || "Point", - 'coordinates': options.coordinates || [] + type: options.type || "Point", + coordinates: options.coordinates || [] }, this._coordinates); this._style = options.style || {}; @@ -70,7 +70,7 @@ class Geometry { this._visibility = options.visibility || true; - //optimization flag for picking mask rendering pass + // optimization flag for picking mask rendering pass this._pickingReady = false; } @@ -198,7 +198,7 @@ class Geometry { setFillColor(r, g, b, a) { var c = this._style.fillColor; - if (c.w === 0.0 && a !== 0.0 || c.w !== 0.0 && a === 0.0) { + if ((c.w === 0.0 && a !== 0.0) || (c.w !== 0.0 && a === 0.0)) { this._pickingReady = false; } c.x = r; @@ -215,7 +215,7 @@ class Geometry { setStrokeColor(r, g, b, a) { var c = this._style.strokeColor; - if (c.w === 0.0 && a !== 0.0 || c.w !== 0.0 && a === 0.0) { + if ((c.w === 0.0 && a !== 0.0) || (c.w !== 0.0 && a === 0.0)) { this._pickingReady = false; } c.x = r; @@ -228,7 +228,7 @@ class Geometry { setLineColor(r, g, b, a) { var c = this._style.lineColor; - if (c.w === 0.0 && a !== 0.0 || c.w !== 0.0 && a === 0.0) { + if ((c.w === 0.0 && a !== 0.0) || (c.w !== 0.0 && a === 0.0)) { this._pickingReady = false; } c.x = r; @@ -280,7 +280,7 @@ class Geometry { setFillOpacity(opacity) { var c = this._style.fillColor; - if (c.w === 0.0 && opacity !== 0.0 || c.w !== 0.0 && opacity === 0.0) { + if ((c.w === 0.0 && opacity !== 0.0) || (c.w !== 0.0 && opacity === 0.0)) { this._pickingReady = false; } c.w = opacity; diff --git a/src/og/entity/GeometryHandler.js b/src/og/entity/GeometryHandler.js index 1fab877b..77b5fa54 100644 --- a/src/og/entity/GeometryHandler.js +++ b/src/og/entity/GeometryHandler.js @@ -38,13 +38,13 @@ class GeometryHandler { this._removeGeometryExtentArr = []; this._removeGeometryExtents = {}; - //Polygon arrays + // Polygon arrays this._polyVerticesMerc = []; this._polyColors = []; this._polyPickingColors = []; this._polyIndexes = []; - //Line arrays + // Line arrays this._lineVerticesMerc = []; this._lineOrders = []; this._lineIndexes = []; @@ -54,7 +54,7 @@ class GeometryHandler { this._lineStrokes = []; this._lineStrokeColors = []; - //Buffers + // Buffers this._polyVerticesBufferMerc = null; this._polyColorsBuffer = null; this._polyPickingColorsBuffer = null; @@ -245,7 +245,7 @@ class GeometryHandler { geometry._polyVerticesLength = data.vertices.length; geometry._polyIndexesLength = indexes.length; - //Creates polygon stroke data + // Creates polygon stroke data geometry._lineVerticesHandlerIndex = this._lineVerticesMerc.length; geometry._lineOrdersHandlerIndex = this._lineOrders.length; geometry._lineIndexesHandlerIndex = this._lineIndexes.length; @@ -268,10 +268,9 @@ class GeometryHandler { let coordinates = geometry._coordinates; let vertices = [], - indexes = [], - colors = []; + indexes = []; - //Creates polygon stroke data + // Creates polygon stroke data geometry._lineVerticesHandlerIndex = this._lineVerticesMerc.length; geometry._lineOrdersHandlerIndex = this._lineOrders.length; geometry._lineIndexesHandlerIndex = this._lineIndexes.length; @@ -336,7 +335,7 @@ class GeometryHandler { ci[j] = [mercator.forward_lon(coordinates[j][0]), mercator.forward_lat(coordinates[j][1])]; } - //Creates polygon stroke data + // Creates polygon stroke data geometry._lineVerticesHandlerIndex = this._lineVerticesMerc.length; geometry._lineOrdersHandlerIndex = this._lineOrders.length; geometry._lineIndexesHandlerIndex = this._lineIndexes.length; @@ -365,7 +364,7 @@ class GeometryHandler { } } - //Creates polygon stroke data + // Creates polygon stroke data geometry._lineVerticesHandlerIndex = this._lineVerticesMerc.length; geometry._lineOrdersHandlerIndex = this._lineOrders.length; geometry._lineIndexesHandlerIndex = this._lineIndexes.length; @@ -385,7 +384,7 @@ class GeometryHandler { geometry._lineThicknessLength = this._lineThickness.length - geometry._lineThicknessHandlerIndex; } - //Refresh visibility + // Refresh visibility this.setGeometryVisibility(geometry); !this._updatedGeometry[geometry._id] && this._updatedGeometryArr.push(geometry); @@ -399,8 +398,8 @@ class GeometryHandler { if (index !== -1) { this._geometries.splice(index, 1); - //polygon - //this._polyVerticesLonLat.splice(geometry._polyVerticesHandlerIndex, geometry._polyVerticesLength); + // polygon + // this._polyVerticesLonLat.splice(geometry._polyVerticesHandlerIndex, geometry._polyVerticesLength); this._polyVerticesMerc.splice(geometry._polyVerticesHandlerIndex, geometry._polyVerticesLength); this._polyColors.splice(geometry._polyVerticesHandlerIndex * 2, geometry._polyVerticesLength * 2); this._polyPickingColors.splice(geometry._polyVerticesHandlerIndex * 2, geometry._polyVerticesLength * 2); @@ -410,8 +409,8 @@ class GeometryHandler { this._polyIndexes[i] -= di; } - //line - //this._lineVerticesLonLat.splice(geometry._lineVerticesHandlerIndex, geometry._lineVerticesLength); + // line + // this._lineVerticesLonLat.splice(geometry._lineVerticesHandlerIndex, geometry._lineVerticesLength); this._lineVerticesMerc.splice(geometry._lineVerticesHandlerIndex, geometry._lineVerticesLength); this._lineOrders.splice(geometry._lineOrdersHandlerIndex, geometry._lineOrdersLength); this._lineColors.splice(geometry._lineColorsHandlerIndex, geometry._lineColorsLength); @@ -425,7 +424,7 @@ class GeometryHandler { this._lineIndexes[i] -= di; } - //reindex + // reindex var g = this._geometries; for (let i = index; i < g.length; i++) { var gi = g[i]; diff --git a/src/og/entity/Label.js b/src/og/entity/Label.js index c08fe0e8..2cc0da95 100644 --- a/src/og/entity/Label.js +++ b/src/og/entity/Label.js @@ -8,7 +8,6 @@ import * as utils from '../utils/shared.js'; import { BaseBillboard } from './BaseBillboard.js'; import { Vec4 } from '../math/Vec4.js'; - const ALIGN = { RIGHT: 0, LEFT: 1, @@ -21,9 +20,9 @@ const ALIGN = { * @enum {number} */ const STR2ALIGN = { - "left": ALIGN.LEFT, - "right": ALIGN.RIGHT, - "center": ALIGN.CENTER + left: ALIGN.LEFT, + right: ALIGN.RIGHT, + center: ALIGN.CENTER }; /** diff --git a/src/og/entity/LabelHandler.js b/src/og/entity/LabelHandler.js index ff1c91fc..70c4d05e 100644 --- a/src/og/entity/LabelHandler.js +++ b/src/og/entity/LabelHandler.js @@ -50,7 +50,6 @@ class LabelHandler extends BillboardHandler { this._maxLetters = 25; } - initProgram() { if (this._renderer.handler) { @@ -170,7 +169,7 @@ class LabelHandler extends BillboardHandler { var x = label._positionHigh.x, y = label._positionHigh.y, z = label._positionHigh.z, w; BillboardHandler.concArr(this._positionHighArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); - x = label._positionLow.x, y = label._positionLow.y, z = label._positionLow.z; + x = label._positionLow.x; y = label._positionLow.y; z = label._positionLow.z; BillboardHandler.concArr(this._positionLowArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); x = label._size; @@ -185,22 +184,22 @@ class LabelHandler extends BillboardHandler { x = label._rotation; BillboardHandler.concArr(this._rotationArr, [x, x, x, x, x, x]); - x = label._alignedAxis.x, y = label._alignedAxis.y, z = label._alignedAxis.z; + x = label._alignedAxis.x; y = label._alignedAxis.y; z = label._alignedAxis.z; BillboardHandler.concArr(this._alignedAxisArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); x = label._fontIndex; BillboardHandler.concArr(this._fontIndexArr, [0, 0, 0, 0, 0, 0]); - x = 1.0 - label._outline, y = 0.0; + x = 1.0 - label._outline; y = 0.0; BillboardHandler.concArr(this._outlineArr, [x, y, x, y, x, y, x, y, x, y, x, y]); - x = 0.75, y = 0.7; + x = 0.75; y = 0.7; BillboardHandler.concArr(this._noOutlineArr, [x, y, x, y, x, y, x, y, x, y, x, y]); x = label._outlineColor.x; y = label._outlineColor.y; z = label._outlineColor.z; w = label._outlineColor.w; BillboardHandler.concArr(this._outlineColorArr, [x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w]); - x = label._entity._pickingColor.x / 255, y = label._entity._pickingColor.y / 255, z = label._entity._pickingColor.z / 255; + x = label._entity._pickingColor.x / 255; y = label._entity._pickingColor.y / 255; z = label._entity._pickingColor.z / 255; BillboardHandler.concArr(this._pickingColorArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); } }; @@ -261,7 +260,7 @@ class LabelHandler extends BillboardHandler { gl.bindBuffer(gl.ARRAY_BUFFER, this._fontIndexBuffer); gl.vertexAttribPointer(sha.a_fontIndex, this._fontIndexBuffer.itemSize, gl.FLOAT, false, 0, 0); - //buffer + // buffer gl.bindBuffer(gl.ARRAY_BUFFER, this._outlineColorBuffer); gl.vertexAttribPointer(sha.a_rgba, this._outlineColorBuffer.itemSize, gl.FLOAT, false, 0, 0); @@ -271,7 +270,7 @@ class LabelHandler extends BillboardHandler { gl.uniform1f(shu.uZ, -2.0); gl.drawArrays(gl.TRIANGLES, 0, this._vertexBuffer.numItems); - //nobuffer + // nobuffer gl.bindBuffer(gl.ARRAY_BUFFER, this._rgbaBuffer); gl.vertexAttribPointer(sha.a_rgba, this._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0); @@ -374,8 +373,8 @@ class LabelHandler extends BillboardHandler { label._handlerIndex = -1; label._handler = null; - //label._fontIndex = 0; - //label._fontAtlas = null; + // label._fontIndex = 0; + // label._fontAtlas = null; }; setText(index, text, fontIndex, align) { @@ -389,14 +388,14 @@ class LabelHandler extends BillboardHandler { var c = 0; - var j = i + c * 24; + // var j = i + c * 24; var n = fa.nodes[text[c]]; var f = n ? n.emptySize : 0.0; var offset = f; for (c = 0; c < text.length; c++) { var j = i + c * 24; - var n = fa.nodes[text[c]] || fa.nodes[" "]; + n = fa.nodes[text[c]] || fa.nodes[" "]; var tc = n.texCoords; a[j] = tc[0]; @@ -432,11 +431,11 @@ class LabelHandler extends BillboardHandler { offset += n.emptySize; } - //49/512 - font atlas left border letter offset + // 49/512 - font atlas left border letter offset if (align === ALIGN.CENTER) { offset = (f + 49 / 512 - offset) * 0.5; for (c = 0; c < text.length; c++) { - var j = i + c * 24; + let j = i + c * 24; a[j + 3] = offset; a[j + 7] = offset; a[j + 11] = offset; @@ -447,7 +446,7 @@ class LabelHandler extends BillboardHandler { } else if (align === ALIGN.LEFT) { offset = (f + 49 / 512 - offset); for (c = 0; c < text.length; c++) { - var j = i + c * 24; + let j = i + c * 24; a[j + 3] = offset; a[j + 7] = offset; a[j + 11] = offset; @@ -458,7 +457,7 @@ class LabelHandler extends BillboardHandler { } for (; c < this._maxLetters; c++) { - var j = i + c * 24; + let j = i + c * 24; a[j + 2] = -1.0; a[j + 6] = -1.0; a[j + 10] = -1.0; @@ -473,7 +472,7 @@ class LabelHandler extends BillboardHandler { setPositionArr(index, positionHigh, positionLow) { var i = index * 18 * this._maxLetters; var a = this._positionHighArr, x = positionHigh.x, y = positionHigh.y, z = positionHigh.z, - b = this._positionLowArr, xl = positionLow.x, yl = positionLow.y, zl = positionLow.z + b = this._positionLowArr, xl = positionLow.x, yl = positionLow.y, zl = positionLow.z; for (var q = 0; q < this._maxLetters; q++) { var j = i + q * 18; @@ -501,7 +500,7 @@ class LabelHandler extends BillboardHandler { a[j + 16] = y; a[j + 17] = z; - //low + // low b[j] = xl; b[j + 1] = yl; b[j + 2] = zl; @@ -731,7 +730,7 @@ class LabelHandler extends BillboardHandler { a[j + 5] = rotation; } - this._changedBuffers[ROTATION_BUFFER] = true + this._changedBuffers[ROTATION_BUFFER] = true; } setVertexArr(index, vertexArr) { @@ -849,11 +848,11 @@ class LabelHandler extends BillboardHandler { setMaxLetters(c) { this._maxLetters = c; - //... + // TODO: ... } refreshTexCoordsArr() { - //it is empty + // it is empty return null; } }; diff --git a/src/og/entity/PointCloud.js b/src/og/entity/PointCloud.js index e4e6a681..2a8a3319 100644 --- a/src/og/entity/PointCloud.js +++ b/src/og/entity/PointCloud.js @@ -221,13 +221,13 @@ class PointCloud { this._coordinatesData.push(pos.x, pos.y, pos.z); this._colorData.push(col.x / 255.0, col.y / 255.0, col.z / 255.0, col.w / 255.0); var p = { - '_pickingColor': new Vec3(), - '_entityCollection': this._entity && this._entity._entityCollection, - 'index': i, - 'position': pos, - 'color': col, - 'pointCloud': this, - 'properties': pi[7] || {} + _pickingColor: new Vec3(), + _entityCollection: this._entity && this._entity._entityCollection, + index: i, + position: pos, + color: col, + pointCloud: this, + properties: pi[7] || {} }; this._points.push(p); @@ -244,21 +244,21 @@ class PointCloud { setPointPosition(index, x, y, z) { - //... + // TODO: ... this._changedBuffers[COORDINATES_BUFFER] = true; } setPointColor(index, r, g, b, a) { - //... + // TODO: ... this._changedBuffers[COLOR_BUFFER] = true; } addPoints(points) { - //... + // TODO: ... this._changedBuffers[COORDINATES_BUFFER] = true; this._changedBuffers[COLOR_BUFFER] = true; @@ -267,7 +267,7 @@ class PointCloud { addPoint(index, point) { - //... + // TODO: ... this._changedBuffers[COORDINATES_BUFFER] = true; this._changedBuffers[COLOR_BUFFER] = true; @@ -286,7 +286,7 @@ class PointCloud { removePoint(index) { - //... + // TODO: ... this._changedBuffers[COORDINATES_BUFFER] = true; this._changedBuffers[COLOR_BUFFER] = true; @@ -295,7 +295,7 @@ class PointCloud { insertPoint(index, point) { - //... + // TODO: ... this._changedBuffers[COORDINATES_BUFFER] = true; this._changedBuffers[COLOR_BUFFER] = true; diff --git a/src/og/entity/PointCloudHandler.js b/src/og/entity/PointCloudHandler.js index 6714d3ae..f3fc61b7 100644 --- a/src/og/entity/PointCloudHandler.js +++ b/src/og/entity/PointCloudHandler.js @@ -61,7 +61,7 @@ class PointCloudHandler { setRenderNode(renderNode) { this._renderer = renderNode.renderer; - this._initProgram() + this._initProgram(); for (var i = 0; i < this._pointClouds.length; i++) { this._pointClouds[i].setRenderNode(renderNode); } diff --git a/src/og/entity/Polyline.js b/src/og/entity/Polyline.js index a81bcd8c..16c998b5 100644 --- a/src/og/entity/Polyline.js +++ b/src/og/entity/Polyline.js @@ -8,8 +8,6 @@ import * as utils from '../utils/shared.js'; import { Extent } from '../Extent.js'; import { LonLat } from '../LonLat.js'; import { Vec3 } from '../math/Vec3.js'; -import { Vec4 } from '../math/Vec4.js'; -import { doubleToTwoFloats } from '../math/coder.js'; const VERTICES_BUFFER = 0; const INDEX_BUFFER = 1; @@ -62,7 +60,7 @@ class Polyline { * @public * @type {Array} */ - this._defaultColor = utils.htmlColorToFloat32Array(options.color || DEFAULT_COLOR, options.opacity);//utils.createColorRGBA(options.color, new Vec4(1.0, 1.0, 1.0, 1.0)); + this._defaultColor = utils.htmlColorToFloat32Array(options.color || DEFAULT_COLOR, options.opacity); // utils.createColorRGBA(options.color, new Vec4(1.0, 1.0, 1.0, 1.0)); /** * Polyline visibility. @@ -146,7 +144,7 @@ class Polyline { this._changedBuffers = new Array(this._buffersUpdateCallbacks.length); - //create path + // create path if (options.pathLonLat) { this.setPathLonLat(options.pathLonLat); } else if (options.path3v) { @@ -167,7 +165,6 @@ class Polyline { this._counter = n; } - /** * Appends to the line array new cartesian coordinates line data. * @param {Array.>} path3v - Line coordinates path array. @@ -282,21 +279,25 @@ class Polyline { outTransformedPathLonLat[j].push(lonLat); outTransformedPathMerc[j].push(lonLat.forwardMercator()); - if (lonLat.lon < outExtent.southWest.lon) + if (lonLat.lon < outExtent.southWest.lon) { outExtent.southWest.lon = lonLat.lon; - if (lonLat.lat < outExtent.southWest.lat) + } + if (lonLat.lat < outExtent.southWest.lat) { outExtent.southWest.lat = lonLat.lat; - if (lonLat.lon > outExtent.northEast.lon) + } + if (lonLat.lon > outExtent.northEast.lon) { outExtent.northEast.lon = lonLat.lon; - if (lonLat.lat > outExtent.northEast.lat) + } + if (lonLat.lat > outExtent.northEast.lat) { outExtent.northEast.lat = lonLat.lat; + } } if (pathColors_j && pathColors_j[i]) { color = pathColors_j[i]; } - r = color[R], g = color[G], b = color[B], a = (color[A] != undefined ? color[A] : 1.0); + r = color[R]; g = color[G]; b = color[B]; a = (color[A] != undefined ? color[A] : 1.0); Vec3.doubleToTwoFloats(cur, v_high, v_low); outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z); @@ -332,7 +333,7 @@ class Polyline { color = pathColors_j[path.length - 1]; } - r = color[R], g = color[G], b = color[B], a = (color[A] != undefined ? color[A] : 1.0); + r = color[R]; g = color[G]; b = color[B]; a = (color[A] != undefined ? color[A] : 1.0); Vec3.doubleToTwoFloats(first, v_high, v_low); outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z); @@ -482,14 +483,18 @@ class Polyline { transformedPathLonLat.push(lonLat); transformedPathMerc.push(lonLat.forwardMercator()); - if (lonLat.lon < outExtent.southWest.lon) + if (lonLat.lon < outExtent.southWest.lon) { outExtent.southWest.lon = lonLat.lon; - if (lonLat.lat < outExtent.southWest.lat) + } + if (lonLat.lat < outExtent.southWest.lat) { outExtent.southWest.lat = lonLat.lat; - if (lonLat.lon > outExtent.northEast.lon) + } + if (lonLat.lon > outExtent.northEast.lon) { outExtent.northEast.lon = lonLat.lon; - if (lonLat.lat > outExtent.northEast.lat) + } + if (lonLat.lat > outExtent.northEast.lat) { outExtent.northEast.lat = lonLat.lat; + } } Vec3.doubleToTwoFloats(point3v, v_high, v_low); @@ -545,7 +550,6 @@ class Polyline { outIndexes[ii + 1] = index++; outIndexes[ii + 2] = index++; outIndexes[ii + 3] = index++; - //} // // Close path @@ -682,7 +686,7 @@ class Polyline { color = pathColors_j[i]; } - r = color[R], g = color[G], b = color[B], a = (color[A] != undefined ? color[A] : 1.0); + r = color[R]; g = color[G]; b = color[B]; a = (color[A] != undefined ? color[A] : 1.0); var cartesian = ellipsoid.lonLatToCartesian(cur); outTransformedPathCartesian[j].push(cartesian); @@ -698,14 +702,18 @@ class Polyline { outOrders.push(1, -1, 2, -2); outIndexes.push(index++, index++, index++, index++); - if (cur.lon < outExtent.southWest.lon) + if (cur.lon < outExtent.southWest.lon) { outExtent.southWest.lon = cur.lon; - if (cur.lat < outExtent.southWest.lat) + } + if (cur.lat < outExtent.southWest.lat) { outExtent.southWest.lat = cur.lat; - if (cur.lon > outExtent.northEast.lon) + } + if (cur.lon > outExtent.northEast.lon) { outExtent.northEast.lon = cur.lon; - if (cur.lat > outExtent.northEast.lat) + } + if (cur.lat > outExtent.northEast.lat) { outExtent.northEast.lat = cur.lat; + } } var first; @@ -745,7 +753,7 @@ class Polyline { color = pathColors_j[path.length - 1]; } - r = color[R], g = color[G], b = color[B], a = (color[A] != undefined ? color[A] : 1.0); + r = color[R]; g = color[G]; b = color[B]; a = (color[A] != undefined ? color[A] : 1.0); Vec3.doubleToTwoFloats(first, v_high, v_low); outVerticesHigh.push(v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z, v_high.x, v_high.y, v_high.z); @@ -789,7 +797,7 @@ class Polyline { var last; if (this._closedLine) { - last = path[path.length - 1] + last = path[path.length - 1]; } else { last = new Vec3(path[0].x + path[0].x - path[1].x, path[0].y + path[0].y - path[1].y, path[0].z + path[0].z - path[1].z); } @@ -839,14 +847,18 @@ class Polyline { l[j][i] = lonLat; m[j][i] = lonLat.forwardMercator(); - if (lonLat.lon < extent.southWest.lon) + if (lonLat.lon < extent.southWest.lon) { extent.southWest.lon = lonLat.lon; - if (lonLat.lat < extent.southWest.lat) + } + if (lonLat.lat < extent.southWest.lat) { extent.southWest.lat = lonLat.lat; - if (lonLat.lon > extent.northEast.lon) + } + if (lonLat.lon > extent.northEast.lon) { extent.northEast.lon = lonLat.lon; - if (lonLat.lat > extent.northEast.lat) + } + if (lonLat.lat > extent.northEast.lat) { extent.northEast.lat = lonLat.lat; + } } Vec3.doubleToTwoFloats(cur, v_high, v_low); @@ -1011,14 +1023,18 @@ class Polyline { vh[k] = v_high.z; vl[k++] = v_low.z; - if (cur.lon < extent.southWest.lon) + if (cur.lon < extent.southWest.lon) { extent.southWest.lon = cur.lon; - if (cur.lat < extent.southWest.lat) + } + if (cur.lat < extent.southWest.lat) { extent.southWest.lat = cur.lat; - if (cur.lon > extent.northEast.lon) + } + if (cur.lon > extent.northEast.lon) { extent.northEast.lon = cur.lon; - if (cur.lat > extent.northEast.lat) + } + if (cur.lat > extent.northEast.lat) { extent.northEast.lat = cur.lat; + } } var first; @@ -1079,14 +1095,18 @@ class Polyline { for (var j = 0; j < pi.length; j++) { var lon = pi[j].lon, lat = pi[j].lat; - if (lon > extent.northEast.lon) + if (lon > extent.northEast.lon) { extent.northEast.lon = lon; - if (lat > extent.northEast.lat) + } + if (lat > extent.northEast.lat) { extent.northEast.lat = lat; - if (lon < extent.southWest.lon) + } + if (lon < extent.southWest.lon) { extent.southWest.lon = lon; - if (lat < extent.southWest.lat) + } + if (lat < extent.southWest.lat) { extent.southWest.lat = lat; + } } } @@ -1129,12 +1149,10 @@ class Polyline { let _closedLine = this._closedLine || path.length === 1; - //if (path.length === 1) return; - if (index === 0 || index === 1) { var last; if (_closedLine) { - last = path[path.length - 1] + last = path[path.length - 1]; } else { last = new Vec3(path[0].x + path[0].x - path[1].x, path[0].y + path[0].y - path[1].y, path[0].z + path[0].z - path[1].z); } @@ -1181,19 +1199,23 @@ class Polyline { var extent = this._extent; extent.southWest.set(180.0, 90.0); extent.northEast.set(-180.0, -90.0); - for (var i = 0; i < l.length; i++) { + for (let i = 0; i < l.length; i++) { var pi = l[i]; for (var j = 0; j < pi.length; j++) { var lon = pi[j].lon, lat = pi[j].lat; - if (lon > extent.northEast.lon) + if (lon > extent.northEast.lon) { extent.northEast.lon = lon; - if (lat > extent.northEast.lat) + } + if (lat > extent.northEast.lat) { extent.northEast.lat = lat; - if (lon < extent.southWest.lon) + } + if (lon < extent.southWest.lon) { extent.southWest.lon = lon; - if (lat < extent.southWest.lat) + } + if (lat < extent.southWest.lat) { extent.southWest.lat = lat; + } } } } @@ -1280,7 +1302,7 @@ class Polyline { removeSegment(index) { // - //TODO: could be optimized. Partially see appendPoint3v. + // TODO: could be optimized. Partially see appendPoint3v. // this._path3v.splice(index, 1); this.setPath3v([].concat(this._path3v)); @@ -1288,7 +1310,7 @@ class Polyline { removePoint(index, multiLineIndex) { // - //TODO: could be optimized. Partially see appendPoint3v. + // TODO: could be optimized. Partially see appendPoint3v. // multiLineIndex = multiLineIndex || 0; this._path3v[multiLineIndex].splice(index, 1); @@ -1357,7 +1379,7 @@ class Polyline { */ addPoint3v(point3v, multiLineIndex = 0) { // - //TODO: could be optimized + // TODO: could be optimized // if (multiLineIndex >= this._path3v.length) { this._path3v.push([]); @@ -1374,7 +1396,7 @@ class Polyline { */ addPointLonLat(lonLat, multiLineIndex = 0) { // - //TODO: could be optimized + // TODO: could be optimized // if (multiLineIndex >= this._pathLonLat.length) { this._pathLonLat.push([]); @@ -1406,7 +1428,7 @@ class Polyline { } if (!colors[index]) { - colors[index] = new Array(color[R], color[G], color[B], color[A] || 1.0); + colors[index] = [color[R], color[G], color[B], color[A] || 1.0]; } else { colors[index][R] = color[R]; colors[index][G] = color[G]; @@ -1634,21 +1656,10 @@ class Polyline { setPathColors(pathColors) { if (this._renderNode) { - //... + // ... } } - setPointColor(color, index, segmentIndex) { - let s = this._pathColors[segmentIndex]; - if (s) { - s[index][0] = color[0]; - s[index][1] = color[1]; - s[index][2] = color[2]; - s[index][3] = color[3]; - } - //... - } - setColorHTML(htmlColor) { let color = utils.htmlColorToRgba(htmlColor), p = this._pathColors; @@ -1750,7 +1761,7 @@ class Polyline { gl.uniformMatrix4fv(shu.proj, false, r.activeCamera._projectionMatrix._m); gl.uniformMatrix4fv(shu.view, false, r.activeCamera._viewMatrix._m); - //gl.uniform4fv(shu.color, [this.color.x, this.color.y, this.color.z, this.color.w * this._handler._entityCollection._fadingOpacity]); + // gl.uniform4fv(shu.color, [this.color.x, this.color.y, this.color.z, this.color.w * this._handler._entityCollection._fadingOpacity]); gl.uniform3fv(shu.eyePositionHigh, r.activeCamera.eyeHigh); gl.uniform3fv(shu.eyePositionLow, r.activeCamera.eyeLow); @@ -1759,11 +1770,9 @@ class Polyline { gl.uniform2fv(shu.viewport, [r.handler.canvas.width, r.handler.canvas.height]); gl.uniform1f(shu.thickness, this.thickness * 0.5); - gl.bindBuffer(gl.ARRAY_BUFFER, this._colorsBuffer); gl.vertexAttribPointer(sha.color, this._colorsBuffer.itemSize, gl.FLOAT, false, 0, 0); - var v = this._verticesHighBuffer; gl.bindBuffer(gl.ARRAY_BUFFER, v); gl.vertexAttribPointer(sha.prevHigh, v.itemSize, gl.FLOAT, false, 12, 0); diff --git a/src/og/entity/PolylineHandler.js b/src/og/entity/PolylineHandler.js index e0a422f4..1ce66523 100644 --- a/src/og/entity/PolylineHandler.js +++ b/src/og/entity/PolylineHandler.js @@ -44,7 +44,7 @@ class PolylineHandler { setRenderNode(renderNode) { this._renderer = renderNode.renderer; - this._initProgram() + this._initProgram(); for (var i = 0; i < this._polylines.length; i++) { this._polylines[i].setRenderNode(renderNode); } diff --git a/src/og/entity/Ray.js b/src/og/entity/Ray.js index 3a563505..9e162772 100644 --- a/src/og/entity/Ray.js +++ b/src/og/entity/Ray.js @@ -31,10 +31,10 @@ class Ray { */ this.id = Entity._staticCounter++; - //Thickenss + // Thickenss this._thickness = options.thickness || 2.0; - //RTE length + // RTE length this._length = options.length || 0.0; this._lengthHighLow = new Float32Array(2); doubleToTwoFloats2(this._length, this._lengthHighLow); @@ -51,7 +51,7 @@ class Ray { this._endPositionLow = new Vec3(); Vec3.doubleToTwoFloats(this._endPosition, this._endPositionHigh, this._endPositionLow); - //start end point colors + // start end point colors this._startColor = utils.createColorRGBA(options.startColor); this._endColor = utils.createColorRGBA(options.endColor); @@ -142,7 +142,6 @@ class Ray { setLength(length) { this._length = length; - //doubleToTwoFloats2(this._length, this._lengthHighLow); this._handler && this._handler.setLengthArr(this._handlerIndex, length); } diff --git a/src/og/entity/RayHandler.js b/src/og/entity/RayHandler.js index 99f16f49..8a53fd92 100644 --- a/src/og/entity/RayHandler.js +++ b/src/og/entity/RayHandler.js @@ -90,9 +90,9 @@ class RayHandler { this._renderer.handler.addProgram(shaders.rayScreen()); } - //if (!this._renderer.handler.programs.billboardPicking) { - // this._renderer.handler.addProgram(shaders.billboardPicking()); - //} + // if (!this._renderer.handler.programs.billboardPicking) { + // this._renderer.handler.addProgram(shaders.billboardPicking()); + // } } } @@ -108,7 +108,7 @@ class RayHandler { } } - _removeRay() { + _removeRays() { var i = this._rays.length; while (i--) { var ri = this._rays[i]; @@ -198,13 +198,13 @@ class RayHandler { let x = ray._startPositionHigh.x, y = ray._startPositionHigh.y, z = ray._startPositionHigh.z; RayHandler.concArr(this._startPositionHighArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); - x = ray._startPositionLow.x, y = ray._startPositionLow.y, z = ray._startPositionLow.z; + x = ray._startPositionLow.x; y = ray._startPositionLow.y; z = ray._startPositionLow.z; RayHandler.concArr(this._startPositionLowArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); - x = ray._endPositionHigh.x, y = ray._endPositionHigh.y, z = ray._endPositionHigh.z; + x = ray._endPositionHigh.x; y = ray._endPositionHigh.y; z = ray._endPositionHigh.z; RayHandler.concArr(this._endPositionHighArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); - x = ray._endPositionLow.x, y = ray._endPositionLow.y, z = ray._endPositionLow.z; + x = ray._endPositionLow.x; y = ray._endPositionLow.y; z = ray._endPositionLow.z; RayHandler.concArr(this._endPositionLowArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); x = ray._thickness; @@ -217,7 +217,7 @@ class RayHandler { r1 = ray._endColor.x, g1 = ray._endColor.y, b1 = ray._endColor.z, a1 = ray._endColor.w; RayHandler.concArr(this._rgbaArr, [r1, g1, b1, a1, r0, g0, b0, a0, r0, g0, b0, a0, r0, g0, b0, a0, r1, g1, b1, a1, r1, g1, b1, a1]); - x = ray._entity._pickingColor.x / 255, y = ray._entity._pickingColor.y / 255, z = ray._entity._pickingColor.z / 255; + x = ray._entity._pickingColor.x / 255; y = ray._entity._pickingColor.y / 255; z = ray._entity._pickingColor.z / 255; RayHandler.concArr(this._pickingColorArr, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]); } @@ -244,23 +244,18 @@ class RayHandler { gl.uniform1f(shu.resolution, r.activeCamera._tanViewAngle_hradOneByHeight); - - gl.bindBuffer(gl.ARRAY_BUFFER, this._startPositionHighBuffer); gl.vertexAttribPointer(sha.a_startPosHigh, this._startPositionHighBuffer.itemSize, gl.FLOAT, false, 0, 0); gl.bindBuffer(gl.ARRAY_BUFFER, this._startPositionLowBuffer); gl.vertexAttribPointer(sha.a_startPosLow, this._startPositionLowBuffer.itemSize, gl.FLOAT, false, 0, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, this._endPositionHighBuffer); gl.vertexAttribPointer(sha.a_endPosHigh, this._endPositionHighBuffer.itemSize, gl.FLOAT, false, 0, 0); gl.bindBuffer(gl.ARRAY_BUFFER, this._endPositionLowBuffer); gl.vertexAttribPointer(sha.a_endPosLow, this._endPositionLowBuffer.itemSize, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this._rgbaBuffer); gl.vertexAttribPointer(sha.a_rgba, this._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0); @@ -278,7 +273,7 @@ class RayHandler { } _pickingPASS() { - //... + // ... }; draw() { @@ -340,7 +335,7 @@ class RayHandler { var i = index * 18; - //High + // High var a = this._startPositionHighArr, x = positionHigh.x, y = positionHigh.y, z = positionHigh.z; a[i] = x; @@ -367,8 +362,8 @@ class RayHandler { a[i + 16] = y; a[i + 17] = z; - //Low - a = this._startPositionLowArr, x = positionLow.x, y = positionLow.y, z = positionLow.z; + // Low + a = this._startPositionLowArr; x = positionLow.x; y = positionLow.y; z = positionLow.z; a[i] = x; a[i + 1] = y; @@ -400,7 +395,7 @@ class RayHandler { setEndPositionArr(index, positionHigh, positionLow) { var i = index * 18; - //High + // High var a = this._endPositionHighArr, x = positionHigh.x, y = positionHigh.y, z = positionHigh.z; a[i] = x; @@ -427,8 +422,8 @@ class RayHandler { a[i + 16] = y; a[i + 17] = z; - //Low - a = this._endPositionLowArr, x = positionLow.x, y = positionLow.y, z = positionLow.z; + // Low + a = this._endPositionLowArr; x = positionLow.x; y = positionLow.y; z = positionLow.z; a[i] = x; a[i + 1] = y; @@ -541,7 +536,7 @@ class RayHandler { a[i + 4] = thickness; a[i + 5] = thickness; - this._changedBuffers[THICKNESS_BUFFER] = true + this._changedBuffers[THICKNESS_BUFFER] = true; } setLengthArr(index, length) { @@ -556,7 +551,7 @@ class RayHandler { a[i + 4] = length; a[i + 5] = length; - this._changedBuffers[LENGTH_BUFFER] = true + this._changedBuffers[LENGTH_BUFFER] = true; } setVisibility(index, visibility) { diff --git a/src/og/entity/ShapeHandler.js b/src/og/entity/ShapeHandler.js index a77d5a74..90cf9f79 100644 --- a/src/og/entity/ShapeHandler.js +++ b/src/og/entity/ShapeHandler.js @@ -44,15 +44,15 @@ class ShapeHandler { if (!this._renderer.handler.programs.shape_wl) { this._renderer.handler.addProgram(shaders.shape_wl()); } - //if (!this._renderer.handler.programs.shapePicking) { - // this._renderer.handler.addProgram(shaders.shapePicking()); - //} + // if (!this._renderer.handler.programs.shapePicking) { + // this._renderer.handler.addProgram(shaders.shapePicking()); + // } } } setRenderNode(renderNode) { this._renderer = renderNode.renderer; - this._initProgram() + this._initProgram(); for (var i = 0; i < this._shapes.length; i++) { this._shapes[i].setRenderNode(renderNode); } @@ -68,7 +68,7 @@ class ShapeHandler { } remove(shape) { - //TODO + // TODO } draw() { @@ -79,11 +79,11 @@ class ShapeHandler { } drawPicking() { - //TODO + // TODO } clear() { - //TODO + // TODO } }; diff --git a/src/og/entity/Strip.js b/src/og/entity/Strip.js index 90813d48..673b050d 100644 --- a/src/og/entity/Strip.js +++ b/src/og/entity/Strip.js @@ -3,7 +3,6 @@ import { Vec3 } from '../math/Vec3.js'; import { Line3 } from '../math/Line3.js'; - let _tempHigh = new Vec3(), _tempLow = new Vec3(); @@ -496,7 +495,7 @@ class Strip { let p01 = p0.lerp(p1, dj), p23 = p2.lerp(p3, dj); - //prev + // prev (new Line3(p02, p13)).intersects(new Line3(p01, p23), p); let ij = i * gs1 + j; @@ -515,7 +514,7 @@ class Strip { vLow[ind3 + 1] = _tempLow.y; vLow[ind3 + 2] = _tempLow.z; - //next + // next let p45 = p4.lerp(p5, dj); p23 = p2.lerp(p3, dj); diff --git a/src/og/entity/StripHandler.js b/src/og/entity/StripHandler.js index 9d2a2efb..d3377826 100644 --- a/src/og/entity/StripHandler.js +++ b/src/og/entity/StripHandler.js @@ -96,7 +96,7 @@ class StripHandler { setRenderNode(renderNode) { this._renderer = renderNode.renderer; - this._initProgram() + this._initProgram(); for (var i = 0; i < this._strips.length; i++) { this._strips[i].setRenderNode(renderNode); } diff --git a/src/og/index.core.js b/src/og/index.core.js index 019521aa..54bc0ac6 100644 --- a/src/og/index.core.js +++ b/src/og/index.core.js @@ -7,22 +7,11 @@ import * as utils from './utils/shared.js'; import { Box } from './bv/Box.js'; import { Sphere } from './bv/Sphere.js'; -const bv = { - 'Box': Box, - 'Sphere': Sphere -}; - import { Control } from './control/Control.js'; import { DebugInfo } from './control/DebugInfo'; import { SimpleNavigation } from './control/SimpleNavigation.js'; import { ShowFps } from './control/ShowFps.js'; -const control = { - 'DebugInfo': DebugInfo, - 'SimpleNavigation': SimpleNavigation, - 'ShowFps': ShowFps -}; - import { Entity } from './entity/Entity.js'; import { EntityCollection } from './entity/EntityCollection.js'; import { Billboard } from './entity/Billboard.js'; @@ -30,13 +19,6 @@ import { Label } from './entity/Label.js'; import { PointCloud } from './entity/PointCloud.js'; import { Polyline } from './entity/Polyline.js'; -const entity = { - 'Billboard': Billboard, - 'Label': Label, - 'PointCloud': PointCloud, - 'Polyline': Polyline -}; - import { input } from './input/input.js'; import { Camera } from './camera/Camera.js'; @@ -58,14 +40,6 @@ import { Multisample } from './webgl/Multisample.js'; import { types } from './webgl/types.js'; import { Program } from './webgl/Program.js'; -const webgl = { - 'Framebuffer': Framebuffer, - 'Handler': Handler, - 'Multisample': Multisample, - 'types': types, - 'Program': Program -}; - import { Renderer } from './renderer/Renderer.js'; import { LightSource } from './light/LightSource.js'; @@ -78,8 +52,34 @@ import { RenderNode } from './scene/RenderNode.js'; import { TextureAtlas } from './utils/TextureAtlas.js'; +const bv = { + Box: Box, + Sphere: Sphere +}; + +const control = { + DebugInfo: DebugInfo, + SimpleNavigation: SimpleNavigation, + ShowFps: ShowFps +}; + +const entity = { + Billboard: Billboard, + Label: Label, + PointCloud: PointCloud, + Polyline: Polyline +}; + +const webgl = { + Framebuffer: Framebuffer, + Handler: Handler, + Multisample: Multisample, + types: types, + Program: Program +}; + const scene = { - 'Axes': Axes + Axes: Axes }; export { diff --git a/src/og/index.js b/src/og/index.js index e29009f6..8a771d74 100644 --- a/src/og/index.js +++ b/src/og/index.js @@ -1,9 +1,5 @@ 'use strict'; -const version = { - version: __VERSION__ -}; - import '../../css/og.css'; import * as jd from './astro/jd.js'; @@ -16,11 +12,6 @@ import { Globe } from './Globe.js'; import { Box } from './bv/Box.js'; import { Sphere } from './bv/Sphere.js'; -const bv = { - 'Box': Box, - 'Sphere': Sphere -}; - import { CanvasTiles } from './layer/CanvasTiles.js'; import { GeoImage } from './layer/GeoImage.js'; import { GeoTexture2d } from './layer/GeoTexture2d.js'; @@ -30,16 +21,6 @@ import { Vector } from './layer/Vector.js'; import { WMS } from './layer/WMS.js'; import { XYZ } from './layer/XYZ.js'; -const layer = { - 'CanvasTiles': CanvasTiles, - 'GeoImage': GeoImage, - 'GeoTexture2d': GeoTexture2d, - 'GeoVideo': GeoVideo, - 'Vector': Vector, - 'WMS': WMS, - 'XYZ': XYZ, -}; - import { Control } from './control/Control.js'; import { DebugInfo } from './control/DebugInfo'; import { EarthCoordinates } from './control/EarthCoordinates.js'; @@ -54,21 +35,6 @@ import { ShowFps } from './control/ShowFps.js'; import { Sun } from './control/Sun.js'; import { ZoomControl } from './control/ZoomControl.js'; -const control = { - 'DebugInfo': DebugInfo, - 'EarthCoordinates': EarthCoordinates, - 'GeoImageDragControl': GeoImageDragControl, - 'KeyboardNavigation': KeyboardNavigation, - 'LayerSwitcher': LayerSwitcher, - 'MouseNavigation': MouseNavigation, - 'ToggleWireframe': ToggleWireframe, - 'TouchNavigation': TouchNavigation, - 'SimpleNavigation': SimpleNavigation, - 'ShowFps': ShowFps, - 'Sun': Sun, - 'ZoomControl': ZoomControl -}; - import { Entity } from './entity/Entity.js'; import { EntityCollection } from './entity/EntityCollection.js'; import { Billboard } from './entity/Billboard.js'; @@ -77,14 +43,6 @@ import { Label } from './entity/Label.js'; import { PointCloud } from './entity/PointCloud.js'; import { Polyline } from './entity/Polyline.js'; -const entity = { - 'Billboard': Billboard, - 'Geometry': Geometry, - 'Label': Label, - 'PointCloud': PointCloud, - 'Polyline': Polyline -}; - import { input } from './input/input.js'; import { Ellipsoid } from './ellipsoid/Ellipsoid.js'; @@ -94,12 +52,6 @@ import { EmptyTerrain } from './terrain/EmptyTerrain.js'; import { GlobusTerrain } from './terrain/GlobusTerrain.js'; import { MapboxTerrain } from './terrain/MapboxTerrain.js'; -const terrain = { - 'EmptyTerrain': EmptyTerrain, - 'GlobusTerrain': GlobusTerrain, - 'MapboxTerrain': MapboxTerrain -}; - import { Camera } from './camera/Camera.js'; import { PlanetCamera } from './camera/PlanetCamera.js'; @@ -120,14 +72,6 @@ import { Multisample } from './webgl/Multisample.js'; import { types } from './webgl/types.js'; import { Program } from './webgl/Program.js'; -const webgl = { - 'Framebuffer': Framebuffer, - 'Handler': Handler, - 'Multisample': Multisample, - 'types': types, - 'Program': Program -}; - import { Renderer } from './renderer/Renderer.js'; import { LightSource } from './light/LightSource.js'; @@ -141,9 +85,65 @@ import { Axes } from './scene/Axes.js'; import { Planet } from './scene/Planet.js'; import { RenderNode } from './scene/RenderNode.js'; +const version = { + version: __VERSION__ +}; + +const bv = { + Box: Box, + Sphere: Sphere +}; + +const layer = { + CanvasTiles: CanvasTiles, + GeoImage: GeoImage, + GeoTexture2d: GeoTexture2d, + GeoVideo: GeoVideo, + Vector: Vector, + WMS: WMS, + XYZ: XYZ +}; + +const control = { + DebugInfo: DebugInfo, + EarthCoordinates: EarthCoordinates, + GeoImageDragControl: GeoImageDragControl, + KeyboardNavigation: KeyboardNavigation, + LayerSwitcher: LayerSwitcher, + MouseNavigation: MouseNavigation, + ToggleWireframe: ToggleWireframe, + TouchNavigation: TouchNavigation, + SimpleNavigation: SimpleNavigation, + ShowFps: ShowFps, + Sun: Sun, + ZoomControl: ZoomControl +}; + +const entity = { + Billboard: Billboard, + Geometry: Geometry, + Label: Label, + PointCloud: PointCloud, + Polyline: Polyline +}; + +const terrain = { + EmptyTerrain: EmptyTerrain, + GlobusTerrain: GlobusTerrain, + MapboxTerrain: MapboxTerrain +}; + +const webgl = { + Framebuffer: Framebuffer, + Handler: Handler, + Multisample: Multisample, + types: types, + Program: Program +}; + const scene = { - 'Planet': Planet, - 'Axes': Axes + Planet: Planet, + Axes: Axes }; export { diff --git a/src/og/input/KeyboardHandler.js b/src/og/input/KeyboardHandler.js index e2ef718f..c0b96b66 100644 --- a/src/og/input/KeyboardHandler.js +++ b/src/og/input/KeyboardHandler.js @@ -20,8 +20,8 @@ const KeyboardHandler = function () { } else { KeyboardHandler.prototype._instance = this; - document.onkeydown = function (event) { _event = event; _active && _that.handleKeyDown.call(_that) }; - document.onkeyup = function (event) { _event = event; _active && _that.handleKeyUp.call(_that) }; + document.onkeydown = function (event) { _event = event; _active && _that.handleKeyDown(); }; + document.onkeyup = function (event) { _event = event; _active && _that.handleKeyUp(); }; } var _sortByPriority = function (a, b) { @@ -30,7 +30,7 @@ const KeyboardHandler = function () { this.removeEvent = function (events, callback) { // - //TODO:... + // TODO:... // }; @@ -43,17 +43,17 @@ const KeyboardHandler = function () { priority = 1600; } switch (event) { - case "keyfree": { + case "keyfree": if (!_unpressedKeysCallbacks[keyCode]) { _unpressedKeysCallbacks[keyCode] = []; } _unpressedKeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority }); _unpressedKeysCallbacks[keyCode].sort(_sortByPriority); - } break; + break; - case "keypress": { + case "keypress": if (keyCode == null) { - _anykeyCallback = { "callback": callback, "sender": sender || _that }; + _anykeyCallback = { callback: callback, sender: sender || _that }; } else { if (!_pressedKeysCallbacks[keyCode]) { _pressedKeysCallbacks[keyCode] = []; @@ -61,15 +61,15 @@ const KeyboardHandler = function () { _pressedKeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority }); _pressedKeysCallbacks[keyCode].sort(_sortByPriority); } - } break; + break; - case "charkeypress": { + case "charkeypress": if (!_charkeysCallbacks[keyCode]) { _charkeysCallbacks[keyCode] = []; } _charkeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority }); _charkeysCallbacks[keyCode].sort(_sortByPriority); - } break; + break; } }; diff --git a/src/og/input/MouseHandler.js b/src/og/input/MouseHandler.js index 6a02d401..ad27ef7a 100644 --- a/src/og/input/MouseHandler.js +++ b/src/og/input/MouseHandler.js @@ -10,7 +10,7 @@ const MouseHandler = function (htmlObject) { MouseHandler.prototype.setEvent = function (event, sender, callback) { switch (event) { - case "mousewheel": { + case "mousewheel": this._htmlObject.addEventListener('mousewheel', function (evt) { var delta = evt.deltaY || evt.detail || evt.wheelDelta; if (evt.wheelDelta == undefined) { @@ -28,8 +28,9 @@ MouseHandler.prototype.setEvent = function (event, sender, callback) { callback.call(sender, evt); evt.preventDefault(); }, false); - } break; - case "mousedown": { + break; + + case "mousedown": this._htmlObject.addEventListener('mousedown', function (event) { callback.call(sender, event); }); @@ -37,21 +38,23 @@ MouseHandler.prototype.setEvent = function (event, sender, callback) { event.preventDefault(); return false; }); - } break; - case "mouseup": { + break; + + case "mouseup": this._htmlObject.addEventListener('mouseup', function (event) { callback.call(sender, event); }); - } break; - case "mousemove": { + break; + + case "mousemove": this._htmlObject.addEventListener('mousemove', function (event) { var rect = this.getBoundingClientRect(); callback.call(sender, { - 'clientX': event.clientX - rect.left, - 'clientY': event.clientY - rect.top + clientX: event.clientX - rect.left, + clientY: event.clientY - rect.top }); }); - } break; + break; } }; diff --git a/src/og/input/TouchHandler.js b/src/og/input/TouchHandler.js index 8300aa59..6e34fefe 100644 --- a/src/og/input/TouchHandler.js +++ b/src/og/input/TouchHandler.js @@ -10,7 +10,7 @@ const TouchHandler = function (htmlObject) { TouchHandler.prototype.setEvent = function (event, sender, callback) { switch (event) { - case "touchcancel": { + case "touchcancel": this._htmlObject.addEventListener('touchcancel', function (event) { event.preventDefault(); var rect = this.getBoundingClientRect(); @@ -19,9 +19,9 @@ TouchHandler.prototype.setEvent = function (event, sender, callback) { callback.call(sender, event); event.preventDefault(); }); - } break; - case "touchstart": { + + case "touchstart": this._htmlObject.addEventListener('touchstart', function (event) { event.preventDefault(); var rect = this.getBoundingClientRect(); @@ -30,8 +30,9 @@ TouchHandler.prototype.setEvent = function (event, sender, callback) { callback.call(sender, event); event.preventDefault(); }); - } break; - case "touchend": { + break; + + case "touchend": this._htmlObject.addEventListener('touchend', function (event) { event.preventDefault(); var rect = this.getBoundingClientRect(); @@ -40,8 +41,9 @@ TouchHandler.prototype.setEvent = function (event, sender, callback) { callback.call(sender, event); event.preventDefault(); }); - } break; - case "touchmove": { + break; + + case "touchmove": this._htmlObject.addEventListener('touchmove', function (event) { event.preventDefault(); var rect = this.getBoundingClientRect(); @@ -50,7 +52,7 @@ TouchHandler.prototype.setEvent = function (event, sender, callback) { callback.call(sender, event); event.preventDefault(); }); - } break; + break; } }; diff --git a/src/og/layer/BaseGeoImage.js b/src/og/layer/BaseGeoImage.js index 62afe9e9..5c0fafa8 100644 --- a/src/og/layer/BaseGeoImage.js +++ b/src/og/layer/BaseGeoImage.js @@ -95,10 +95,12 @@ class BaseGeoImage extends Layer { this._cornersWgs84 = [corners[0].clone(), corners[1].clone(), corners[2].clone(), corners[3].clone()] || [0, 0, 0, 0]; for (var i = 0; i < this._cornersWgs84.length; i++) { - if (this._cornersWgs84[i].lat >= 89.9) + if (this._cornersWgs84[i].lat >= 89.9) { this._cornersWgs84[i].lat = 89.9; - if (this._cornersWgs84[i].lat <= -89.9) + } + if (this._cornersWgs84[i].lat <= -89.9) { this._cornersWgs84[i].lat = -89.9; + } } this._extent.setByCoordinates(this._cornersWgs84); @@ -135,7 +137,7 @@ class BaseGeoImage extends Layer { this._extentMercParams = [this._extentMerc.southWest.lon, this._extentMerc.southWest.lat, 2.0 / this._extentMerc.getWidth(), 2.0 / this._extentMerc.getHeight()]; } - //creates material frame textures + // creates material frame textures if (this._planet) { var p = this._planet, h = p.renderer.handler, @@ -201,11 +203,12 @@ class BaseGeoImage extends Layer { super.setVisibility(visibility); - //remove from creator - if (visibility) + // remove from creator + if (visibility) { this._sourceReady && this._planet._geoImageCreator.add(this); - else + } else { this._sourceReady && this._planet._geoImageCreator.remove(this); + } } } @@ -215,7 +218,6 @@ class BaseGeoImage extends Layer { * @param {og.planetSegment.Material} material - GeoImage material. */ clearMaterial(material) { - //just clear material pointer not geoimage material.image = null; material.texture = null; material.isLoading = false; diff --git a/src/og/layer/CanvasTiles.js b/src/og/layer/CanvasTiles.js index e865f648..9ee5196a 100644 --- a/src/og/layer/CanvasTiles.js +++ b/src/og/layer/CanvasTiles.js @@ -5,7 +5,6 @@ 'use strict'; import * as quadTree from '../quadTree/quadTree.js'; -import { ImageCanvas } from '../ImageCanvas.js'; import { Layer } from './Layer.js'; /** @@ -13,7 +12,6 @@ import { Layer } from './Layer.js'; * @const * @type {number} */ -const MAX_REQUESTS = 7; const EVENT_NAMES = [ /** @@ -67,7 +65,7 @@ class CanvasTiles extends Layer { * @protected * @type {Array.} */ - this._pendingsQueue = []; //new og.QueueArray(); + this._pendingsQueue = []; // new og.QueueArray(); /** * Draw tile callback. @@ -93,7 +91,7 @@ class CanvasTiles extends Layer { } } this._pendingsQueue = []; - //this._pendingsQueue.clear(); + // this._pendingsQueue.clear(); }; /** @@ -203,8 +201,9 @@ class CanvasTiles extends Layer { if (this._pendingsQueue.length) { if (CanvasTiles.__requestsCounter < CanvasTiles.MAX_REQUESTS) { var pmat = this._whilePendings(); - if (pmat) - this._exec.call(this, pmat); + if (pmat) { + this._exec(pmat); + } } } else if (this._counter === 0) { this.events.dispatch(this.events.loadend); @@ -224,7 +223,6 @@ class CanvasTiles extends Layer { return null; } - applyMaterial(material) { if (material.isReady) { return [0, 0, 1, 1]; diff --git a/src/og/layer/GeoImage.js b/src/og/layer/GeoImage.js index 584525f1..fcce3d5f 100644 --- a/src/og/layer/GeoImage.js +++ b/src/og/layer/GeoImage.js @@ -94,13 +94,13 @@ class GeoImage extends BaseGeoImage { if (this._image.complete) { this._onLoad(this._image); } else if (this._image.src) { - var that = this; + let that = this; this._image.addEventListener('load', function (e) { that._onLoad(this); }); } } else { - var that = this; + let that = this; this._image = new Image(); this._image.addEventListener('load', function (e) { that._onLoad(this); diff --git a/src/og/layer/GeoTexture2d.js b/src/og/layer/GeoTexture2d.js index 9afbf1c1..c860d5d9 100644 --- a/src/og/layer/GeoTexture2d.js +++ b/src/og/layer/GeoTexture2d.js @@ -7,7 +7,6 @@ import * as math from '../math.js'; import { BaseGeoImage } from './BaseGeoImage.js'; - class GeoTexture2d extends BaseGeoImage { constructor(name, options) { super(name, options); diff --git a/src/og/layer/GeoVideo.js b/src/og/layer/GeoVideo.js index 96524812..f53a6192 100644 --- a/src/og/layer/GeoVideo.js +++ b/src/og/layer/GeoVideo.js @@ -74,7 +74,7 @@ class GeoVideo extends BaseGeoImage { super.setVisibility(visibility); - //remove from creator + // remove from creator if (visibility) { this._sourceReady && this._planet._geoImageCreator.add(this); this._video && this._video.play(); @@ -142,14 +142,14 @@ class GeoVideo extends BaseGeoImage { if (this._video.readyState === this._video.HAVE_ENOUGH_DATA) { this._onCanPlay(this._video); } else if (this._video.src) { - var that = this; + let that = this; this._video.addEventListener('canplay', function (e) { that._onCanPlay(this); }); } } else { this._video = document.createElement('video'); - var that = this; + let that = this; this._video.addEventListener('canplay', function () { that._onCanPlay(this); }); @@ -187,7 +187,6 @@ class GeoVideo extends BaseGeoImage { this._refreshFrame && this._createFrame(); if (this._sourceCreated) { - var gl = this._planet.renderer.handler.gl; gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._video); } else { @@ -244,7 +243,6 @@ class GeoVideo extends BaseGeoImage { this._sourceTexture = this._planet.renderer.handler.createTexture_n(this._video); this._sourceCreated = true; } else { - var gl = this._planet.renderer.handler.gl; gl.bindTexture(gl.TEXTURE_2D, this._sourceTexture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._video); } diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index b7abac36..f942852a 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -12,7 +12,6 @@ import { LonLat } from '../LonLat.js'; import { Material } from './Material.js'; import { Vec3 } from '../math/Vec3.js'; - export const FADING_FACTOR = 0.29; /** @@ -191,7 +190,7 @@ class Layer { */ this._extentMerc = null; - //Setting the extent up + // Setting the extent up this.setExtent(utils.createExtent(options.extent, new Extent(new LonLat(-180, -90), new LonLat(180, 90)))); /** @@ -273,7 +272,7 @@ class Layer { } get pickingEnabled() { - return this._pickingEnabled ? true : false; + return !!this._pickingEnabled; } /** @@ -350,7 +349,6 @@ class Layer { remove() { var p = this._planet; if (p) { - var lid = this._id; for (var i = 0; i < p.layers.length; i++) { if (this.isEqual(p.layers[i])) { p.renderer.clearPickingColor(this); @@ -530,22 +528,22 @@ class Layer { * @protected */ _correctFullExtent() { - //var e = this._extent, + // var e = this._extent, // em = this._extentMerc; - //var ENLARGE_MERCATOR_LON = og.mercator.POLE + 50000; - //var ENLARGE_MERCATOR_LAT = og.mercator.POLE + 50000; - //if (e.northEast.lat === 90.0) { + // var ENLARGE_MERCATOR_LON = og.mercator.POLE + 50000; + // var ENLARGE_MERCATOR_LAT = og.mercator.POLE + 50000; + // if (e.northEast.lat === 90.0) { // em.northEast.lat = ENLARGE_MERCATOR_LAT; - //} - //if (e.northEast.lon === 180.0) { + // } + // if (e.northEast.lon === 180.0) { // em.northEast.lon = ENLARGE_MERCATOR_LON; - //} - //if (e.southWest.lat === -90.0) { + // } + // if (e.southWest.lat === -90.0) { // em.southWest.lat = -ENLARGE_MERCATOR_LAT; - //} - //if (e.southWest.lon === -180.0) { + // } + // if (e.southWest.lon === -180.0) { // em.southWest.lon = -ENLARGE_MERCATOR_LON; - //} + // } } _refreshFadingOpacity() { @@ -555,8 +553,8 @@ class Layer { this._fadingOpacity += this._fadingFactor; - if (this._fadingFactor > 0.0 && this._fadingOpacity > this._opacity || - this._fadingFactor < 0.0 && this._fadingOpacity < this._opacity) { + if ((this._fadingFactor > 0.0 && this._fadingOpacity > this._opacity) || + (this._fadingFactor < 0.0 && this._fadingOpacity < this._opacity)) { this._fadingOpacity = this._opacity; } return false; diff --git a/src/og/layer/Material.js b/src/og/layer/Material.js index c8eefaf7..81023817 100644 --- a/src/og/layer/Material.js +++ b/src/og/layer/Material.js @@ -17,7 +17,7 @@ const Material = function (segment, layer) { this.texOffset = [0.0, 0.0, 1.0, 1.0]; this.loadingAttempts = 0; - //vector data + // vector data this._updateTexture = null; this._updatePickingMask = null; this.pickingReady = false; diff --git a/src/og/layer/Vector.js b/src/og/layer/Vector.js index 07b4dac7..e2e2a6fa 100644 --- a/src/og/layer/Vector.js +++ b/src/og/layer/Vector.js @@ -16,7 +16,6 @@ import { } from '../quadTree/EntityCollectionNode.js'; import { GeometryHandler } from '../entity/GeometryHandler.js'; import { Layer } from './Layer.js'; -import { LonLat } from '../LonLat.js'; import { QueueArray } from '../QueueArray.js'; import { Vec3 } from '../math/Vec3.js'; @@ -134,12 +133,12 @@ class Vector extends Layer { this._entities = _entitiesConstructor(options.entities || []); this._stripEntityCollection = new EntityCollection({ - 'pickingEnabled': this.pickingEnabled + pickingEnabled: this.pickingEnabled }); this._bindEventsDefault(this._stripEntityCollection); this._polylineEntityCollection = new EntityCollection({ - 'pickingEnabled': this.pickingEnabled + pickingEnabled: this.pickingEnabled }); this._bindEventsDefault(this._polylineEntityCollection); @@ -158,7 +157,7 @@ class Vector extends Layer { this._pendingsQueue = []; - /** Creates collections tree*/ + // Creates collections tree this.setEntities(this._entities); /** @@ -273,7 +272,7 @@ class Vector extends Layer { let temp = this._hasImageryTiles; // - //...pointCloud, shape, model etc. + // ...pointCloud, shape, model etc. // if (entity.strip) { @@ -301,11 +300,11 @@ class Vector extends Layer { entity._lonlat = this._planet.ellipsoid.cartesianToLonLat(entity._cartesian); } - //north tree + // north tree if (entity._lonlat.lat > mercator.MAX_LAT) { this._entityCollectionsTreeNorth.insertEntity(entity, rightNow); } else if (entity._lonlat.lat < mercator.MIN_LAT) { - //south tree + // south tree this._entityCollectionsTreeSouth.insertEntity(entity, rightNow); } else { this._entityCollectionsTree.insertEntity(entity, rightNow); @@ -362,7 +361,7 @@ class Vector extends Layer { entity._nodePtr.deferredEntities.length === 0) { entity._nodePtr.entityCollection = null; // - //... + // ... // } } else if (entity._nodePtr && @@ -469,7 +468,7 @@ class Vector extends Layer { * @public */ clear() { - //TODO + // TODO } /** @@ -647,7 +646,7 @@ class Vector extends Layer { outArr.push(ec); // - //...TODO: extent + // ...TODO: extent // } @@ -676,8 +675,8 @@ class Vector extends Layer { while (e_i--) { var p = e[e_i].polyline; if (visibleExtent.overlaps(p._extent)) { - //TODO:this works only for mercator area. - //So it needs to be working on poles. + // TODO:this works only for mercator area. + // needs to be working on poles. let coords = p._pathLonLatMerc, c_j = coords.length; while (c_j--) { @@ -690,7 +689,7 @@ class Vector extends Layer { if (seg._extent.isInside(ll)) { let cart = p._path3v[c_j][c_j_h]; seg.getTerrainPoint(cart, ll, res); - p.setPoint3v(res.addA(res.normal().scale(rtg && p.altitude || 0.0)), c_j_h, c_j, true); + p.setPoint3v(res.addA(res.normal().scale((rtg && p.altitude) || 0.0)), c_j_h, c_j, true); break; } } @@ -704,19 +703,19 @@ class Vector extends Layer { collectVisibleCollections(outArr) { var p = this._planet; - if (this._fading && this._fadingOpacity > 0.0 || - this.minZoom <= this._planet.maxCurrZoom && this.maxZoom >= p.maxCurrZoom) { + if ((this._fading && this._fadingOpacity > 0.0) || + (this.minZoom <= this._planet.maxCurrZoom && this.maxZoom >= p.maxCurrZoom)) { this._renderingNodes = {}; this._renderingNodesNorth = {}; this._renderingNodesSouth = {}; - //Common collections first + // Common collections first this._collectStripCollectionPASS(outArr); this._collectPolylineCollectionPASS(outArr); - //Merc nodes + // Merc nodes this._secondPASS = []; this._entityCollectionsTree.collectRenderCollectionsPASS1(p._visibleNodes, outArr); var i = this._secondPASS.length; @@ -724,7 +723,7 @@ class Vector extends Layer { this._secondPASS[i].collectRenderCollectionsPASS2(p._visibleNodes, outArr, this._secondPASS[i].nodeId); } - //North nodes + // North nodes this._secondPASS = []; this._entityCollectionsTreeNorth.collectRenderCollectionsPASS1(p._visibleNodesNorth, outArr); i = this._secondPASS.length; @@ -732,7 +731,7 @@ class Vector extends Layer { this._secondPASS[i].collectRenderCollectionsPASS2(p._visibleNodesNorth, outArr, this._secondPASS[i].nodeId); } - //South nodes + // South nodes this._secondPASS = []; this._entityCollectionsTreeSouth.collectRenderCollectionsPASS1(p._visibleNodesSouth, outArr); i = this._secondPASS.length; @@ -818,8 +817,8 @@ class Vector extends Layer { var mId = this._id; var psegm = material; - var i = 0; - while (pn.parentNode && i < 2) { + + while (pn.parentNode) { if (psegm && psegm.isReady) { notEmpty = true; break; diff --git a/src/og/layer/XYZ.js b/src/og/layer/XYZ.js index c6c067d7..b8438345 100644 --- a/src/og/layer/XYZ.js +++ b/src/og/layer/XYZ.js @@ -166,10 +166,10 @@ class XYZ extends Layer { material.loadingAttempts++; this._planet._tileLoader.load({ - 'src': this._getHTTPRequestString(material.segment), - 'type': 'imageBitmap', - 'filter': () => seg.initialized && seg.node.getState() === RENDERING || forceLoading, - 'options': {} + src: this._getHTTPRequestString(material.segment), + type: 'imageBitmap', + filter: () => (seg.initialized && seg.node.getState() === RENDERING) || forceLoading, + options: {} }, (response) => { if (response.status === "ready") { if (material.isLoading) { @@ -202,10 +202,10 @@ class XYZ extends Layer { */ _createUrl(segment) { return stringTemplate(this.url, { - "s": this._getSubdomain(), - "x": segment.tileX.toString(), - "y": segment.tileY.toString(), - "z": segment.tileZoom.toString() + s: this._getSubdomain(), + x: segment.tileX.toString(), + y: segment.tileY.toString(), + z: segment.tileZoom.toString() }); } @@ -257,7 +257,7 @@ class XYZ extends Layer { psegm = pn.segment.materials[mId]; } - let maxNativeZoom = material.layer.maxNativeZoom + let maxNativeZoom = material.layer.maxNativeZoom; if (pn.segment.tileZoom === maxNativeZoom) { material.textureNotExists(); @@ -346,7 +346,6 @@ class XYZ extends Layer { }; }; - const EVENT_NAMES = [ /** * Triggered when current tile image has loaded before rendereing. diff --git a/src/og/light/LightSource.js b/src/og/light/LightSource.js index 6ae66389..d030b6ab 100644 --- a/src/og/light/LightSource.js +++ b/src/og/light/LightSource.js @@ -108,7 +108,7 @@ class LightSource { * @returns {og.LightSource} */ clone() { - //TODO + // TODO } /** diff --git a/src/og/math.js b/src/og/math.js index 3a284bb5..2c3173e5 100644 --- a/src/og/math.js +++ b/src/og/math.js @@ -176,10 +176,11 @@ export function random(min, max) { * @returns {number} - **/ export function degToDec(d, m, s, p) { - if (p) + if (p) { return d + m / 60.0 + s / 3600.0; - else + } else { return -d - m / 60.0 - s / 3600.0; + } }; /** @@ -319,8 +320,7 @@ export function rev(x) { * @returns {number} - */ export function norm_lon(lon) { - return lon > 180 ? ((lon + 180) % 360) - 180 : - lon < -180 ? ((lon - 180) % 360) + 180 : lon; + return lon > 180 ? ((lon + 180) % 360) - 180 : lon < -180 ? ((lon - 180) % 360) + 180 : lon; }; /** @@ -368,8 +368,9 @@ export function solve_iteration(f, x0, err, maxIter) { for (var i = 0; i < maxIter; i++) { x = x2; x2 = f(x); - if (Math.abs(x2 - x) < err) + if (Math.abs(x2 - x) < err) { return x2; + } } return x2; }; diff --git a/src/og/math/Line3.js b/src/og/math/Line3.js index 964b4e52..8fdf4b62 100644 --- a/src/og/math/Line3.js +++ b/src/og/math/Line3.js @@ -53,7 +53,6 @@ Line3.prototype.getSphereIntersection = function (sphere) { // prefer a solution that's on the line segment itself if (Math.Abs(t1 - 0.5) < Math.abs(t2 - 0.5)) { - //return new Point3D[] { solution1, solution2 }; return [solution1, solution2]; } @@ -65,13 +64,15 @@ Line3.prototype.intersects = function (line, pa, pb) { let p13 = this.p0.sub(line.p0), p43 = line.p1.sub(line.p0); - if (Math.abs(p43.x) < math.EPSILON10 && Math.abs(p43.y) < math.EPSILON10 && Math.abs(p43.z) < math.EPSILON10) + if (Math.abs(p43.x) < math.EPSILON10 && Math.abs(p43.y) < math.EPSILON10 && Math.abs(p43.z) < math.EPSILON10) { return false; + } let p21 = this.p1.sub(this.p0); - if (Math.abs(p21.x) < math.EPSILON10 && Math.abs(p21.y) < math.EPSILON10 && Math.abs(p21.z) < math.EPSILON10) + if (Math.abs(p21.x) < math.EPSILON10 && Math.abs(p21.y) < math.EPSILON10 && Math.abs(p21.z) < math.EPSILON10) { return false; + } let d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z, d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z, @@ -81,8 +82,9 @@ Line3.prototype.intersects = function (line, pa, pb) { let denom = d2121 * d4343 - d4321 * d4321; - if (Math.abs(denom) < math.EPSILON10) + if (Math.abs(denom) < math.EPSILON10) { return false; + } let numer = d1343 * d4321 - d1321 * d4343; diff --git a/src/og/math/Mat3.js b/src/og/math/Mat3.js index 9e57089b..86d543a2 100644 --- a/src/og/math/Mat3.js +++ b/src/og/math/Mat3.js @@ -4,7 +4,6 @@ 'use strict'; -import * as math from '../math.js'; import { Mat4 } from './Mat4.js'; import { Vec3 } from './Vec3.js'; diff --git a/src/og/math/Mat4.js b/src/og/math/Mat4.js index a787b9d6..b402ed7c 100644 --- a/src/og/math/Mat4.js +++ b/src/og/math/Mat4.js @@ -21,32 +21,32 @@ const Mat4 = function () { * Projection frustum left value. * @public */ - this.left; + this.left = 0.0; /** * Projection frustum right value. * @public */ - this.right; + this.right = 0.0; /** * Projection frustum bottom value. * @public */ - this.bottom; + this.bottom = 0.0; /** * Projection frustum top value. * @public */ - this.top; + this.top = 0.0; /** * Projection frustum near value. * @public */ - this.near; + this.near = 0.0; /** * Projection frustum far value. * @public */ - this.far; + this.far = 0.0; }; /** @@ -184,8 +184,11 @@ Mat4.prototype.toInverseMatrix3 = function () { o = -k * g + h * i, m = j * g - f * i, n = c * l + d * o + e * m; - if (!n) + + if (!n) { return null; + } + n = 1 / n; var res = new Mat3(); @@ -376,7 +379,6 @@ Mat4.prototype.scale = function (v) { mx[0] = mx[0] * v.x; mx[1] = mx[1] * v.x; mx[2] = mx[2] * v.x; mx[3] = mx[3] * v.x; mx[4] = mx[4] * v.y; mx[5] = mx[5] * v.y; mx[6] = mx[6] * v.y; mx[7] = mx[7] * v.y; mx[8] = mx[8] * v.z; mx[9] = mx[9] * v.z; mx[10] = mx[10] * v.z; mx[11] = mx[11] * v.z; - mx[12] = mx[12]; mx[13] = mx[13]; mx[14] = mx[14]; mx[15] = mx[15]; return this; }; @@ -393,13 +395,6 @@ Mat4.prototype.scale = function (v) { */ Mat4.prototype.setFrustum = function (left, right, bottom, top, near, far) { - //this.left = left; - //this.right = right; - //this.bottom = bottom; - //this.top = top; - //this.near = near; - //this.far = far; - var h = right - left, i = top - bottom, j = far - near; this._m[0] = near * 2 / h; this._m[1] = 0; @@ -432,7 +427,7 @@ Mat4.prototype.setFrustum = function (left, right, bottom, top, near, far) { Mat4.prototype.setPerspective = function (angle, aspect, near, far) { angle = near * Math.tan(angle * Math.PI / 360); aspect = angle * aspect; - return this.setFrustum(-aspect, aspect, -angle, angle, near, far) + return this.setFrustum(-aspect, aspect, -angle, angle, near, far); }; /** @@ -448,13 +443,6 @@ Mat4.prototype.setPerspective = function (angle, aspect, near, far) { */ Mat4.prototype.setOrtho = function (left, right, bottom, top, near, far) { - //this.left = left; - //this.right = right; - //this.bottom = bottom; - //this.top = top; - //this.near = near; - //this.far = far; - var lr = 1.0 / (left - right), bt = 1.0 / (bottom - top), nf = 1.0 / (near - far), @@ -515,5 +503,4 @@ Mat4.prototype.eulerToMatrix = function (ax, ay, az) { return this; }; -export { Mat4 }; - +export { Mat4 }; \ No newline at end of file diff --git a/src/og/math/Plane.js b/src/og/math/Plane.js index 4650ebca..a355b0b3 100644 --- a/src/og/math/Plane.js +++ b/src/og/math/Plane.js @@ -53,24 +53,28 @@ class Plane { if ((ax + ay + az) < math.EPSILON5) { // Pn1 and Pn2 are near parallel // test if disjoint or coincide var v = Pn2.p.sub(Pn1.p); - if (Pn1.n.dot(v) == 0) // Pn2.V0 lies in Pn1 + if (Pn1.n.dot(v) == 0) { // Pn2.V0 lies in Pn1 return 1; // Pn1 and Pn2 coincide - else + } else { return 0; // Pn1 and Pn2 are disjoint + } } // Pn1 and Pn2 intersect in a line // first determine max abs coordinate of cross product var maxc; // max coordinate if (ax > ay) { - if (ax > az) + if (ax > az) { maxc = 1; - else maxc = 3; - } - else { - if (ay > az) + } else { + maxc = 3; + } + } else { + if (ay > az) { maxc = 2; - else maxc = 3; + } else { + maxc = 3; + } } // next, to get a point on the intersect line diff --git a/src/og/math/Quat.js b/src/og/math/Quat.js index d7c67b86..9672be4b 100644 --- a/src/og/math/Quat.js +++ b/src/og/math/Quat.js @@ -358,7 +358,8 @@ Quat.prototype.scaleTo = function (scale) { * @returns {og.Quat} - */ Quat.prototype.scale = function (scale) { - return this.x * scale, this.y * scale, this.z * scale, this.w * scale; + this.x *= scale; this.y *= scale; this.z *= scale; this.w *= scale; + return this; }; /** @@ -392,7 +393,6 @@ Quat.prototype.setFromSphericalCoords = function (lat, lon, angle) { return this; }; - /** * Sets rotation with the given heading and up vectors. * @static @@ -414,22 +414,19 @@ Quat.prototype.setLookRotation = function (forward, up) { this.y = (s.z - f.x) * fd; this.z = (u.x - s.y) * fd; this.w = 0.25 / fd; - } - else if (s.x > u.y && s.x > f.z) { + } else if (s.x > u.y && s.x > f.z) { let fd = 1.0 / (2.0 * Math.sqrt(1.0 + s.x - u.y - f.z)); this.x = 0.25 / fd; this.y = (u.x + s.y) * fd; this.z = (s.z + f.x) * fd; this.w = (f.y - u.z) * fd; - } - else if (u.y > f.z) { + } else if (u.y > f.z) { let fd = 1.0 / (2.0 * Math.sqrt(1.0 + u.y - s.x - f.z)); this.x = (u.x + s.y) * fd; this.y = 0.25 / fd; this.z = (f.y + u.z) * fd; this.w = (s.z - f.x) * fd; - } - else { + } else { let fd = 1.0 / (2.0 * Math.sqrt(1.0 + f.z - s.x - u.y)); this.x = (s.z + f.x) * fd; this.y = (f.y + u.z) * fd; @@ -448,20 +445,23 @@ Quat.prototype.setLookRotation = function (forward, up) { Quat.prototype.toSphericalCoords = function () { var cos_a = this.w; var sin_a = Math.sqrt(1.0 - cos_a * cos_a); - var angle = Math.acos(cos_a) * 2; - if (Math.abs(sin_a) < 0.0005) + // var angle = Math.acos(cos_a) * 2; + if (Math.abs(sin_a) < 0.0005) { sin_a = 1; + } var tx = this.x / sin_a; var ty = this.y / sin_a; var tz = this.z / sin_a; var lon, lat = -Math.asin(ty); - if (tx * tx + tz * tz < 0.0005) + if (tx * tx + tz * tz < 0.0005) { lon = 0; - else + } else { lon = Math.atan2(tx, tz); - if (lon < 0) + } + if (lon < 0) { lon += 360.0; + } return { lat: lat, lon: lon, alpha: Math.acos(cos_a) }; }; @@ -492,10 +492,11 @@ Quat.prototype.getAxisAngle = function () { if (vl > 0.0000001) { var ivl = 1.0 / vl; axis = new Vec3(x * ivl, y * ivl, z * ivl); - if (this.w < 0) - angle = 2.0 * Math.atan2(-vl, -w); //-PI,0 - else - angle = 2.0 * Math.atan2(vl, w); //0,PI + if (this.w < 0) { + angle = 2.0 * Math.atan2(-vl, -w); // -PI,0 + } else { + angle = 2.0 * Math.atan2(vl, w); // 0,PI + } } else { axis = new Vec3(0, 0, 0); angle = 0; @@ -675,8 +676,8 @@ Quat.prototype.getMat3 = function () { */ Quat.prototype.mulVec3 = function (v) { - //t = 2 * cross(q.xyz, v) - //v' = v + q.w * t + cross(q.xyz, t) + // t = 2 * cross(q.xyz, v) + // v' = v + q.w * t + cross(q.xyz, t) var d = v.x, e = v.y, diff --git a/src/og/math/Ray.js b/src/og/math/Ray.js index ae0d9e0d..e00c375a 100644 --- a/src/og/math/Ray.js +++ b/src/og/math/Ray.js @@ -7,7 +7,6 @@ import * as math from '../math.js'; import { Vec3 } from './Vec3.js'; - /** * Represents a ray that extends infinitely from the provided origin in the provided direction. * @class @@ -85,7 +84,6 @@ Ray.prototype.getPoint = function (distance) { * 2 - og.Ray.INPLANE and 3 - og.Ray.AWAY(ray goes away from triangle). */ Ray.prototype.hitTriangle = function (v0, v1, v2, res, normal) { - var state; var u = v1.sub(v0); var v = v2.sub(v0); var n = u.cross(v); @@ -112,8 +110,9 @@ Ray.prototype.hitTriangle = function (v0, v1, v2, res, normal) { res.copy(this.origin.add(this.direction.scaleTo(r))); // ray goes away from triangle - if (r < 0.0) + if (r < 0.0) { return Ray.AWAY; + } // is res point inside the triangle? var uu = u.dot(u); @@ -125,12 +124,14 @@ Ray.prototype.hitTriangle = function (v0, v1, v2, res, normal) { var D = uv * uv - uu * vv; var s = (uv * wv - vv * wu) / D; - if (s < 0.0 || s > 1.0) + if (s < 0.0 || s > 1.0) { return Ray.OUTSIDE; + } var t = (uv * wu - uu * wv) / D; - if (t < 0.0 || (s + t) > 1.0) + if (t < 0.0 || (s + t) > 1.0) { return Ray.OUTSIDE; + } return Ray.INSIDE; }; @@ -195,27 +196,27 @@ Ray.prototype.hitSphere = function (sphere) { } else if (l === r) { return o.clone(); } - var pc = c.projToRay(o, vpc); + let pc = c.projToRay(o, vpc); var lc = Vec3.sub(pc, c).length(); - var dist = Math.sqrt(r * r - lc * lc); - var di1 = dist - Vec3.sub(pc, o).length(); - var intersection = Vec3.add(o, d.scaleTo(di1)); + let dist = Math.sqrt(r * r - lc * lc); + let di1 = dist - Vec3.sub(pc, o).length(); + let intersection = Vec3.add(o, d.scaleTo(di1)); return intersection; } else { - var pc = c.projToRay(o, d); + let pc = c.projToRay(o, d); var cpcl = Vec3.sub(c, pc).length(); if (cpcl > sphere.radius) { return null; } else { - var dist = Math.sqrt(r * r - cpcl * cpcl); - var di1; + let dist = Math.sqrt(r * r - cpcl * cpcl); + let di1; pc.subA(o); if (vpc.length() > r) { di1 = pc.length() - dist; } else { di1 = pc.length() + dist; } - var intersection = Vec3.add(o, d.scaleTo(di1)); + let intersection = Vec3.add(o, d.scaleTo(di1)); return intersection; } } @@ -223,7 +224,7 @@ Ray.prototype.hitSphere = function (sphere) { Ray.prototype.hitBox = function (box) { // - //TODO + // TODO // }; diff --git a/src/og/math/Vec2.js b/src/og/math/Vec2.js index 5228b0d4..67002a28 100644 --- a/src/og/math/Vec2.js +++ b/src/og/math/Vec2.js @@ -70,7 +70,7 @@ Vec2.add = function (a, b) { * @returns {og.math.Vec2} - Vectors subtraction. */ Vec2.sub = function (a, b) { - var res = new oVec2(a.x, a.y); + var res = new Vec2(a.x, a.y); res.subA(b); return res; }; @@ -84,7 +84,7 @@ Vec2.sub = function (a, b) { */ Vec2.scale = function (a, scale) { var res = new Vec2(a.x, a.y); - res.scale(scale) + res.scale(scale); return res; }; @@ -294,7 +294,6 @@ Vec2.prototype.mul = function (vec) { return new Vec2(this.x * vec.x, this.y * vec.y); }; - /** * Divide current vector's components to another. Results stores in the current vector object. * @public diff --git a/src/og/math/Vec3.js b/src/og/math/Vec3.js index 95a13b96..9b191605 100644 --- a/src/og/math/Vec3.js +++ b/src/og/math/Vec3.js @@ -76,36 +76,36 @@ export function vec3(x, y, z) { * @param {Vec3} low - Out vector low values. * @returns {Array.} Encoded array. */ -Vec3.doubleToTwoFloats = function(v, high, low) { +Vec3.doubleToTwoFloats = function (v, high, low) { let x = v.x, y = v.y, z = v.z; - + if (x >= 0.0) { - var doubleHigh = Math.floor(x / 65536.0) * 65536.0; + let doubleHigh = Math.floor(x / 65536.0) * 65536.0; high.x = Math.fround(doubleHigh); low.x = Math.fround(x - doubleHigh); } else { - var doubleHigh = Math.floor(-x / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-x / 65536.0) * 65536.0; high.x = Math.fround(-doubleHigh); low.x = Math.fround(x + doubleHigh); } if (y >= 0.0) { - var doubleHigh = Math.floor(y / 65536.0) * 65536.0; + let doubleHigh = Math.floor(y / 65536.0) * 65536.0; high.y = Math.fround(doubleHigh); low.y = Math.fround(y - doubleHigh); } else { - var doubleHigh = Math.floor(-y / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-y / 65536.0) * 65536.0; high.y = Math.fround(-doubleHigh); low.y = Math.fround(y + doubleHigh); } if (z >= 0.0) { - var doubleHigh = Math.floor(z / 65536.0) * 65536.0; + let doubleHigh = Math.floor(z / 65536.0) * 65536.0; high.z = Math.fround(doubleHigh); low.z = Math.fround(z - doubleHigh); } else { - var doubleHigh = Math.floor(-z / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-z / 65536.0) * 65536.0; high.z = Math.fround(-doubleHigh); low.z = Math.fround(z + doubleHigh); } @@ -124,31 +124,31 @@ Vec3.doubleToTwoFloat32Array = function (v, high, low) { let x = v.x, y = v.y, z = v.z; if (x >= 0.0) { - var doubleHigh = Math.floor(x / 65536.0) * 65536.0; + let doubleHigh = Math.floor(x / 65536.0) * 65536.0; high[0] = Math.fround(doubleHigh); low[0] = Math.fround(x - doubleHigh); } else { - var doubleHigh = Math.floor(-x / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-x / 65536.0) * 65536.0; high[0] = Math.fround(-doubleHigh); low[0] = Math.fround(x + doubleHigh); } if (y >= 0.0) { - var doubleHigh = Math.floor(y / 65536.0) * 65536.0; + let doubleHigh = Math.floor(y / 65536.0) * 65536.0; high[1] = Math.fround(doubleHigh); low[1] = Math.fround(y - doubleHigh); } else { - var doubleHigh = Math.floor(-y / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-y / 65536.0) * 65536.0; high[1] = Math.fround(-doubleHigh); low[1] = Math.fround(y + doubleHigh); } if (z >= 0.0) { - var doubleHigh = Math.floor(z / 65536.0) * 65536.0; + let doubleHigh = Math.floor(z / 65536.0) * 65536.0; high[2] = Math.fround(doubleHigh); low[2] = Math.fround(z - doubleHigh); } else { - var doubleHigh = Math.floor(-z / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-z / 65536.0) * 65536.0; high[2] = Math.fround(-doubleHigh); low[2] = Math.fround(z + doubleHigh); } @@ -222,7 +222,7 @@ Vec3.sub = function (a, b) { */ Vec3.scale = function (a, scale) { var res = new Vec3(a.x, a.y, a.z); - res.scale(scale) + res.scale(scale); return res; }; @@ -534,7 +534,6 @@ Vec3.prototype.dotArr = function (arr) { return arr[0] * this.x + arr[1] * this.y + arr[2] * this.z; }; - /** * Gets vectors cross production. * @public @@ -821,17 +820,16 @@ Vec3.prototype.getRotationTo = function (dest, fallbackAxis) { if (!fallbackAxis.isEqual(Vec3.ZERO)) { // rotate 180 degrees about the fallback axis return Quat.axisAngleToQuat(Math.PI, fallbackAxis); - } - else { + } else { // Generate an axis let axis = Vec3.UNIT_X.cross(v0); - if (axis.isZero()) // pick another if colinear + if (axis.isZero()) { // pick another if colinear axis = Vec3.UNIT_Y.cross(v0); + } axis.normalize(); return Quat.axisAngleToQuat(Math.PI, axis); } - } - else { + } else { let s = Math.sqrt((1 + d) * 2); let invs = 1.0 / s; diff --git a/src/og/math/Vec4.js b/src/og/math/Vec4.js index 923e2ffb..1db2b1e9 100644 --- a/src/og/math/Vec4.js +++ b/src/og/math/Vec4.js @@ -122,7 +122,6 @@ Vec4.prototype.toVec = function () { return [this.x, this.y, this.z, this.w]; }; - /** * Converts vector to a number array. * @public diff --git a/src/og/math/coder.js b/src/og/math/coder.js index 5c41b322..534f58b7 100644 --- a/src/og/math/coder.js +++ b/src/og/math/coder.js @@ -41,11 +41,11 @@ export function decodeFloatFromRGBA(rgba) { export function doubleToTwoFloats(value) { var high, low; if (value >= 0.0) { - var doubleHigh = Math.floor(value / 65536.0) * 65536.0; + let doubleHigh = Math.floor(value / 65536.0) * 65536.0; high = Math.fround(doubleHigh); low = Math.fround(value - doubleHigh); } else { - var doubleHigh = Math.floor(-value / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-value / 65536.0) * 65536.0; high = Math.fround(-doubleHigh); low = Math.fround(value + doubleHigh); } @@ -60,11 +60,11 @@ export function doubleToTwoFloats(value) { */ export function doubleToTwoFloats2(value, highLowArr) { if (value >= 0.0) { - var doubleHigh = Math.floor(value / 65536.0) * 65536.0; + let doubleHigh = Math.floor(value / 65536.0) * 65536.0; highLowArr[0] = Math.fround(doubleHigh); highLowArr[1] = Math.fround(value - doubleHigh); } else { - var doubleHigh = Math.floor(-value / 65536.0) * 65536.0; + let doubleHigh = Math.floor(-value / 65536.0) * 65536.0; highLowArr[0] = Math.fround(-doubleHigh); highLowArr[1] = Math.fround(value + doubleHigh); } diff --git a/src/og/plugins/gmxVector/GmxCheckVersion.js b/src/og/plugins/gmxVector/GmxCheckVersion.js deleted file mode 100644 index 8d913cce..00000000 --- a/src/og/plugins/gmxVector/GmxCheckVersion.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * @module og/gmx/GmxCheckVersion - */ - -'use strict'; - -import { ajax } from '../../ajax.js'; -import { GmxVector } from './GmxVector.js'; - -const GmxCheckVersion = function (planet) { - - this._layerVersions = {}; - - this.hostUrl = "//maps.kosmosnimki.ru/"; - - this._layers = []; - - this._r = null; - - this._addLayer = function (layer) { - this._layers.push(layer); - }; - - this._removeLayer = function (layer) { - var i = this._layers.length; - while (i--) { - if (layer.isEqual(this._layers[i])) { - this._layers.splice(i, 1); - return; - } - } - }; - - planet.events.on("layeradd", function (l) { - if (l.instanceName === "GmxVector") { - if (l._visibility) { - this._addLayer(l); - } - } - }, this); - - planet.events.on("layerremove", function (l) { - if (l.instanceName === "GmxVector") { - this._removeLayer(l); - } - }, this); - - planet.events.on("layervisibilitychange", function (l) { - if (l.instanceName === "GmxVector") { - if (l._visibility) { - this._addLayer(l); - } else { - this._removeLayer(l); - } - this._request(); - } - }, this); - - planet.camera.events.on("moveend", function () { - this._request(); - }, this); - - this._checkVersionSuccess = function (data, layersOrder) { - var res = data.Result; - for (var i = 0; i < layersOrder.length; i++) { - layersOrder[i]._checkVersionSuccess(res[i]); - } - }; - - this.abort = function () { - if (this._r) { - this._r.abort(); - this._r = null; - } - }; - - this._request = function () { - if (this._layers.length) { - this._r && this._r.abort(); - var e = planet.getViewExtent(); - - if (e) { - - e = e.inverseMercator(); - - var zoom = planet.minCurrZoom, - bbox = [e.southWest.lon, e.southWest.lat, e.northEast.lon, e.northEast.lat]; - - var layers = [], - _layersOrder = []; - for (var i = 0; i < this._layers.length; i++) { - var li = this._layers[i]; - if (li._extentMerc.overlaps(e) && li._gmxProperties) { - _layersOrder.push(li); - var p = { "Name": li._layerId, "Version": li._gmxProperties.LayerVersion || -1 }; - if (li._gmxProperties.Temporal) { - p.dateBegin = parseInt(li._beginDate.getTime() / 1000.0); - p.dateEnd = parseInt(li._endDate.getTime() / 1000.0); - } - layers.push(p); - } - } - - if (layers.length) { - var that = this; - //TODO: fetch - this._r = ajax.request(this.hostUrl + "Layer/CheckVersion.ashx", { - 'type': "POST", - 'responseType': "json", - 'data': { - 'WrapStyle': "None", - 'bbox': bbox, - 'srs': "3857", - 'layers': layers, - 'zoom': zoom, - 'ftc': "osm" - }, - 'success': function (data) { - that._r = null; - that._checkVersionSuccess(data, _layersOrder); - }, - 'error': function (err) { - that._r = null; - console.log(err); - } - }); - } - } - } - }; - - this.getLayers = function () { - return this._layers; - }; - - this.update = function () { - this._request(); - }; -}; - -export { GmxCheckVersion }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxItem.js b/src/og/plugins/gmxVector/GmxItem.js deleted file mode 100644 index a0631274..00000000 --- a/src/og/plugins/gmxVector/GmxItem.js +++ /dev/null @@ -1,129 +0,0 @@ -/** - * @module og/gmx/GmxItem - */ - -'use strict'; - -import * as utils from '../../utils/shared.js'; - -/** - * Represents geomixer item. Stores item attributes. - * @class - * @param {Number} id - Geomixer item id like gmx_id. - * @param {Object} options - Item additional options: - * @param {Object} options.attributes - Item attributes. - * @param {Object} options.style - Item rendering style. - * @param {Number} options.version - Item version. - */ -const GmxItem = function (id, options) { - options = options || {}; - - this.id = id; - this.attributes = options.attributes || {}; - this.version = options.version || -1; - - this._layer = null; - this._style = options.style || {}; - - this._pickingColor = null; - - this._pickingReady = false; -}; - -GmxItem.prototype.addTo = function (layer) { - layer.addItem(this); -}; - -GmxItem.prototype.setStyle = function (style) { - var s = this._style; - for (var i in style) { - s[i] = style[i]; - } - this._layer && this._layer.updateItem(this); -}; - -GmxItem.prototype.bringToFront = function () { - this._pickingReady = false; - // - //... - // -}; - -GmxItem.prototype.setZIndex = function (zIndex) { - this._pickingReady = false; - this._style.zIndex = zIndex; - this._layer && this._layer.updateItem(this); -}; - -GmxItem.prototype.setFillColor = function (r, g, b, a) { - var c = this._style.fillColor; - if (c.w === 0.0 && a !== 0.0 || c.w !== 0.0 && a === 0.0) { - this._pickingReady = false; - } - c.x = r; - c.y = g; - c.z = b; - (a !== null) && (c.w = a); - this._layer && this._layer.updateItem(this); -}; - -GmxItem.prototype.setFillColor4v = function (color) { - this.setFillColor(color.x, color.y, color.z, color.w); -}; - -GmxItem.prototype.setFillColorHTML = function (color) { - var c = utils.htmlColorToRgba(color); - this.setFillColor(c.x, c.y, c.z, c.w); -}; - -GmxItem.prototype.setLineColor = function (r, g, b, a) { - var c = this._style.lineColor; - if (c.w === 0.0 && a !== 0.0 || c.w !== 0.0 && a === 0.0) { - this._pickingReady = false; - } - c.x = r; - c.y = g; - c.z = b; - (a !== null) && (c.w = a); - this._layer && this._layer.updateItem(this); -}; - -GmxItem.prototype.setLineColor4v = function (color) { - this.setLineColor(color.x, color.y, color.z, color.w); -}; - -GmxItem.prototype.setLineColorHTML = function (color) { - var c = og.utils.htmlColorToRgba(color); - this.setLineColor(c.x, c.y, c.z, c.w); -}; - -GmxItem.prototype.setStrokeColor = function (r, g, b, a) { - var c = this._style.strokeColor; - if (c.w === 0.0 && a !== 0.0 || c.w !== 0.0 && a === 0.0) { - this._pickingReady = false; - } - c.x = r; - c.y = g; - c.z = b; - (a !== null) && (c.w = a); - this._layer && this._layer.updateItem(this); -}; - -GmxItem.prototype.setStrokeColor4v = function (color) { - this.setLineColor(color.x, color.y, color.z, color.w); -}; - -GmxItem.prototype.setStrokeColorHTML = function (color) { - var c = og.utils.htmlColorToRgba(color); - this.setStrokeColor(c.x, c.y, c.z, c.w); -}; - -GmxItem.prototype.setLineWidth = function (v) { - this._style.lineWidth = v; -}; - -GmxItem.prototype.setStrokeWidth = function (v) { - this._style.strokeWidth = v; -}; - -export { GmxItem }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxMaterial.js b/src/og/plugins/gmxVector/GmxMaterial.js deleted file mode 100644 index d908ca30..00000000 --- a/src/og/plugins/gmxVector/GmxMaterial.js +++ /dev/null @@ -1,104 +0,0 @@ -/** - * @module og/gmx/GmxMaterial - */ - -'use strict'; - -import { inherits } from '../../inherits.js'; -import { Material } from '../../layer/Material.js'; - -const GmxMaterial = function (segment, layer) { - - Material.call(this, segment, layer); - - this.fromTile = null; - - this.maskTexture = null; - - this.sceneIsLoading = {}; - this.sceneExists = {}; - this.sceneIsReady = {}; - this.sceneTexture = {}; - - this._completedItems = 0; - this._totalItems = 0; -}; - -inherits(GmxMaterial, Material); - -GmxMaterial.applySceneBitmapImage = function (id, bitmapImage) { - this.sceneTexture[id] = this.segment.handler.createTexture(bitmapImage); - this.sceneExists[id] = true; - this.sceneIsReady[id] = true; - this.sceneIsLoading[id] = false; -}; - -GmxMaterial.prototype.setTotalItems = function (n) { - this._totalItems = n; -}; - -GmxMaterial.prototype.notComplete = function () { - return this._completedItems !== this._totalItems; -}; - -GmxMaterial.prototype.sceneNotExists = function (id) { - this.sceneIsReady[id] = true; - this.sceneExists[id] = false; - this.sceneIsLoading[id] = false; -}; - -GmxMaterial.prototype.clear = function () { - if (this.isReady) { - var gl = this.segment.handler.gl; - - this.isReady = false; - this.pickingReady = false; - - var t = this.texture; - this.texture = null; - t && !t.default && gl.deleteTexture(t); - - t = this.pickingMask; - this.pickingMask = null; - t && !t.default && gl.deleteTexture(t); - - t = this._updateTexture; - this._updateTexture = null; - t && !t.default && gl.deleteTexture(t); - - t = this._updatePickingMask; - this._updatePickingMask = null; - t && !t.default && gl.deleteTexture(t); - - this._completedItems = 0; - this._totalItems = 0; - } - - this._gmxClear(); - - this.layer.abortMaterialLoading(this); - - this.isLoading = false; - this.textureExists = false; - this.fromTile = null; -}; - -GmxMaterial.prototype.abort = function () { - this.isLoading = false; - this.isReady = false; - - this._gmxClear(); -}; - -GmxMaterial.prototype._gmxClear = function () { - this.sceneIsLoading = {}; - this.sceneExists = {}; - this.sceneIsReady = {}; - - for (let c in this.sceneTexture) { - let t = this.sceneTexture[c]; - t && !t.default && gl.deleteTexture(t); - } -}; - -export { GmxMaterial }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxTileData.js b/src/og/plugins/gmxVector/GmxTileData.js deleted file mode 100644 index 74a8c5e8..00000000 --- a/src/og/plugins/gmxVector/GmxTileData.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @module og/gmx/GmxTileData - */ - -'use strict'; - -/** - * Represents geomixer vector tile data. Stores tile geometries and rendering data. - * @class - * @param {Object} data - Geomixer vector tile data: - * @param {Array} data.bbox - Bounding box. - * @param {Boolean} data.isGeneralized - Whether tile geometries are simplified. - * @param {Array>} data.values - Tile items. - * @param {Number} data.x - Tile index for X. - * @param {Number} data.y - Tile index for Y. - * @param {Number} data.z - Tile zoom level. - * @param {Number} data.v - Tile version. - */ -const GmxTileData = function (data) { - this.group = null; - this.groupIndex = -1; - this.isGeneralized = data.isGeneralized; - this.bbox = data.bbox; - this.x = data.x; - this.y = data.y; - this.z = data.z; - this.version = data.v; - this.level = data.level; - this.span = data.span; - this.tileItems = []; -}; - -GmxTileData.prototype.addTileItem = function (tileItem) { - tileItem.tileData = this; - tileItem.tileDataIndex = this.tileItems.length; - this.tileItems.push(tileItem); -}; - -GmxTileData.prototype.addTileItems = function (tileItems) { - for (var i = 0; i < tileItems.length; i++) { - this.addTileItem(tileItems[i]); - } -}; - -export { GmxTileData }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxTileDataGroup.js b/src/og/plugins/gmxVector/GmxTileDataGroup.js deleted file mode 100644 index 152a229f..00000000 --- a/src/og/plugins/gmxVector/GmxTileDataGroup.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @module og/gmx/GmxTileDataGroup - */ - -'use strict'; - - -/** - * Represents geomixer vector tile data container or grouop. Stores tile datas and their items. - * - * @class - * @param {og.gmx.VectorLayer} layer - Layer. - * @param {og.Extent} extent - Tile geographical extent. - */ -const GmxTileDataGroup = function (layer, extent) { - this.layer = layer; - this.tileExtent = extent; - this.tileDataArr = []; - this.tileItemArr = []; - this.tileItemsCache = {}; -}; - -GmxTileDataGroup.prototype.addTileData = function (tileData) { - tileData.group = this; - tileData.groupIndex = this.tileDataArr.length; - this.tileDataArr.push(tileData); -}; - -GmxTileDataGroup.prototype.removeTileData = function (tileData) { - tileData.group = null; - this.tileDataArr.splice(tileData.groupIndex, 1); - tileData.groupIndex = -1; - this.tileItemArr.length = 0; - this.tileItemArr = []; - for (var i = 0; i < this.tileDataArr.length; i++) { - var ti = this.tileDataArr[i]; - for (var j = 0; j < ti.tileItems.length; j++) { - this.addTileItem(ti.tileItems[j]); - } - } -}; - -GmxTileDataGroup.prototype.addTileItem = function (tileItem) { - this.tileItemArr.push(tileItem); - this.tileItemsCache[tileItem.item.id] = tileItem; -}; - -export { GmxTileDataGroup }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxTileItem.js b/src/og/plugins/gmxVector/GmxTileItem.js deleted file mode 100644 index 7b54907c..00000000 --- a/src/og/plugins/gmxVector/GmxTileItem.js +++ /dev/null @@ -1,186 +0,0 @@ -/** - * @module og/gmx/GmxTileItem - */ - -'use strict'; - -import * as math from '../../math.js'; -import { Extent } from '../../Extent.js'; -import { earcut, flatten } from '../../utils/earcut.js'; -import { GmxVectorTileCreator } from './GmxVectorTileCreator.js'; -import { LonLat } from '../../LonLat.js'; - -function chkOnEdge(p1, p2, ext) { - if (p1[0] === p2[0] && (Math.abs(p1[0] - ext.northEast.lon) < 0.05 || Math.abs(p1[0] - ext.southWest.lon) < 0.05) || - p1[1] === p2[1] && (Math.abs(p1[1] - ext.northEast.lat) < 0.05 || Math.abs(p1[1] - ext.southWest.lat) < 0.05)) { - return true; - } - return false; -}; - -const GmxTileItem = function (item, geometry) { - - this.tileData = null; - this.tileDataIndex = -1; - - this.item = item; - this.geometry = geometry; - - this.extent = null; - - //Polygon arrays - this._polyVerticesMerc = []; - this._polyIndexes = []; - - //Line arrays - this._lineVerticesMerc = []; - this._lineOrders = []; - this._lineIndexes = []; - - //Point array - //... - - //Label array - //... - - //Buffers - this._polyVerticesBufferMerc = null; - this._polyIndexesBuffer = null; - - this._lineVerticesBufferMerc = null; - this._lineOrdersBuffer = null; - this._lineIndexesBuffer = null; - - this._ready = false; -}; - -GmxTileItem.prototype.createBuffers = function (handler, extent) { - if (!this._ready) { - this._createVertices(extent); - this._createBuffers(handler); - this._ready = true; - } -}; - -GmxTileItem.prototype._createVertices = function (extent) { - - var geometry = this.geometry; - - this._polyVerticesMerc = []; - this._lineVerticesMerc = []; - - if (!this.extent) { - this.extent = new Extent(new LonLat(math.MAX_FLOAT, math.MAX_FLOAT), new LonLat(-math.MAX_FLOAT, -math.MAX_FLOAT)); - } - - var ne = this.extent.northEast, - sw = this.extent.southWest; - - if (geometry.type.trim().toLowerCase() === "polygon") { - let coordinates = geometry.coordinates; - - let data = flatten(coordinates); - let indexes = earcut(data.vertices, data.holes, 2); - - this._polyVerticesMerc = data.vertices; - - this._polyIndexes = indexes; - - for (let i = 0; i < coordinates.length; i++) { - let ci = coordinates[i]; - let path = []; - let startLine = false; - let isClosed = true; - for (let j = 0; j < ci.length; j++) { - let p = ci[j]; - if (p[0] < sw.lon) sw.lon = p[0]; - if (p[0] > ne.lon) ne.lon = p[0]; - if (p[1] < sw.lat) sw.lat = p[1]; - if (p[1] > ne.lat) ne.lat = p[1]; - if (!chkOnEdge(p, j < ci.length - 1 ? ci[j + 1] : ci[0], extent)) { - startLine = true; - path.push(p); - } else if (startLine) { - isClosed = false; - startLine = false; - path.push(p); - GmxVectorTileCreator.appendLineData([path], false, this._lineVerticesMerc, this._lineOrders, this._lineIndexes); - path = []; - } - } - if (path.length) { - GmxVectorTileCreator.appendLineData([path], isClosed, this._lineVerticesMerc, this._lineOrders, this._lineIndexes); - } - } - - } else if (geometry.type.trim().toLowerCase() === "multipolygon") { - - let coordinates = geometry.coordinates; - let vertices = [], - indexes = []; - - for (let i = 0; i < coordinates.length; i++) { - let cci = coordinates[i]; - let data = flatten(cci); - let dataIndexes = earcut(data.vertices, data.holes, 2); - - for (let j = 0; j < dataIndexes.length; j++) { - indexes.push(dataIndexes[j] + vertices.length * 0.5); - } - - vertices.push.apply(vertices, data.vertices); - - for (var ii = 0; ii < cci.length; ii++) { - let ci = cci[ii]; - let path = []; - let startLine = false; - let isClosed = true; - for (let j = 0; j < ci.length; j++) { - let p = ci[j]; - if (p[0] < sw.lon) sw.lon = p[0]; - if (p[0] > ne.lon) ne.lon = p[0]; - if (p[1] < sw.lat) sw.lat = p[1]; - if (p[1] > ne.lat) ne.lat = p[1]; - if (!chkOnEdge(p, j < ci.length - 1 ? ci[j + 1] : ci[0], extent)) { - startLine = true; - path.push(p); - } else if (startLine) { - isClosed = false; - startLine = false; - path.push(p); - GmxVectorTileCreator.appendLineData([path], false, this._lineVerticesMerc, this._lineOrders, this._lineIndexes); - path = []; - } - } - if (path.length) { - GmxVectorTileCreator.appendLineData([path], isClosed, this._lineVerticesMerc, this._lineOrders, this._lineIndexes); - } - } - } - - this._polyVerticesMerc = vertices; - this._polyIndexes = indexes; - - } else if (geometry.type.toLowerCase() === "linestring") { - // - //TODO:extent - // - GmxVectorTileCreator.appendLineData([geometry._coordinates], false, this._lineVerticesMerc, this._lineOrders, this._lineIndexes); - } else if (geometry.type.toLowerCase() === "multilinestring") { - // - //TODO:extent - // - GmxVectorTileCreator.appendLineData(geometry._coordinates, false, this._lineVerticesMerc, this._lineOrders, this._lineIndexes); - } -}; - -GmxTileItem.prototype._createBuffers = function (h) { - this._polyVerticesBufferMerc = h.createArrayBuffer(new Float32Array(this._polyVerticesMerc), 2, this._polyVerticesMerc.length / 2); - this._polyIndexesBuffer = h.createElementArrayBuffer(new Uint32Array(this._polyIndexes), 1, this._polyIndexes.length); - - this._lineVerticesBufferMerc = h.createArrayBuffer(new Float32Array(this._lineVerticesMerc), 2, this._lineVerticesMerc.length / 2); - this._lineIndexesBuffer = h.createElementArrayBuffer(new Uint32Array(this._lineIndexes), 1, this._lineIndexes.length); - this._lineOrdersBuffer = h.createArrayBuffer(new Float32Array(this._lineOrders), 1, this._lineOrders.length / 2); -}; - -export { GmxTileItem }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxVector.js b/src/og/plugins/gmxVector/GmxVector.js deleted file mode 100644 index 835df7ea..00000000 --- a/src/og/plugins/gmxVector/GmxVector.js +++ /dev/null @@ -1,841 +0,0 @@ -/** - * @module og/gmx/GmxVector - */ - -'use strict'; - -import * as utils from '../../utils/shared.js'; -import { ajax } from '../../ajax.js'; -import { EPSG3857 } from '../../proj/EPSG3857.js'; -import { Extent } from '../../Extent.js'; -import { Geometry } from '../../entity/Geometry.js'; -import { GmxCheckVersion } from './GmxCheckVersion.js'; -import { GmxItem } from './GmxItem.js'; -import { GmxMaterial } from './GmxMaterial.js'; -import { GmxTileData } from './GmxTileData.js'; -import { GmxTileItem } from './GmxTileItem.js'; -import { GmxTileDataGroup } from './GmxTileDataGroup.js'; -import { GmxVectorTileCreator } from './GmxVectorTileCreator.js'; -import { isEmpty } from '../../utils/shared.js'; -import { Layer } from '../../layer/Layer.js'; -import { QueueArray } from '../../QueueArray.js'; -import { RENDERING } from '../../quadTree/quadTree.js'; -import { Vec4 } from '../../math/Vec4.js'; - -const TileSenderUrlImagery = '//maps.kosmosnimki.ru/TileSender.ashx?ModeKey=tile&ftc=osm&x={x}&y={y}&z={z}&srs=3857&LayerName={l}'; -const TileSenderUrlTemporal = '//maps.kosmosnimki.ru/TileSender.ashx?WrapStyle=None&ModeKey=tile&r=j&ftc=osm&srs=3857&LayerName={id}&z={z}&x={x}&y={y}&v={v}&Level={level}&Span={span}'; -const TileSenderUrl = '//maps.kosmosnimki.ru/TileSender.ashx?WrapStyle=None&ModeKey=tile&r=j&ftc=osm&srs=3857&LayerName={id}&z={z}&x={x}&y={y}&v={v}'; - -let __requestsCounter = 0; -const MAX_REQUESTS = 15; - -const EVENT_NAMES = [ - "draw", - - /** - * Triggered when current tile image has loaded before rendereing. - * @event og.gmx.VectorLayer#load - */ - "load", - - /** - * Triggered when all tiles have loaded or loading has stopped. - * @event og.gmx.VectorLayer#loadend - */ - "loadend" -]; - -/** - * TODO: description - * @class - * @param {String} name - Layer user name. - * @param {Object} options: - * @extends {og.Layer} - */ -class GmxVector extends Layer { - constructor(name, options) { - - super(name, options); - - options = options || {}; - - this.isVector = true; - - this.hostUrl = options.hostUrl || "//maps.kosmosnimki.ru/"; - - this._pickingEnabled = options.pickingEnabled !== undefined ? options.pickingEnabled : true; - - this._initialized = false; - - this._layerId = options.layerId; - - this._tileSenderUrlTemplate = '//maps.kosmosnimki.ru/TileSender.ashx?WrapStyle=None&ModeKey=tile&r=j&ftc=osm&srs=3857&LayerName={id}&z={z}&x={x}&y={y}&v={v}'; - - this._gmxProperties = null; - - this._beginDate = options.beginDate || null; - - this._endDate = options.endDate || null; - - this._itemCache = {}; - - this._tileDataGroupCache = {}; - - this._tileDataCache = {}; - - this._tileVersions = {}; - - this._itemZIndexCounter = 0; - - this._filterCallback = null; - - this._filteredItems = {}; - - this._styleCallback = null; - - this._styledItems = {}; - - this._updatedItemArr = []; - this._updatedItems = {}; - - this._style = options.style || {}; - this._style.fillColor = utils.createColorRGBA(this._style.fillColor, new Vec4(0.19, 0.62, 0.85, 0.57)); - this._style.lineColor = utils.createColorRGBA(this._style.lineColor, new Vec4(0.19, 0.62, 0.85, 1)); - this._style.strokeColor = utils.createColorRGBA(this._style.strokeColor, new Vec4(1, 1, 1, 0.95)); - this._style.lineWidth = this._style.lineWidth || 5; - this._style.strokeWidth = this._style.strokeWidth || 0; - - this.events.registerNames(EVENT_NAMES); - - this._needRefresh = false; - - this._tileDataGroupQueue = new QueueArray(); - - /** - * Current loading tiles couter. - * @protected - * @type {number} - */ - this._vecCounter = 0; - - /** - * Tile pending queue that waiting for loading. - * @protected - * @type {Array.} - */ - this._vecPendingsQueue = new QueueArray(); - } - - static getLayerInfo(hostUrl, layerId, proceedCallback, errorCallback) { - ajax.request(hostUrl + "/rest/ver1/layers/" + layerId + "/info", { - 'type': "GET", - 'responseType': "json", - 'data': { - 'WrapStyle': "None" - }, - 'success': function (data) { - proceedCallback && proceedCallback(data); - }, - 'error': function (err) { - errorCallback && errorCallback(err); - } - }); - } - - static dateToEpoch(date) { - var time = date.getTime(); - return time - time % 86400000; - } - - get instanceName() { - return "GmxVector"; - } - - _bindPicking() { - this._pickingColor.clear(); - } - - createMaterial(segment) { - return new GmxMaterial(segment, this); - } - - /** - * Adds layer to the planet. - * @public - * @param {og.scene.RenderNode} planet - Planet scene. - * @return {og.gmx.VectorLayer} - Returns og.gmx.VectorLayer instance. - */ - addTo(planet) { - - //Bind checkVersion to the planet - if (!planet._gmxCheckVersion) { - planet._gmxCheckVersion = new GmxCheckVersion(planet); - } - - //Bind gmxVectorTileCreator to the planet - if (!planet._gmxVectorTileCreator) { - planet._gmxVectorTileCreator = new GmxVectorTileCreator(planet); - } - - this._assignPlanet(planet); - - if (this._visibility && !this._initialized) { - this._initialize(); - } - - return this; - } - - /** - * Removes from planet. - * @public - * @returns {og.gmx.VectorLayer.Layer} -This layer. - */ - remove() { - super.remove(); - - this._planet && this._planet.events.off("draw", this._onRefreshNodes); - this._initialized = false; - return this; - } - - _initialize() { - - this._initialized = true; - - var p = this._planet; - var that = this; - - GmxVector.getLayerInfo(this.hostUrl, this._layerId, function (data) { - that._gmxProperties = data.properties; - if (data.properties.Temporal) { - var d = new Date(); - var currEpoch = GmxVector.dateToEpoch(d); - that._beginDate = that._beginDate || new Date(currEpoch); - that._endDate = that._endDate || new Date(d.setTime(currEpoch + 24 * 60 * 60 * 1000)); - that._tileSenderUrlTemplate = TileSenderUrlTemporal; - that._tileImageryUrlTemplate = TileSenderUrlImagery; - } else { - that._tileSenderUrlTemplate = TileSenderUrl; - } - that.setExtent(Geometry.getExtent(data.geometry)); - p._gmxCheckVersion.update(); - }); - } - - /** - * Sets layer visibility. - * @public - * @virtual - * @param {boolean} visibility - Layer visibility. - */ - setVisibility(visibility) { - - super.setVisibility(visibility); - - if (visibility) { - this._planet && this._planet.events.on("draw", this._onRefreshNodes, this); - } else { - this._planet && this._planet.events.off("draw", this._onRefreshNodes); - } - - if (this._visibility && !this._initialized) { - this._initialize(); - } - } - - _checkVersionSuccess(prop) { - var to = prop.tilesOrder, - ts = prop.tiles; - var toSize = to.length; - - var _X = to.indexOf("X"), - _Y = to.indexOf("Y"), - _Z = to.indexOf("Z"), - _V = to.indexOf("V"), - _LEVEL = to.indexOf("Level"), - _SPAN = to.indexOf("Span"); - - var tv = this._tileVersions; - for (var i = 0; i < ts.length; i += toSize) { - var x = ts[i + _X], - y = ts[i + _Y], - z = ts[i + _Z], - v = ts[i + _V], - level = ts[i + _LEVEL], - span = ts[i + _SPAN]; - - var tileIndex = Layer.getTileIndex(x, y, z, level, span); - if (tv[tileIndex] !== v) { - this._tileVersions[tileIndex] = v; - this._vecLoadTileData({ - 'id': this._layerId, - 'x': x.toString(), 'y': y.toString(), 'z': z.toString(), - 'v': v.toString(), "level": level.toString(), "span": span.toString() - }); - } - } - } - - setFilter(filterCallback) { - this._filterCallback = filterCallback; - this.updateFilter(); - } - - removeFilter() { - this._filterCallback = null; - this.updateFilter(); - } - - getItemVisibility(item) { - if (!this._filterCallback) { - return true; - } - var visibility = this._filteredItems[item.id]; - if (isEmpty(visibility)) { - visibility = this._filteredItems[item.id] = this._filterCallback[item.id](item); - } - return visibility; - } - - updateFilter() { - this._filteredItems = {}; - //...TODO - } - - setStyleHook(styleCallback) { - this._styleCallback = styleCallback; - this.updateStyle(); - } - - getItemStyle(item) { - if (!this._styleCallback) { - return item._style; - } - var style = this._styledItems[item.id]; - if (isEmpty(style)) { - style = this._styledItems[item.id] = this._styleCallback[item.id](item); - } - return style; - } - - updateStyle() { - this._styledItems = {}; - //...TODO - } - - _vecLoadTileData(t) { - if (__requestsCounter >= MAX_REQUESTS && this._vecCounter) { - this._vecPendingsQueue.push(t); - } else { - this._vecExec(t); - } - } - - _vecExec(t) { - - var url = utils.stringTemplate(this._tileSenderUrlTemplate, t); - - __requestsCounter++; - this._vecCounter++; - - var that = this; - ajax.request(url, { - 'type': "GET", - 'responseType': "text", - 'success': function (dataStr) { - __requestsCounter--; - that._vecCounter--; - - var data = JSON.parse(dataStr.substring(dataStr.indexOf('{'), dataStr.lastIndexOf('}') + 1)); - - that._handleTileData(t, data); - - var e = that.events.load; - if (e.handlers.length) { - that.events.dispatch(e, data); - } - - that._vecDequeueRequest(); - }, - 'error': function (err) { - __requestsCounter--; - that._vecCounter--; - - console.log(err); - - that._vecDequeueRequest(); - } - }); - } - - _vecDequeueRequest() { - if (this._vecPendingsQueue.length) { - if (__requestsCounter < MAX_REQUESTS) { - var t = this._vecWhilePendings(); - if (t) - this._vecExec.call(this, t); - } - } else if (this._vecCounter === 0) { - var e = this.events.loadend; - if (e.handlers.length) { - this.events.dispatch(e); - } - } - } - - _vecWhilePendings() { - while (this._vecPendingsQueue.length) { - return this._vecPendingsQueue.pop(); - } - } - - addItem(item) { - if (!item._layer) { - this._itemCache[item.id] = item; - item._layer = this; - if (this._planet) { - this._planet.renderer.assignPickingColor(item); - } - } - } - - _getAttributes(item) { - var res = {}, - prop = this._gmxProperties; - - var attrs = prop.attributes, - types = prop.attrTypes; - - for (var i = 0; i < attrs.length; i++) { - res[attrs[i]] = utils.castType[types[i]](item[i + 1]); - } - - return res; - } - - getStyle() { - - } - - _handleTileData(t, data) { - - var items = data.values, - style = this._style, - v = data.v; - - var h = this._planet.renderer.handler; - - var tileIndex = Layer.getTileIndex(t.x, t.y, t.z), - tileExtent = Extent.fromTile(t.x, t.y, t.z), - cacheTileDataGroup = this._tileDataGroupCache[tileIndex]; - - if (!cacheTileDataGroup) { - cacheTileDataGroup = this._tileDataGroupCache[tileIndex] = new GmxTileDataGroup(this, tileExtent); - } - - var tileData = new GmxTileData(data), - tileDataCacheIndex = Layer.getTileIndex(tileIndex, t.level, t.span); - - var cacheTileData = this._tileDataCache[tileDataCacheIndex]; - - if (cacheTileData) { - //Update tile version.Remove it before update. - this._tileDataCache[tileDataCacheIndex] = tileData; - cacheTileDataGroup.removeTileData(cacheTileData); - } - - cacheTileDataGroup.addTileData(tileData); - - for (var i = 0; i < items.length; i++) { - - var item = items[i], - gmxId = item[0]; - - var cacheItem = this._itemCache[gmxId]; - - if (!cacheItem) { - cacheItem = new GmxItem(gmxId, { - 'attributes': this._getAttributes(item), - 'version': v, - 'style': { - 'fillColor': style.fillColor.clone(), - 'lineColor': style.lineColor.clone(), - 'strokeColor': style.strokeColor.clone(), - 'lineWidth': style.lineWidth, - 'strokeWidth': style.strokeWidth, - 'zIndex': this._itemZIndexCounter++ - } - }); - - this.addItem(cacheItem); - - } else if (cacheItem.version !== v) { - cacheItem.version = v; - cacheItem.attributes = this._getAttributes(item); - - //TODO: Has to be tested - cacheItem._extent = null; - } - - var ti = new GmxTileItem(cacheItem, item[item.length - 1]); - - ti.createBuffers(h, tileExtent); - - tileData.addTileItem(ti); - cacheTileDataGroup.addTileItem(ti); - } - - this._tileDataGroupQueue.push(cacheTileDataGroup); - - this._needRefresh = true; - } - - _onRefreshNodes(p) { - - if (this._needRefresh && this._planet) { - while (this._tileDataGroupQueue.length) { - var t = this._tileDataGroupQueue.pop(); - this._refreshRecursevelyExtent(t.tileExtent, this._planet._quadTree); - } - this._needRefresh = false; - } - - //-> - //this.loadMaterial goes next. - } - - _refreshRecursevelyExtent(extent, treeNode) { - if (treeNode.ready) { - var lid = this._id; - for (var i = 0; i < treeNode.nodes.length; i++) { - var ni = treeNode.nodes[i]; - if (extent.overlaps(ni.segment._extent)) { - this._refreshRecursevelyExtent(extent, ni); - var m = ni.segment.materials[lid]; - if (m) { - if (m.segment.node.getState() !== RENDERING) { - m.layer.clearMaterial(m); - } else { - if (m.isReady) { - m.isReady = false; - m._updateTexture = m.texture; - m._updatePickingMask = m.pickingMask; - m.pickingReady = false;//m.pickingReady && item._pickingReady; - } - m.isLoading = false; - m.fromTile = null; - - //reset drawing process - m._completedItems = 0; - m._totalItems = 0; - } - //item._pickingReady = true; - } - } - } - } - } - - /** - * Start to load tile material. - * @public - * @virtual - * @param {og.planetSegment.Material} material - Current material. - */ - loadMaterial(material) { - - var seg = material.segment; - - if (seg._projection.id !== EPSG3857.id) { - material.textureNotExists(); - return; - } - - if (this._isBaseLayer) { - material.texture = seg._isNorth ? seg.planet.solidTextureOne : seg.planet.solidTextureTwo; - } else { - material.texture = seg.planet.transparentTexture; - } - - if (this._planet.layerLock.isFree()) { - var tileDataGroup = this._getTileDataGroup(seg); - if (tileDataGroup) { - material.isReady = false; - material.isLoading = true; - material.fromTile = tileDataGroup; - this._planet._gmxVectorTileCreator.add({ - 'material': material, - 'fromTile': tileDataGroup - }); - } - } - } - - _getTileDataGroup(seg) { - var tgc = this._tileDataGroupCache; - var data = tgc[seg.tileIndex]; - if (data) { - return data; - } else { - var pn = this._planet._quadTreeNodesCacheMerc[seg.tileIndex].parentNode; - while (pn) { - var ptc = tgc[pn.segment.tileIndex]; - if (ptc) { - return ptc; - } - pn = pn.parentNode; - } - } - return null; - } - - getGmxProperties() { - return this._gmxProperties; - } - - _loadScene(tileItem, material) { - - const item_id = tileItem.item.id; - - let seg = material.segment; - - material.sceneIsLoading[item_id] = true; - - var url = utils.stringTemplate(this._tileImageryUrlTemplate, { - 'x': seg.tileX, - 'y': seg.tileY, - 'z': seg.tileZoom, - 'l': tileItem.item.attributes.GMX_RasterCatalogID - }); - - this._planet._tileLoader.load({ - 'src': url, - 'type': 'imageBitmap', - 'filter': () => seg.plainReady && seg.node.getState() === RENDERING, - 'options': {} - }, (response) => { - if (response.status === "ready") { - if (material.isLoading) { - let e = this.events.load; - if (e.handlers.length) { - this.events.dispatch(e, material); - } - material.applySceneBitmapImage(item_id, response.data); - } - } else if (response.status === "abort") { - material.sceneIsLoading[item_id] = false; - } else if (response.status === "error") { - if (material.sceneIsLoading[item_id] === true) { - material.sceneNotExists(item_id); - } - } - }); - } - - applySceneTexture(tileItem, material) { - - const item_id = tileItem.item.id; - - if (material.sceneIsReady[item_id]) { - return [0, 0, 1, 1]; - } else { - - if (!material.sceneIsLoading[item_id]) { - this._loadScene(tileItem, material); - } - - // var segment = material.segment; - // var pn = segment.node, - // notEmpty = false; - - // var mId = this._id; - // var psegm = material; - // while (pn.parentNode) { - // if (psegm && psegm.sceneIsReady[item_id]) { - // notEmpty = true; - // break; - // } - // pn = pn.parentNode; - // psegm = pn.segment.materials[mId]; - // } - - // if (notEmpty) { - // material.sceneTexture[item_id] = psegm.sceneTexture[item_id]; - // var dZ2 = 1.0 / (2 << (segment.tileZoom - pn.segment.tileZoom - 1)); - // return [ - // segment.tileX * dZ2 - pn.segment.tileX, - // segment.tileY * dZ2 - pn.segment.tileY, - // dZ2, - // dZ2 - // ]; - // } else { - // material.sceneTexture[item_id] = segment.planet.transparentTexture; - // return [0, 0, 1, 1]; - // } - } - } - - /** - * Abort exact material loading. - * @public - * @param {og.planetSegment.Material} material - Segment material. - */ - abortMaterialLoading(material) { - material.abort(); - } - - applyMaterial(material) { - if (material.isReady) { - - if (material.notComplete() && !material.isLoading) { - material.isLoading = true; - this._planet._gmxVectorTileCreator.add({ - 'material': material, - 'fromTile': material.fromTile - }); - } - - return [0, 0, 1, 1]; - - } else { - - !material.isLoading && this.loadMaterial(material); - - var segment = material.segment; - var pn = segment.node, - notEmpty = false; - - var mId = this._id; - var psegm = material; - //var i = 0; - while (pn.parentNode /*&& i < 2*/) { - if (psegm && psegm.isReady) { - notEmpty = true; - break; - } - pn = pn.parentNode; - psegm = pn.segment.materials[mId]; - //i++; - } - - if (notEmpty) { - material.appliedNodeId = pn.nodeId; - material.texture = psegm.texture; - material.pickingMask = psegm.pickingMask; - var dZ2 = 1.0 / (2 << (segment.tileZoom - pn.segment.tileZoom - 1)); - return [ - segment.tileX * dZ2 - pn.segment.tileX, - segment.tileY * dZ2 - pn.segment.tileY, - dZ2, - dZ2 - ]; - } else { - if (material.textureExists && material._updateTexture) { - material.texture = material._updateTexture; - material.pickingMask = material._updatePickingMask; - } else { - material.texture = segment.planet.transparentTexture; - material.pickingMask = segment.planet.transparentTexture; - } - return [0, 0, 1, 1]; - } - } - } - - clearMaterial(material) { - material.clear(); - } - - _refreshRecursevely(item, treeNode) { - if (treeNode.ready) { - var lid = this._id; - for (var i = 0; i < treeNode.nodes.length; i++) { - var ni = treeNode.nodes[i]; - if (item._extent.overlaps(ni.segment._extent)) { - this._refreshRecursevely(item, ni); - var m = ni.segment.materials[lid]; - if (m && m.isReady) { - if (m.segment.node.getState() !== RENDERING) { - m.layer.clearMaterial(m); - } else { - m.pickingReady = m.pickingReady && item._pickingReady; - m.isReady = false; - m._updateTexture = m.texture; - m._updatePickingMask = m.pickingMask; - - //reset drawing process - m._completedItems = 0; - m._totalItems = 0; - } - item._pickingReady = true; - } - } - } - } - } - - _refreshPlanetNode(treeNode) { - for (var i = 0, items = this._updatedItemArr; i < items.length; i++) { - this._refreshRecursevely(items[i], treeNode); - } - } - - _updatePlanet() { - if (this._updatedItemArr.length) { - if (this._planet) { - this._refreshPlanetNode(this._planet._quadTree); - } - this._updatedItemArr.length = 0; - this._updatedItemArr = []; - this._updatedItems = {}; - } - } - - updateItems(items) { - for (var i = 0; i < items.length; i++) { - this.updateItem(items[i]); - } - } - - updateItem(item) { - if (item._extent) { - this._updatedItemArr.push(item); - this._updatedItems[item.id] = item; - } - } - - update() { - this._updatePlanet(); - this.events.dispatch(this.events.draw, this); - } - - setStyle(style) { - //... - } - - clear() { - this._itemCache = {}; - this._tileDataCache = {}; - this._tileDataGroupCache = {}; - this._tileVersions = {}; - } - - refresh() { - if (this._gmxProperties) { - this.clear(); - if (this._planet) { - this._planet._gmxCheckVersion.update(); - } - } - } - - setDateInterval(beginDate, endDate) { - this._beginDate = beginDate; - this._endDate = endDate; - // if (this._gmxProperties && this._gmxProperties.Temporal) { - // } - } -}; - -export { GmxVector }; \ No newline at end of file diff --git a/src/og/plugins/gmxVector/GmxVectorTileCreator.js b/src/og/plugins/gmxVector/GmxVectorTileCreator.js deleted file mode 100644 index a2942558..00000000 --- a/src/og/plugins/gmxVector/GmxVectorTileCreator.js +++ /dev/null @@ -1,444 +0,0 @@ -/** - * @module og/gmx/GmxVectorTileCreator - */ - -'use strict'; - -import { VectorTileCreator } from '../../utils/VectorTileCreator.js'; -import { inherits } from '../../inherits.js'; -import { RENDERING } from '../../quadTree/quadTree.js'; -import { Program } from '../../webgl/Program.js'; -import { types } from '../../webgl/types.js'; -import { Framebuffer } from '../../webgl/Framebuffer.js'; - -const GmxVectorTileCreator = function (planet, maxFrames, width, height) { - - VectorTileCreator.call(this, planet, maxFrames, width, height); - - this._maskTexture = null; - - this._framebuffer = null; - - this._temporaryData_ = null; - - planet.events.on("draw", this.frame, this); -}; - -inherits(GmxVectorTileCreator, VectorTileCreator); - -GmxVectorTileCreator.appendLineData = function (pathArr, isClosed, outVertices, outOrders, outIndexes) { - var index = 0; - - if (outIndexes.length > 0) { - index = outIndexes[outIndexes.length - 5] + 9; - outIndexes.push(index, index); - } else { - outIndexes.push(0, 0); - } - - for (var j = 0; j < pathArr.length; j++) { - var path = pathArr[j]; - var startIndex = index; - var last; - if (isClosed) { - last = path[path.length - 1]; - } else { - let p0 = path[0], - p1 = path[1]; - last = [p0[0] + p0[0] - p1[0], p0[1] + p0[1] - p1[1]]; - } - outVertices.push(last[0], last[1], last[0], last[1], last[0], last[1], last[0], last[1]); - outOrders.push(1, -1, 2, -2); - - for (var i = 0; i < path.length; i++) { - var cur = path[i]; - outVertices.push(cur[0], cur[1], cur[0], cur[1], cur[0], cur[1], cur[0], cur[1]); - outOrders.push(1, -1, 2, -2); - outIndexes.push(index++, index++, index++, index++); - } - - var first; - if (isClosed) { - first = path[0]; - outIndexes.push(startIndex, startIndex + 1, startIndex + 1, startIndex + 1); - } else { - let p0 = path[path.length - 1], - p1 = path[path.length - 2]; - first = [p0[0] + p0[0] - p1[0], p0[1] + p0[1] - p1[1]]; - outIndexes.push(index - 1, index - 1, index - 1, index - 1); - } - outVertices.push(first[0], first[1], first[0], first[1], first[0], first[1], first[0], first[1]); - outOrders.push(1, -1, 2, -2); - - if (j < pathArr.length - 1) { - index += 8; - outIndexes.push(index, index); - } - } -}; - -GmxVectorTileCreator.prototype._initialize = function () { - - //Line - if (!this._handler.programs.gmxVectorTileLineRasterization) { - this._handler.addProgram(new Program("gmxVectorTileLineRasterization", { - uniforms: { - 'viewport': { type: types.VEC2 }, - 'thicknessOutline': { type: types.FLOAT }, - 'alpha': { type: types.FLOAT }, - 'extentParams': { type: types.VEC4 }, - 'color': { type: types.VEC4 }, - 'thickness': { type: types.FLOAT } - }, - attributes: { - 'prev': { type: types.VEC2 }, - 'current': { type: types.VEC2 }, - 'next': { type: types.VEC2 }, - 'order': { type: types.FLOAT } - }, - vertexShader: `attribute vec2 prev; - attribute vec2 current; - attribute vec2 next; - attribute float order; - uniform float thickness; - uniform float thicknessOutline; - uniform vec2 viewport; - uniform vec4 extentParams; - - vec2 proj(vec2 coordinates){ - return vec2(-1.0 + (coordinates - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0); - } - - void main(){ - vec2 _next = next; - vec2 _prev = prev; - if(prev == current){ - if(next == current){ - _next = current + vec2(1.0, 0.0); - _prev = current - next; - }else{ - _prev = current + normalize(current - next); - } - } - if(next == current){ - _next = current + normalize(current - _prev); - } - - vec2 sNext = proj(_next), - sCurrent = proj(current), - sPrev = proj(_prev); - vec2 dirNext = normalize(sNext - sCurrent); - vec2 dirPrev = normalize(sPrev - sCurrent); - float dotNP = dot(dirNext, dirPrev); - - vec2 normalNext = normalize(vec2(-dirNext.y, dirNext.x)); - vec2 normalPrev = normalize(vec2(dirPrev.y, -dirPrev.x)); - vec2 d = (thickness + thicknessOutline) * 0.5 * sign(order) / viewport; - - vec2 m; - if(dotNP >= 0.99991){ - m = sCurrent - normalPrev * d; - }else{ - vec2 dir = normalPrev + normalNext; - m = sCurrent + dir * d / (dirNext.x * dir.y - dirNext.y * dir.x); - - if( dotNP > 0.5 && dot(dirNext + dirPrev, m - sCurrent) < 0.0 ){ - float occw = order * sign(dirNext.x * dirPrev.y - dirNext.y * dirPrev.x); - if(occw == -1.0){ - m = sCurrent + normalPrev * d; - }else if(occw == 1.0){ - m = sCurrent + normalNext * d; - }else if(occw == -2.0){ - m = sCurrent + normalNext * d; - }else if(occw == 2.0){ - m = sCurrent + normalPrev * d; - } - }else if(distance(sCurrent, m) > min(distance(sCurrent, sNext), distance(sCurrent, sPrev))){ - m = sCurrent + normalNext * d; - } - } - gl_Position = vec4(m.x, m.y, 0.0, 1.0); - }`, - fragmentShader: `precision highp float; - uniform float alpha; - uniform vec4 color; - void main() { - gl_FragColor = vec4(color.rgb, alpha * color.a); - }` - })); - } - - //Polygon - if (!this._handler.programs.gmxVectorTilePolygonRasterization) { - this._handler.addProgram(new Program("gmxVectorTilePolygonRasterization", { - uniforms: { - 'extentParams': { type: types.VEC4 }, - 'color': { type: types.VEC4 } - }, - attributes: { - 'coordinates': { type: types.VEC2 } - }, - vertexShader: `attribute vec2 coordinates; - uniform vec4 extentParams; - void main() { - gl_Position = vec4((-1.0 + (coordinates - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0), 0.0, 1.0); - }`, - fragmentShader: `precision highp float; - uniform vec4 color; - void main () { - gl_FragColor = color; - }` - })); - } - - this._framebuffer = new Framebuffer(this._handler, { - width: this._width, - height: this._height, - useDepth: false - }); - - this._framebuffer.init(); - - this._temporaryData_ = new Uint8Array(4 * this._width * this._height); - - this._maskTexture = this._handler.createEmptyTexture_n(this._width, this._height); -}; - -GmxVectorTileCreator.prototype.add = function (data) { - this._queue.push(data); -}; - -GmxVectorTileCreator.prototype.frame = function () { - - if (this._planet.layerLock.isFree() && this._queue.length) { - - const h = this._handler; - const gl = h.gl; - const p = this._planet; - const hLine = h.programs.gmxVectorTileLineRasterization; - const hPoly = h.programs.gmxVectorTilePolygonRasterization; - - const f = this._framebuffer.activate(); - - const _w = this._width; - const _h = this._height; - const _w2 = _w << 1; - const _h2 = _h << 1; - - let width = _w, - height = _h; - - gl.disable(gl.CULL_FACE); - gl.disable(gl.DEPTH_TEST); - gl.enable(gl.BLEND); - gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD); - gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - - let deltaTime = 0, - startTime = window.performance.now(); - - while (p.layerLock.isFree() && this._queue.length && deltaTime < 0.25) { - - let q = this._queue.shift(), - fromTile = q.fromTile, - material = q.material; - - if (material.isLoading && material.segment.node.getState() === RENDERING) { - - let layer = material.layer, - tItems = fromTile.tileItemArr, - materialZoom = material.segment.tileZoom, - zoomAvailable = materialZoom >= layer._gmxProperties.RCMinZoomForRasters, - extent = material.segment.getExtentMerc(), - extentParams = [extent.southWest.lon, extent.southWest.lat, 2.0 / extent.getWidth(), 2.0 / extent.getHeight()]; - - material.setTotalItems(tItems.length); - - // - //TODO: sort optimization is needed PLEASE!!!! PLEASE!!!! - tItems.sort(function (a, b) { - return layer.getItemStyle(a.item).zIndex - layer.getItemStyle(b.item).zIndex || a.item.id - b.item.id; - }); - // - - - if (materialZoom <= 3) { - width = _w2; - height = _h2; - } else { - width = _w; - height = _h; - } - - f.setSize(width, height); - - let texture = material.texture, - pickingMask = material.pickingMask; - - if (material._completedItems === 0) { - texture = material._updateTexture && material._updateTexture || h.createEmptyTexture_l(width, height); - if (layer._pickingEnabled && !material.pickingReady) { - if (material._updatePickingMask) { - pickingMask = material._updatePickingMask; - } else { - pickingMask = h.createEmptyTexture_n(width, height); - } - } - - f.bindOutputTexture(texture); - gl.clearColor(1.0, 1.0, 1.0, 0.0); - gl.clear(gl.COLOR_BUFFER_BIT); - - f.bindOutputTexture(pickingMask); - gl.clearColor(0.0, 0.0, 0.0, 0.0); - gl.clear(gl.COLOR_BUFFER_BIT); - } - - let i = 0; - while (i < 200 && material._completedItems < material._totalItems) { - - let ti = tItems[material._completedItems]; - - if (layer.getItemVisibility(ti.item) && ti.extent.overlaps(extent)) { - - let style = layer.getItemStyle(ti.item), - pickingColor = [ti.item._pickingColor.x / 255.0, ti.item._pickingColor.y / 255.0, ti.item._pickingColor.z / 255.0, 1.0]; - - hPoly.activate(); - - let sh = hPoly._program, - sha = sh.attributes, - shu = sh.uniforms; - - //============== - //polygon - //============== - f.bindOutputTexture(texture); - gl.uniform4fv(shu.color, [style.fillColor.x, style.fillColor.y, style.fillColor.z, style.fillColor.w]); - gl.uniform4fv(shu.extentParams, extentParams); - - gl.bindBuffer(gl.ARRAY_BUFFER, ti._polyVerticesBufferMerc); - gl.vertexAttribPointer(sha.coordinates, ti._polyVerticesBufferMerc.itemSize, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ti._polyIndexesBuffer); - gl.drawElements(gl.TRIANGLES, ti._polyIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - - //Polygon picking pass - //if (!material.pickingReady) { - f.bindOutputTexture(pickingMask); - gl.uniform4fv(shu.color, pickingColor); - gl.drawElements(gl.TRIANGLES, ti._polyIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - //} else { - // pickingMask = material.pickingMask; - //} - - //============== - //Outline - //============== - hLine.activate(); - sh = hLine._program; - sha = sh.attributes; - shu = sh.uniforms; - - f.bindOutputTexture(texture); - - gl.uniform2fv(shu.viewport, [width, height]); - gl.uniform4fv(shu.extentParams, extentParams); - - //vertex - var mb = ti._lineVerticesBufferMerc; - gl.bindBuffer(gl.ARRAY_BUFFER, mb); - gl.vertexAttribPointer(sha.prev, mb.itemSize, gl.FLOAT, false, 8, 0); - gl.vertexAttribPointer(sha.current, mb.itemSize, gl.FLOAT, false, 8, 32); - gl.vertexAttribPointer(sha.next, mb.itemSize, gl.FLOAT, false, 8, 64); - - //order - gl.bindBuffer(gl.ARRAY_BUFFER, ti._lineOrdersBuffer); - gl.vertexAttribPointer(sha.order, ti._lineOrdersBuffer.itemSize, gl.FLOAT, false, 4, 0); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ti._lineIndexesBuffer); - - //PASS - stroke - gl.uniform1f(shu.thickness, style.strokeWidth); - gl.uniform4fv(shu.color, style.strokeColor.toArray()); - - //Antialias pass - gl.uniform1f(shu.thicknessOutline, 2); - gl.uniform1f(shu.alpha, 0.54); - gl.drawElements(gl.TRIANGLE_STRIP, ti._lineIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - // - //Aliased pass - gl.uniform1f(shu.thicknessOutline, 1); - gl.uniform1f(shu.alpha, 1.0); - gl.drawElements(gl.TRIANGLE_STRIP, ti._lineIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - - //PASS - inside line - gl.uniform1f(shu.thickness, style.lineWidth); - gl.uniform4fv(shu.color, style.lineColor.toArray()); - - //Antialias pass - gl.uniform1f(shu.thicknessOutline, 2); - gl.uniform1f(shu.alpha, 0.54); - gl.drawElements(gl.TRIANGLE_STRIP, ti._lineIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - // - //Aliased pass - gl.uniform1f(shu.thicknessOutline, 1); - gl.uniform1f(shu.alpha, 1.0); - gl.drawElements(gl.TRIANGLE_STRIP, ti._lineIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - - //Outline picking pass - f.bindOutputTexture(pickingMask); - gl.uniform1f(shu.thicknessOutline, 8); - gl.uniform4fv(shu.color, pickingColor); - gl.drawElements(gl.TRIANGLE_STRIP, ti._lineIndexesBuffer.numItems, gl.UNSIGNED_INT, 0); - } - - material._completedItems++; - i++; - } - - material.applyTexture(texture, pickingMask); - - if (material.notComplete()) { - material.isLoading = true; - this.add(q); - } else if (layer._gmxProperties.Temporal && zoomAvailable) { - //Suggested that material.pickingMask is applied already in the frame buffer - this._proceedImageryTiles(layer, material); - } - - } else { - material.isLoading = false; - } - - deltaTime = window.performance.now() - startTime; - } - - gl.disable(gl.BLEND); - gl.enable(gl.DEPTH_TEST); - gl.enable(gl.CULL_FACE); - - f.deactivate(); - } -}; - - - -GmxVectorTileCreator.prototype._proceedImageryTiles = function (layer, material) { - - const f = this._framebuffer; - let data = this._temporaryData_; - f.readAllPixels(data); - - var toLoad = 0; - for (let i = data.length - 1; i >= 0; i -= 4) { - let c = layer.planet.renderer.getPickingObjectByColor(data[i - 3], data[i - 2], data[i - 1]); - if (c) { - toLoad++; - let sceneTextureOffset = layer.applySceneTexture( - material.fromTile.tileItemsCache[c.id], material); - } - } -}; - -export { GmxVectorTileCreator }; \ No newline at end of file diff --git a/src/og/proj/Proj.js b/src/og/proj/Proj.js index 0fc24630..eb670c98 100644 --- a/src/og/proj/Proj.js +++ b/src/og/proj/Proj.js @@ -10,10 +10,10 @@ * @api */ export const Units = { - "DEGREES": "degrees", - "FEET": "ft", - "METERS": "m", - "KILOMETERS": "km" + DEGREES: "degrees", + FEET: "ft", + METERS: "m", + KILOMETERS: "km" }; /** diff --git a/src/og/quadTree/EntityCollectionNode.js b/src/og/quadTree/EntityCollectionNode.js index ff80df98..a5ce2b1f 100644 --- a/src/og/quadTree/EntityCollectionNode.js +++ b/src/og/quadTree/EntityCollectionNode.js @@ -6,7 +6,6 @@ import * as mercator from '../mercator.js'; import * as quadTree from './quadTree.js'; -import { Box } from '../bv/Box.js'; import { EntityCollection } from '../entity/EntityCollection.js'; import { Extent } from '../Extent.js'; import { LonLat } from '../LonLat.js'; @@ -46,7 +45,7 @@ EntityCollectionNode.prototype._addEntitiesToCollection = function (entities, ri if (!ec) { ec = new EntityCollection({ - 'pickingEnabled': l._pickingEnabled + pickingEnabled: l._pickingEnabled }); ec._layer = this.layer; ec.addTo(p, true); @@ -136,7 +135,6 @@ EntityCollectionNode.prototype.buildTree = function (entities, rightNow) { } }; - EntityCollectionNode.prototype.createChildrenNodes = function () { var l = this.layer; var ext = this.extent; @@ -164,10 +162,7 @@ EntityCollectionNode.prototype.createChildrenNodes = function () { }; EntityCollectionNode.prototype.collectRenderCollectionsPASS1 = function (visibleNodes, outArr) { - var p = this.layer._planet; - var cam = p.renderer.activeCamera; var n = visibleNodes[this.nodeId]; - if (n) { var cn = this.childrenNodes; if (this.entityCollection) { @@ -288,7 +283,7 @@ EntityCollectionNode.prototype.renderCollection = function (outArr, visibleNodes EntityCollectionNode.prototype.alignEntityToTheGround = function (entity, segment) { var res = new Vec3(); segment.getEntityTerrainPoint(entity, res); - entity._setCartesian3vSilent(res.addA(res.normal().scale(Number(this.layer.relativeToGround) && entity._altitude || 0.0))); + entity._setCartesian3vSilent(res.addA(res.normal().scale((Number(this.layer.relativeToGround) && entity._altitude) || 0.0))); }; EntityCollectionNode.prototype.isVisible = function () { diff --git a/src/og/quadTree/Node.js b/src/og/quadTree/Node.js index 3e5df62c..61b60d4d 100644 --- a/src/og/quadTree/Node.js +++ b/src/og/quadTree/Node.js @@ -58,8 +58,7 @@ function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) { return res; }; - -///** +// /** // * Returns two float32 triangle coordinate arrays from inside of the source triangle array. // * @static // * @param {Array.} sourceArr - Source array @@ -70,7 +69,7 @@ function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) { // * @return{Array.} Triangle coordinates array from the source array. // * @TODO: optimization // */ -//function getMatrixSubArrayExt(sourceArrHigh, sourceArrLow, gridSize, i0, j0, size, outArrHigh, outArrLow) { +// function getMatrixSubArrayExt(sourceArrHigh, sourceArrLow, gridSize, i0, j0, size, outArrHigh, outArrLow) { // const i0size = i0 + size + 1; // const j0size = j0 + size + 1; @@ -90,9 +89,9 @@ function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) { // outArrHigh[vInd++] = sourceArrHigh[ind + 2]; // } // } -//}; +// }; -///** +// /** // * Returns triangle coordinate array from inside of the source triangle array. // * @static // * @param {Array.} sourceArr - Source array @@ -104,7 +103,7 @@ function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) { // * @return{Array.} Triangle coordinates array from the source array. // * @TODO: optimization // */ -//function getMatrixSubArrayBounds(sourceArr, gridSize, i0, j0, size, outBounds) { +// function getMatrixSubArrayBounds(sourceArr, gridSize, i0, j0, size, outBounds) { // const size_1 = size + 1; // const i0size = i0 + size_1; @@ -134,7 +133,7 @@ function getMatrixSubArray(sourceArr, gridSize, i0, j0, size) { // } // } // return res; -//}; +// }; /** * Returns two float32 triangle coordinate arrays from inside of the source triangle array. @@ -195,8 +194,8 @@ function getMatrixSubArrayBoundsExt(sourceArr, sourceArrHigh, sourceArrLow, grid * @param {number} tileZoom - Deep index of the quad tree. * @param {og.Extent} extent - Planet segment extent. */ -const Node = function (segmentPrototype, planet, partId, parent, id, tileZoom, extent) { - this.SegmentPrototype = segmentPrototype; +const Node = function (SegmentPrototype, planet, partId, parent, id, tileZoom, extent) { + this.SegmentPrototype = SegmentPrototype; this.planet = planet; this.parentNode = parent; this.partId = partId; @@ -207,7 +206,7 @@ const Node = function (segmentPrototype, planet, partId, parent, id, tileZoom, e this.ready = false; this.neighbors = [[], [], [], []]; this.nodes = [null, null, null, null]; - this.segment = new segmentPrototype(this, planet, tileZoom, extent); + this.segment = new SegmentPrototype(this, planet, tileZoom, extent); this._cameraInside = false; this.createBounds(); this.planet._createdNodesCount++; @@ -300,7 +299,7 @@ Node.prototype.createBounds = function () { ); if (seg.tileZoom < MAX_NORMAL_ZOOM) { - //check for segment zoom + // check for segment zoom let v_nw = new Vec3(pVerts[ind_nw], pVerts[ind_nw + 1], pVerts[ind_nw + 2]), v_se = new Vec3(pVerts[ind_se], pVerts[ind_se + 1], pVerts[ind_se + 2]); @@ -440,7 +439,7 @@ Node.prototype.renderTree = function (cam, maxZoom, terrainReadySegment, stopLoa this._cameraInside = false; - //Search a node which the camera is flying over. + // Search a node which the camera is flying over. if (!this.parentNode || this.parentNode._cameraInside) { let inside; if (Math.abs(cam._lonLat.lat) <= MAX_LAT && @@ -468,16 +467,16 @@ Node.prototype.renderTree = function (cam, maxZoom, terrainReadySegment, stopLoa let altVis = (cam.eye.distance(seg.bsphere.center) - seg.bsphere.radius < VISIBLE_DISTANCE * Math.sqrt(h)) || seg.tileZoom < 2; - if (inFrustum && (altVis || h > 10000.0) || this._cameraInside) { + if ((inFrustum && (altVis || h > 10000.0)) || this._cameraInside) { seg._collectVisibleNodes(); } - //First skip lowest zoom nodes + // First skip lowest zoom nodes if (seg.tileZoom < 2 && seg.normalMapReady) { this.traverseNodes(cam, maxZoom, terrainReadySegment, stopLoading); - } else if (!maxZoom && seg.acceptForRendering(cam) || seg.tileZoom === maxZoom) { + } else if ((!maxZoom && seg.acceptForRendering(cam)) || seg.tileZoom === maxZoom) { this.prepareForRendering(cam, altVis, inFrustum, terrainReadySegment, stopLoading); - } else if (seg.tileZoom < planet.terrain._maxNodeZoom && seg.terrainReady && !maxZoom || maxZoom) { + } else if (((seg.tileZoom < planet.terrain._maxNodeZoom) && (seg.terrainReady && !maxZoom)) || maxZoom) { if (seg.terrainReady) { this.traverseNodes(cam, maxZoom, seg, stopLoading); } else { @@ -539,7 +538,7 @@ Node.prototype.renderNode = function (onlyTerrain, terrainReadySegment, stopLoad var seg = this.segment; - //Create and load terrain data. + // Create and load terrain data if (!seg.terrainReady) { if (!seg.initialized) { @@ -560,7 +559,7 @@ Node.prototype.renderNode = function (onlyTerrain, terrainReadySegment, stopLoad } } - //Create normal map texture + // Create normal map texture if (seg.planet.lightEnabled && !seg.normalMapReady && !seg.parentNormalMapReady) { this.whileNormalMapCreating(); } @@ -570,7 +569,7 @@ Node.prototype.renderNode = function (onlyTerrain, terrainReadySegment, stopLoad return; } - //Calculate minimal and maximal zoom index on the screen + // Calculate minimal and maximal zoom index on the screen if (!this._cameraInside && seg.tileZoom > this.planet.maxCurrZoom) { this.planet.maxCurrZoom = seg.tileZoom; } @@ -581,7 +580,7 @@ Node.prototype.renderNode = function (onlyTerrain, terrainReadySegment, stopLoad seg._addViewExtent(); - //Finally this node proceeds to rendering. + // Finally this node proceeds to rendering. this.addToRender(); }; @@ -717,7 +716,6 @@ Node.prototype.whileNormalMapCreating = function () { seg.normalMapTextureBias[1] = seg.tileY - pn.segment.tileY * dZ2; seg.normalMapTextureBias[2] = 1.0 / dZ2; - if (seg.tileZoom > maxZ) { if (pn.segment.tileZoom === maxZ) { seg.parentNormalMapReady = true; @@ -726,12 +724,12 @@ Node.prototype.whileNormalMapCreating = function () { }; let BOUNDS = { - 'xmin': 0.0, - 'ymin': 0.0, - 'zmin': 0.0, - 'xmax': 0.0, - 'ymax': 0.0, - 'zmax': 0.0 + xmin: 0.0, + ymin: 0.0, + zmin: 0.0, + xmax: 0.0, + ymax: 0.0, + zmax: 0.0 }; Node.prototype.whileTerrainLoading = function (terrainReadySegment, stopLoading) { @@ -761,8 +759,6 @@ Node.prototype.whileTerrainLoading = function (terrainReadySegment, stopLoading) tempVerticesHigh, tempVerticesLow; - //if (this.appliedTerrainNodeId !== pn.nodeId) { //Replced to the first if 768 - this.appliedTerrainNodeId = pn.nodeId; let gridSize = pn.segment.gridSize / dZ2, @@ -810,7 +806,7 @@ Node.prototype.whileTerrainLoading = function (terrainReadySegment, stopLoading) pseg.normalMapVertices, pseg.normalMapVerticesHigh, pseg.normalMapVerticesLow, - pn.segment.fileGridSize,//pn.segment.planet.terrain.fileGridSize, + pn.segment.fileGridSize, gridSizeExt * offsetY, gridSizeExt * offsetX, gridSizeExt, @@ -890,16 +886,12 @@ Node.prototype.whileTerrainLoading = function (terrainReadySegment, stopLoading) } } - //replace - //seg.createCoordsBuffers(tempVerticesHigh, tempVerticesLow, seg.gridSize); - //with seg.readyToEngage = true; seg.terrainVertices = tempVertices; seg.terrainVerticesHigh = tempVerticesHigh; seg.terrainVerticesLow = tempVerticesLow; - //is used for earth point calculation(see segment object) seg.tempVertices = tempVertices; seg.tempVerticesHigh = tempVerticesHigh; seg.tempVerticesLow = tempVerticesLow; @@ -910,7 +902,6 @@ Node.prototype.whileTerrainLoading = function (terrainReadySegment, stopLoading) BOUNDS.zmin + (BOUNDS.zmax - BOUNDS.zmin) * 0.5, new Vec3(BOUNDS.xmin, BOUNDS.ymin, BOUNDS.zmin) ); - //} if (seg.tileZoom > terrain.maxZoom) { if (pn.segment.tileZoom >= terrain.maxZoom) { @@ -930,14 +921,14 @@ Node.prototype.whileTerrainLoading = function (terrainReadySegment, stopLoading) seg.normalMapVertices = tempVertices; seg.fileGridSize = Math.sqrt(tempVertices.length / 3) - 1; - let fgs = Math.sqrt(pseg.normalMapNormals.length / 3) - 1,//terrain.fileGridSize, + let fgs = Math.sqrt(pseg.normalMapNormals.length / 3) - 1, fgsZ = fgs / dZ2; if (fgs > 1) { seg.normalMapNormals = getMatrixSubArray(pseg.normalMapNormals, fgs, fgsZ * offsetY, fgsZ * offsetX, fgsZ); } else { - //TODO: interpolation + // TODO: interpolation seg.normalMapNormals = pseg.normalMapNormals; } } @@ -995,7 +986,7 @@ Node.prototype.clearTree = function () { }; Node.prototype.clearBranches = function () { - for (i = 0; i < this.nodes.length; i++) { + for (let i = 0; i < this.nodes.length; i++) { this.nodes[i].clearBranches(); this.nodes[i].segment.deleteMaterials(); } @@ -1034,6 +1025,4 @@ Node.prototype.traverseTree = function (callback) { } }; -export { Node }; - - +export { Node }; \ No newline at end of file diff --git a/src/og/renderer/Renderer.js b/src/og/renderer/Renderer.js index 5d3eee21..567ad8d5 100644 --- a/src/og/renderer/Renderer.js +++ b/src/og/renderer/Renderer.js @@ -8,7 +8,6 @@ import { RendererEvents } from './RendererEvents.js'; import { Vec2 } from '../math/Vec2.js'; import { Vec3 } from '../math/Vec3.js'; import { cons } from '../cons.js'; -//import { Program } from '../webgl/Program.js'; import { input } from '../input/input.js'; import { isEmpty } from '../utils/shared.js'; import { toneMapping } from '../shaders/toneMapping.js'; @@ -223,7 +222,7 @@ Renderer.prototype.setEventsActivity = function (activity) { */ Renderer.prototype.addPickingCallback = function (sender, callback) { var id = Renderer.__pickingCallbackCounter__++; - this._pickingCallbacks.push({ "id": id, "callback": callback, "sender": sender }); + this._pickingCallbacks.push({ id: id, callback: callback, sender: sender }); return id; }; @@ -265,16 +264,17 @@ Renderer.prototype.assignPickingColor = function (obj) { str = r + "_" + g + "_" + b; } - if (!obj._pickingColor) + if (!obj._pickingColor) { obj._pickingColor = new Vec3(r, g, b); - else + } else { obj._pickingColor.set(r, g, b); + } obj._pickingColorU = new Float32Array([r / 255, g / 255, b / 255]); this.colorObjects[str] = obj; } -} +}; /** * Removes picking color from object. @@ -352,10 +352,11 @@ Renderer.prototype.removeControl = function (control) { */ Renderer.prototype.initialize = function () { - if (this._initialized) + if (this._initialized) { return; - else + } else { this._initialized = true; + } var that = this; @@ -368,14 +369,14 @@ Renderer.prototype.initialize = function () { }); this.activeCamera = new Camera(this, { - 'eye': new Vec3(0, 0, 0), - 'look': new Vec3(0, 0, -1), - 'up': new Vec3(0, 1, 0) + eye: new Vec3(0, 0, 0), + look: new Vec3(0, 0, -1), + up: new Vec3(0, 1, 0) }); this.events.initialize(); - //Bind console key + // Bind console key this.events.on("charkeypress", input.KEY_APOSTROPHE, function () { cons.setVisibility(!cons.getVisibility()); }); @@ -383,8 +384,8 @@ Renderer.prototype.initialize = function () { this.handler.addProgram(screenFrame()); this.pickingFramebuffer = new Framebuffer(this.handler, { - 'width': 640, - 'height': 480 + width: 640, + height: 480 }).init(); this.readPixels = () => { }; @@ -532,11 +533,11 @@ Renderer.prototype._drawEntityCollections = function () { gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE); gl.disable(gl.CULL_FACE); - //Z-buffer offset + // Z-buffer offset gl.enable(gl.POLYGON_OFFSET_FILL); gl.polygonOffset(0.0, 0.0); - //billboards pass + // billboards pass gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this.billboardsTextureAtlas.texture); @@ -544,13 +545,13 @@ Renderer.prototype._drawEntityCollections = function () { while (i--) { var eci = ec[i]; if (eci._fadingOpacity) { - //first begin draw event + // first begin draw event eci.events.dispatch(eci.events.draw, eci); eci.billboardHandler.draw(); } } - //labels pass + // labels pass var fa = this.fontAtlas.atlasesArr; for (i = 0; i < fa.length; i++) { gl.activeTexture(gl.TEXTURE0 + i); @@ -562,13 +563,13 @@ Renderer.prototype._drawEntityCollections = function () { ec[i]._fadingOpacity && ec[i].labelHandler.draw(); } - //rays + // rays i = ec.length; while (i--) { ec[i]._fadingOpacity && ec[i].rayHandler.draw(); } - //polyline pass + // polyline pass i = ec.length; while (i--) { ec[i]._fadingOpacity && ec[i].polylineHandler.draw(); @@ -576,7 +577,7 @@ Renderer.prototype._drawEntityCollections = function () { gl.enable(gl.CULL_FACE); - //pointClouds pass + // pointClouds pass i = ec.length; while (i--) { if (ec[i]._fadingOpacity) { @@ -584,32 +585,32 @@ Renderer.prototype._drawEntityCollections = function () { } } - //shapes pass + // shapes pass i = ec.length; while (i--) { - var eci = ec[i]; + eci = ec[i]; if (eci._fadingOpacity) { eci.shapeHandler.draw(); } } - //Strip pass + // Strip pass i = ec.length; while (i--) { if (ec[i]._fadingOpacity) { ec[i].stripHandler.draw(); - //post draw event + // post draw event eci.events.dispatch(eci.events.drawend, eci); } } - //gl.polygonOffset(0.0, 0.0); + // gl.polygonOffset(0.0, 0.0); gl.disable(gl.POLYGON_OFFSET_FILL); this._entityCollections.length = 0; this._entityCollections = []; } -} +}; /** * Draw nodes. @@ -627,7 +628,7 @@ Renderer.prototype.draw = function () { var h = this.handler; - //h.gl.clearColor(0.0, 0.0, 0.0, 1.0); + // h.gl.clearColor(0.0, 0.0, 0.0, 1.0); h.gl.clearColor(115 / 255, 203 / 255, 249 / 255, 1.0); h.gl.clear(h.gl.COLOR_BUFFER_BIT | h.gl.DEPTH_BUFFER_BIT); @@ -636,7 +637,7 @@ Renderer.prototype.draw = function () { h.gl.activeTexture(h.gl.TEXTURE0); h.gl.bindTexture(h.gl.TEXTURE_2D, h.transparentTexture); - //Rendering scene nodes + // Rendering scene nodes var rn = this._renderNodesArr, i = rn.length; while (i--) { @@ -651,10 +652,10 @@ Renderer.prototype.draw = function () { this.blitFramebuffer && sfb.blit(this.blitFramebuffer); - //Rendering picking callbacks and refresh pickingColor + // Rendering picking callbacks and refresh pickingColor this._drawPickingBuffer(); - //Rendering on the screen + // Rendering on the screen this._fnScreenFrame(); e.mouseState.moving = false; @@ -677,7 +678,7 @@ Renderer.prototype._screenFrameMSAA = function () { sh.activate(); - //screen texture + // screen texture gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this.blitFramebuffer.textures[0]); gl.uniform1i(p.uniforms.hdrBuffer, 0); @@ -697,8 +698,8 @@ Renderer.prototype._screenFrameMSAA = function () { gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this.bloomFramebuffer.textures[0]); - //gl.bindTexture(gl.TEXTURE_2D, this.pickingFramebuffer.textures[0]); - //gl.bindTexture(gl.TEXTURE_2D, globe.planet._heightPickingFramebuffer.textures[0]); + // gl.bindTexture(gl.TEXTURE_2D, this.pickingFramebuffer.textures[0]); + // gl.bindTexture(gl.TEXTURE_2D, globe.planet._heightPickingFramebuffer.textures[0]); gl.uniform1i(p.uniforms.texture, 0); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); @@ -716,7 +717,7 @@ Renderer.prototype._screenFrameNoMSAA = function () { sh.activate(); gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this.sceneFramebuffer.textures[window.SCREEN]); - //gl.bindTexture(gl.TEXTURE_2D, this.pickingFramebuffer.textures[0]); + // gl.bindTexture(gl.TEXTURE_2D, this.pickingFramebuffer.textures[0]); gl.uniform1i(p.uniforms.texture, 0); gl.bindBuffer(gl.ARRAY_BUFFER, this._screenFrameCornersBuffer); gl.vertexAttribPointer(p.attributes.corners, 2, gl.FLOAT, false, 0, 0); @@ -773,12 +774,14 @@ Renderer.prototype._drawPickingBuffer = function () { var pc = this._currPickingColor; if (ts.x || ts.y) { this.pickingFramebuffer.readPixels(pc, ts.nx, 1.0 - ts.ny); - if (!(pc[0] || pc[1] || pc[2])) + if (!(pc[0] || pc[1] || pc[2])) { this.readPixels(pc, ts.nx, 1.0 - ts.ny, 1); + } } else { this.pickingFramebuffer.readPixels(pc, ms.nx, 1.0 - ms.ny); - if (!(pc[0] || pc[1] || pc[2])) + if (!(pc[0] || pc[1] || pc[2])) { this.readPixels(pc, ms.nx, 1.0 - ms.ny, 1); + } } } }; @@ -791,5 +794,4 @@ Renderer.prototype.start = function () { this.handler.start(); }; - export { Renderer }; \ No newline at end of file diff --git a/src/og/renderer/RendererEvents.js b/src/og/renderer/RendererEvents.js index 09338964..462a980c 100644 --- a/src/og/renderer/RendererEvents.js +++ b/src/og/renderer/RendererEvents.js @@ -231,10 +231,6 @@ class RendererEvents extends Events { } } - isKeyPressed(keyCode) { - return this._keyboardHandler.isKeyPressed(keyCode); - } - /** * Check key is pressed. * @public @@ -299,7 +295,6 @@ class RendererEvents extends Events { //dispatch stop mouse event clearTimeout(this._mousestopThread); - var that = this; this._mousestopThread = setTimeout(function () { ms.justStopped = true; }, 100); @@ -348,7 +343,7 @@ class RendererEvents extends Events { (t - this._lClkBegins <= ms.clickDelay)) { if (this._ldblClkBegins) { - var deltatime = window.performance.now() - this._ldblClkBegins; + let deltatime = window.performance.now() - this._ldblClkBegins; if (deltatime <= ms.doubleClickDelay) { ms.leftButtonDoubleClick = true; } @@ -370,7 +365,7 @@ class RendererEvents extends Events { (t - this._rClkBegins <= ms.clickDelay)) { if (this._rdblClkBegins) { - var deltatime = window.performance.now() - this._rdblClkBegins; + let deltatime = window.performance.now() - this._rdblClkBegins; if (deltatime <= ms.doubleClickDelay) { ms.rightButtonDoubleClick = true; } diff --git a/src/og/scene/Axes.js b/src/og/scene/Axes.js index ca4ffa4b..361425d3 100644 --- a/src/og/scene/Axes.js +++ b/src/og/scene/Axes.js @@ -6,7 +6,6 @@ import { RenderNode } from './RenderNode.js'; import { Program } from '../webgl/Program.js'; -import { types } from '../webgl/types.js'; class Axes extends RenderNode { constructor(size) { @@ -29,20 +28,20 @@ class Axes extends RenderNode { aVertexColor: 'vec4' }, vertexShader: - 'attribute vec3 aVertexPosition;\ - attribute vec4 aVertexColor;\ - uniform mat4 projectionViewMatrix;\ - varying vec4 vColor;\ - void main(void) {\ - gl_Position = projectionViewMatrix * vec4(aVertexPosition, 1.0);\ - vColor = aVertexColor;\ - }', + `attribute vec3 aVertexPosition; + attribute vec4 aVertexColor; + uniform mat4 projectionViewMatrix; + varying vec4 vColor; + void main(void) { + gl_Position = projectionViewMatrix * vec4(aVertexPosition, 1.0); + vColor = aVertexColor; + }`, fragmentShader: - 'precision highp float;\ - varying vec4 vColor;\ - void main(void) {\ - gl_FragColor = vColor;\ - }' + `precision highp float; + varying vec4 vColor; + void main(void) { + gl_FragColor = vColor; + }` })); } diff --git a/src/og/scene/BaseNode.js b/src/og/scene/BaseNode.js index 7a8b33dd..eb00b72e 100644 --- a/src/og/scene/BaseNode.js +++ b/src/og/scene/BaseNode.js @@ -57,7 +57,6 @@ class BaseNode { this.__counter__ = n; } - /** * Adds node to the current hierarchy. * @public @@ -66,8 +65,7 @@ class BaseNode { addNode(node) { if (this.parentNode == null) { node.topNode = this; - } - else { + } else { node.topNode = this.topNode; } node.parentNode = this; diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index 75ea84e2..18b8e71a 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -10,8 +10,6 @@ import * as math from '../math.js'; import * as mercator from '../mercator.js'; import * as segmentHelper from '../segment/segmentHelper.js'; import * as quadTree from '../quadTree/quadTree.js'; -import { MAX_RENDERED_NODES } from '../quadTree/quadTree.js'; -import { EPSG3857 } from '../proj/EPSG3857.js'; import { EPSG4326 } from '../proj/EPSG4326.js'; import { Extent } from '../Extent.js'; import { Framebuffer } from '../webgl/Framebuffer.js'; @@ -32,12 +30,9 @@ import { PlainSegmentWorker } from '../segment/PlainSegmentWorker.js'; import { TerrainWorker } from '../utils/TerrainWorker.js'; import { VectorTileCreator } from '../utils/VectorTileCreator.js'; import { wgs84 } from '../ellipsoid/wgs84.js'; -import { print2d } from '../utils/shared.js'; import { NIGHT } from '../res/night.js'; import { SPECULAR } from '../res/spec.js'; -import { Plane } from '../math/Plane.js'; import { Geoid } from '../terrain/Geoid.js'; -import { doubleToTwoFloats } from '../math/coder.js'; const MAX_LOD = 1.0; const MIN_LOD = 0.95; @@ -50,8 +45,6 @@ const MIN_LOD = 0.95; */ const MAX_NODES = 500; -const GLOBAL_DRAW_PRIORITY = -math.MAX; - const EVENT_NAMES = [ /** * Triggered before globe frame begins to render. @@ -357,7 +350,6 @@ class Planet extends RenderNode { this._maxLodRatio = MAX_LOD; this._minLodRatio = MIN_LOD; - this._diffuseMaterialArr = new Float32Array(this.SLICE_SIZE_3 + 3); this._ambientMaterialArr = new Float32Array(this.SLICE_SIZE_3 + 3); this._specularMaterialArr = new Float32Array(this.SLICE_SIZE_4 + 4); @@ -388,7 +380,6 @@ class Planet extends RenderNode { this._memKey = new Key(); - //events initialization this.events.registerNames(EVENT_NAMES); this._tempPickingPix_ = new Uint8Array(4); @@ -409,8 +400,9 @@ class Planet extends RenderNode { setRatioLod(maxLod, minLod) { this._maxLodRatio = maxLod; - if (minLod) + if (minLod) { this._minLodRatio = minLod; + } } /** @@ -432,8 +424,9 @@ class Planet extends RenderNode { getLayerByName(name) { var i = this.layers.length; while (i--) { - if (this.layers[i].name === name) + if (this.layers[i].name === name) { return this.layers[i]; + } } } @@ -548,7 +541,7 @@ class Planet extends RenderNode { setTerrain(terrain) { // - //TODO: Replace to terrain + // TODO: Replace to terrain // this.terrain = terrain; @@ -583,8 +576,8 @@ class Planet extends RenderNode { this.renderer.addPickingCallback(this, this._renderColorPickingFramebufferPASS); this._heightPickingFramebuffer = new Framebuffer(this.renderer.handler, { - 'width': 320, - 'height': 240 + width: 320, + height: 240 }); this._heightPickingFramebuffer.init(); @@ -595,10 +588,10 @@ class Planet extends RenderNode { * @public */ init() { - //Initialization indexes table + // Initialization indexes table var TABLESIZE = segmentHelper.TABLESIZE; - //Iniytialize indexes buffers cache. It takes ~120mb RAM! + // Initialization indexes buffers cache. It takes about 120mb RAM! for (var i = 0; i <= TABLESIZE; i++) { var c = Math.pow(2, i); !this._indexesCache[c] && (this._indexesCache[c] = []); @@ -623,8 +616,8 @@ class Planet extends RenderNode { } this._indexesCache[c][w][n][e][s] = { - 'indexes': indexes, - 'buffer': buffer + indexes: indexes, + buffer: buffer }; } } @@ -632,7 +625,7 @@ class Planet extends RenderNode { } } - //create empty textures + // creating empty textures var that = this; this.renderer.handler.createDefaultTexture(null, function (t) { that.solidTextureOne = t; @@ -649,14 +642,14 @@ class Planet extends RenderNode { this.camera.update(); - //Creating quad trees nodes + // Creating quad trees nodes this._quadTree = new Node(Segment, this, quadTree.NW, null, 0, 0, Extent.createFromArray([-20037508.34, -20037508.34, 20037508.34, 20037508.34])); this._quadTreeNorth = new Node(SegmentLonLat, this, quadTree.NW, null, 0, 0, Extent.createFromArray([-180, mercator.MAX_LAT, 180, 90])); this._quadTreeSouth = new Node(SegmentLonLat, this, quadTree.NW, null, 0, 0, Extent.createFromArray([-180, -90, 180, mercator.MIN_LAT])); this.drawMode = this.renderer.handler.gl.TRIANGLE_STRIP; - //Applying shaders + // Applying shaders this._initializeShaders(); this.updateVisibleLayers(); @@ -675,15 +668,17 @@ class Planet extends RenderNode { this.renderer.addPickingCallback(this, this._frustumEntityCollectionPickingCallback); - //load Earth night glowing texture + // loading Earth night glowing texture if (this._useNightTexture) { + // eslint-disable-next-line no-undef createImageBitmap(NIGHT).then((e) => this._nightTexture = this.renderer.handler.createTexture_mm(e) ); } - //load water specular mask + // load water specular mask if (this._useSpecularTexture) { + // eslint-disable-next-line no-undef createImageBitmap(SPECULAR).then((e) => this._specularTexture = this.renderer.handler.createTexture_l(e) ); @@ -699,7 +694,7 @@ class Planet extends RenderNode { this.renderer.events.on("draw", this._globalPreDraw, this, -100); - //Loads first nodes for better viewing if you have started on a lower altitude. + // Loading first nodes for better viewing if you have started on a lower altitude. this._preRender(); } @@ -866,8 +861,7 @@ class Planet extends RenderNode { _collectRenderNodes() { this._lodRatio = math.lerp( - this.camera.slope < 0.0 ? 0.0 : - this.camera.slope, + this.camera.slope < 0.0 ? 0.0 : this.camera.slope, this._maxLodRatio, this._minLodRatio ); @@ -875,7 +869,7 @@ class Planet extends RenderNode { this._nodeCounterError_ = 0; - //clear first + // clear first this._renderedNodes.length = 0; this._renderedNodes = []; @@ -892,7 +886,7 @@ class Planet extends RenderNode { this._quadTreeSouth.renderTree(this.camera, 0, null); this._quadTree.renderTree(this.camera, 0, null); - //TODO:Abolish "magic" numbers + // TODO:Abolish "magic" numbers if (this.renderer.activeCamera.slope > 0.8 && this.renderer.activeCamera._lonLat.height < 850000.0 && this.renderer.activeCamera._lonLat.height > 10000.0) { @@ -917,8 +911,6 @@ class Planet extends RenderNode { } } } - - //this._renderedNodes.push(this.camera._insideSegment.node); } _globalPreDraw() { @@ -935,15 +927,15 @@ class Planet extends RenderNode { */ frame() { - //free memory + // free memory if (this._createdNodesCount > MAX_NODES && this._distBeforeMemClear > 10000.0) { this.memClear(); } this._collectRenderNodes(); - //Here is the planet node dispatches a draw event before - //rendering begins and we have got render nodes. + // Here is the planet node dispatches a draw event before + // rendering begins and we have got render nodes. this.events.dispatch(this.events.draw, this); this.transformLights(); @@ -952,7 +944,7 @@ class Planet extends RenderNode { this._singleframebufferRendering(); - //Creates geoImages textures. + // Creating geoImages textures. this._geoImageCreator.frame(); } @@ -992,12 +984,12 @@ class Planet extends RenderNode { gl.uniformMatrix4fv(shu.viewMatrix, false, renderer.activeCamera._viewMatrix._m); gl.uniformMatrix4fv(shu.projectionMatrix, false, renderer.activeCamera._projectionMatrix._m); - //bind night glowing material + // bind night glowing material gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE); - gl.bindTexture(gl.TEXTURE_2D, (this.camera._lonLat.height > 329958.0) && (this._nightTexture || this.transparentTexture) || this.transparentTexture); + gl.bindTexture(gl.TEXTURE_2D, ((this.camera._lonLat.height > 329958.0) && (this._nightTexture || this.transparentTexture)) || this.transparentTexture); gl.uniform1i(shu.nightTexture, this.SLICE_SIZE); - //bind specular material + // bind specular material gl.activeTexture(gl.TEXTURE0 + this.SLICE_SIZE + 1); gl.bindTexture(gl.TEXTURE_2D, this._specularTexture || this.transparentTexture); gl.uniform1i(shu.specularTexture, this.SLICE_SIZE + 1); @@ -1041,7 +1033,7 @@ class Planet extends RenderNode { gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh); gl.uniform3fv(shu.eyePositionLow, cam.eyeLow); - //draw planet's nodes + // drawing planet nodes var rn = this._renderedNodes, sl = this._visibleTileLayerSlices; @@ -1056,9 +1048,9 @@ class Planet extends RenderNode { } i = rn.length; - while (i--) { + while (i--) { let s = rn[i].segment; - //s.equalize(); + // TODO: s.equalize(); s.readyToEngage && s.engage(); s.screenRendering(sh, sl[0], 0); } @@ -1115,7 +1107,7 @@ class Planet extends RenderNode { gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh); gl.uniform3fv(shu.eyePositionLow, cam.eyeLow); - //draw planet's nodes + // drawing planet nodes var rn = this._renderedNodes, sl = this._visibleTileLayerSlices; @@ -1163,7 +1155,7 @@ class Planet extends RenderNode { gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh); gl.uniform3fv(shu.eyePositionLow, cam.eyeLow); - //draw planet's nodes + // drawing planet nodes var rn = this._renderedNodes, sl = this._visibleTileLayerSlices; @@ -1207,10 +1199,10 @@ class Planet extends RenderNode { vi.update(); } - //3d entities(billnoards, labesl, shapes etc.) rendering + // Entities(billnoards, labesl, shapes etc.) rendering this.drawEntityCollections(this._frustumEntityCollections); - //Vector tiles rasteriazation + // Vector tiles rasteriazation this._vectorTileCreator.frame(); } @@ -1229,7 +1221,6 @@ class Planet extends RenderNode { memClear() { this._distBeforeMemClear = 0; - //??? private ??? this.camera._insideSegment = null; this.layerLock.lock(this._memKey); @@ -1241,7 +1232,7 @@ class Planet extends RenderNode { this._tileLoader.abort(); var that = this; - //setTimeout(function () { + // setTimeout(function () { that._quadTree.clearTree(); that._quadTreeNorth.clearTree(); that._quadTreeSouth.clearTree(); @@ -1249,7 +1240,7 @@ class Planet extends RenderNode { that.layerLock.free(that._memKey); that.terrainLock.free(that._memKey); that._normalMapCreator.free(that._memKey); - //}, 0); + // }, 0); this._createdNodesCount = 0; } @@ -1357,8 +1348,9 @@ class Planet extends RenderNode { */ getPixelFromLonLat(lonlat) { var coords = this.ellipsoid.lonLatToCartesian(lonlat); - if (coords) + if (coords) { return this.renderer.activeCamera.project(coords); + } return null; } diff --git a/src/og/scene/RenderNode.js b/src/og/scene/RenderNode.js index af1c7901..0ec2b616 100644 --- a/src/og/scene/RenderNode.js +++ b/src/og/scene/RenderNode.js @@ -251,8 +251,9 @@ class RenderNode extends BaseNode { */ _drawNodes() { for (var i = 0; i < this.childNodes.length; i++) { - if (this.childNodes[i]._isActive) + if (this.childNodes[i]._isActive) { this.childNodes[i]._drawNodes(); + } } if (this.show) { @@ -280,24 +281,24 @@ class RenderNode extends BaseNode { gl.disable(gl.CULL_FACE); - //Z-buffer offset + // Z-buffer offset gl.enable(gl.POLYGON_OFFSET_FILL); gl.polygonOffset(0.0, 0.0); - //billoard pass + // billoard pass var i = ec.length; while (i--) { ec[i]._fadingOpacity && ec[i].billboardHandler.drawPicking(); } - //label pass + // label pass i = ec.length; while (i--) { ec[i]._fadingOpacity && ec[i].labelHandler.drawPicking(); } - //ray pass - var i = ec.length; + // ray pass + i = ec.length; while (i--) { ec[i]._fadingOpacity && ec[i].rayHandler.drawPicking(); } @@ -307,29 +308,29 @@ class RenderNode extends BaseNode { gl.disable(gl.POLYGON_OFFSET_FILL); gl.enable(gl.CULL_FACE); - //polylines pass + // polylines pass i = ec.length; while (i--) { ec[i]._visibility && ec[i].polylineHandler.drawPicking(); } - ////shapes pass - //i = ec.length; - //while (i--) { + // //shapes pass + // i = ec.length; + // while (i--) { // ec[i]._visibility && ec[i].shapeHandler.drawPicking(); - //} + // } - ////pointClouds pass - //i = ec.length; - //while (i--) { + // //pointClouds pass + // i = ec.length; + // while (i--) { // ec[i]._visibility && ec[i].pointCloudHandler.drawPicking(); - //} + // } - ////Strip pass - //i = ec.length; - //while (i--) { + // //Strip pass + // i = ec.length; + // while (i--) { // ec[i]._visibility && ec[i].stripHandler.drawPicking(); - //} + // } } } diff --git a/src/og/scene/SkyBox.js b/src/og/scene/SkyBox.js index 1a0ce459..f2c275a5 100644 --- a/src/og/scene/SkyBox.js +++ b/src/og/scene/SkyBox.js @@ -7,8 +7,6 @@ import * as shaders from '../Program/skybox.js'; import { RenderNode } from './RenderNode.js'; -const RESOURCES_URL = ""; - class SkyBox extends RenderNode { constructor(params) { super("skybox"); @@ -19,12 +17,12 @@ class SkyBox extends RenderNode { static createDefault(RESOURCES_URL) { return new SkyBox({ - "nx": RESOURCES_URL + "skybox/gal/_nx.jpg", - "px": RESOURCES_URL + "skybox/gal/_px.jpg", - "py": RESOURCES_URL + "skybox/gal/_py.jpg", - "ny": RESOURCES_URL + "skybox/gal/_ny.jpg", - "pz": RESOURCES_URL + "skybox/gal/_pz.jpg", - "nz": RESOURCES_URL + "skybox/gal/_nz.jpg" + nx: RESOURCES_URL + "skybox/gal/_nx.jpg", + px: RESOURCES_URL + "skybox/gal/_px.jpg", + py: RESOURCES_URL + "skybox/gal/_py.jpg", + ny: RESOURCES_URL + "skybox/gal/_ny.jpg", + pz: RESOURCES_URL + "skybox/gal/_pz.jpg", + nz: RESOURCES_URL + "skybox/gal/_nz.jpg" }); } @@ -60,47 +58,47 @@ class SkyBox extends RenderNode { _createBuffers() { var vertices = new Float32Array([ - - 10000.0, 10000.0, - 10000.0, - - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, 10000.0, - 10000.0, - - 10000.0, 10000.0, - 10000.0, + -10000.0, 10000.0, -10000.0, + -10000.0, -10000.0, -10000.0, + 10000.0, -10000.0, -10000.0, + 10000.0, -10000.0, -10000.0, + 10000.0, 10000.0, -10000.0, + -10000.0, 10000.0, -10000.0, - - 10000.0, - 10000.0, 10000.0, - - 10000.0, - 10000.0, - 10000.0, - - 10000.0, 10000.0, - 10000.0, - - 10000.0, 10000.0, - 10000.0, - - 10000.0, 10000.0, 10000.0, - - 10000.0, - 10000.0, 10000.0, + -10000.0, -10000.0, 10000.0, + -10000.0, -10000.0, -10000.0, + -10000.0, 10000.0, -10000.0, + -10000.0, 10000.0, -10000.0, + -10000.0, 10000.0, 10000.0, + -10000.0, -10000.0, 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, 10000.0, + 10000.0, -10000.0, -10000.0, + 10000.0, -10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, - 10000.0, 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, + 10000.0, 10000.0, -10000.0, + 10000.0, -10000.0, -10000.0, - - 10000.0, - 10000.0, 10000.0, - - 10000.0, 10000.0, 10000.0, + -10000.0, -10000.0, 10000.0, + -10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, - 10000.0, - 10000.0, 10000.0, - - 10000.0, - 10000.0, 10000.0, + 10000.0, -10000.0, 10000.0, + -10000.0, -10000.0, 10000.0, - - 10000.0, 10000.0, - 10000.0, - 10000.0, 10000.0, - 10000.0, + -10000.0, 10000.0, -10000.0, + 10000.0, 10000.0, -10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, - - 10000.0, 10000.0, 10000.0, - - 10000.0, 10000.0, - 10000.0, + -10000.0, 10000.0, 10000.0, + -10000.0, 10000.0, -10000.0, - - 10000.0, - 10000.0, - 10000.0, - - 10000.0, - 10000.0, 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - 10000.0, - - 10000.0, - 10000.0, 10000.0, - 10000.0, - 10000.0, 10000.0 + -10000.0, -10000.0, -10000.0, + -10000.0, -10000.0, 10000.0, + 10000.0, -10000.0, -10000.0, + 10000.0, -10000.0, -10000.0, + -10000.0, -10000.0, 10000.0, + 10000.0, -10000.0, 10000.0 ]); this.vertexPositionBuffer = this.renderer.handler.createArrayBuffer(vertices, 3, vertices.length / 3); diff --git a/src/og/segment/PlainSegmentWorker.js b/src/og/segment/PlainSegmentWorker.js index 72750459..9175b97c 100644 --- a/src/og/segment/PlainSegmentWorker.js +++ b/src/og/segment/PlainSegmentWorker.js @@ -1,6 +1,6 @@ 'use sctrict'; -import { QueueArray } from '../QueueArray.js'; +// import { QueueArray } from '../QueueArray.js'; import { EPSG4326 } from '../proj/EPSG4326.js'; class PlainSegmentWorker { @@ -43,13 +43,13 @@ class PlainSegmentWorker { let m = geoid.model; let model = { - 'scale': m.scale, - 'offset': m.offset, - 'width': m.width, - 'height': m.height, - 'rlonres': m.rlonres, - 'rlatres': m.rlatres, - 'i': m.i + scale: m.scale, + offset: m.offset, + width: m.width, + height: m.height, + rlonres: m.rlonres, + rlatres: m.rlatres, + i: m.i }; this._workerQueue.forEach((w) => { @@ -58,11 +58,11 @@ class PlainSegmentWorker { rawfile.set(m.rawfile); w.postMessage({ - 'model': model, - 'rawfile': rawfile + model: model, + rawfile: rawfile }, [ - rawfile.buffer - ]); + rawfile.buffer + ]); }); } @@ -93,10 +93,10 @@ class PlainSegmentWorker { ]); w.postMessage({ - 'params': params + params: params }, [ - params.buffer - ]); + params.buffer + ]); } else { this._pendingQueue.push(segment); @@ -105,7 +105,7 @@ class PlainSegmentWorker { this.check(); } } -}; +} const _programm = ` diff --git a/src/og/segment/Segment.js b/src/og/segment/Segment.js index 6a74fda3..fd64a57f 100644 --- a/src/og/segment/Segment.js +++ b/src/og/segment/Segment.js @@ -2,12 +2,7 @@ import * as math from '../math.js'; import * as mercator from '../mercator.js'; -import { - NW, NE, SW, SE, - N, E, S, W, - OPSIDE, NOTRENDERING -} from '../quadTree/quadTree.js'; -import { Box } from '../bv/Box.js'; +import { N, E, S, W, OPSIDE, NOTRENDERING } from '../quadTree/quadTree.js'; import { EPSG3857 } from '../proj/EPSG3857.js'; import { Extent } from '../Extent.js'; import { Layer } from '../layer/Layer.js'; @@ -16,12 +11,11 @@ import { textureCoordsTable } from './segmentHelper.js'; import { Ray } from '../math/Ray.js'; import { Sphere } from '../bv/Sphere.js'; import { Vec3 } from '../math/Vec3.js'; -import { cons } from '../cons.js'; export const MAX_NORMAL_ZOOM = 7; -let _tempHigh = new Vec3(), - _tempLow = new Vec3(); +var _tempHigh = new Vec3(); +var _tempLow = new Vec3(); var _RenderingSlice = function (p) { this.layers = []; @@ -69,12 +63,6 @@ const Segment = function (node, planet, tileZoom, extent) { */ this.handler = planet.renderer.handler; - ///** - // * Segment bounding box. - // * @type {og.bv.Box} - // */ - //this.bbox = new Box(); - /** * Segment bounding box. * @type {og.bv.Sphere} @@ -128,7 +116,7 @@ const Segment = function (node, planet, tileZoom, extent) { */ this.tileY = 0; - this.tileIndex = ""; + this.tileIndex = ''; this._assignTileIndexes(); @@ -180,7 +168,7 @@ const Segment = function (node, planet, tileZoom, extent) { */ this.terrainExists = false; - //this.plainIndexes = null; + // this.plainIndexes = null; this.plainVertices = null; this.plainVerticesHigh = null; this.plainVerticesLow = null; @@ -234,7 +222,6 @@ Segment.prototype.acceptForRendering = function (camera) { return camera.projectedSize(this.bsphere.center, this.bsphere.radius) < 256 / this.planet._lodRatio; }; - /** * Returns entity terrain point. * @public @@ -261,8 +248,7 @@ Segment.prototype.isEntityInside = function (e) { * @returns {number} - */ Segment.prototype.getTerrainPoint = function (xyz, insideSegmentPosition, res, normal) { - - var verts = this.tempVertices,//this.terrainReady ? this.terrainVertices : this.tempVertices, + var verts = this.tempVertices, // this.terrainReady ? this.terrainVertices : this.tempVertices, ray = new Ray(xyz, xyz.negateTo()); if (verts) { @@ -295,7 +281,7 @@ Segment.prototype.getTerrainPoint = function (xyz, insideSegmentPosition, res, n var ind_v2 = ((size + 1) * (indY + 1) + indX) * 3; // - //TODO: replace with temp variables + // TODO: replace with temp variables var v0 = new Vec3(verts[ind_v0], verts[ind_v0 + 1], verts[ind_v0 + 2]), v1 = new Vec3(verts[ind_v0 + 3], verts[ind_v0 + 4], verts[ind_v0 + 5]), v2 = new Vec3(verts[ind_v2], verts[ind_v2 + 1], verts[ind_v2 + 2]); @@ -341,7 +327,6 @@ Segment.prototype.getTerrainPoint = function (xyz, insideSegmentPosition, res, n } }; - /** * Project wgs86 to segment native projection. * @public @@ -389,7 +374,7 @@ Segment.prototype.elevationsExists = function (elevations) { Segment.prototype.equalize = function () { this.readyToEngage = true; - //TODO + // TODO }; Segment.prototype.engage = function () { @@ -445,7 +430,6 @@ Segment.prototype._terrainWorkerCallback = function (data) { this.tempVerticesHigh = null; this.tempVerticesLow = null; - this.normalMapNormals = data.normalMapNormals; this.normalMapNormalsRaw = data.normalMapNormalsRaw; this.normalMapVertices = data.normalMapVertices; @@ -497,7 +481,7 @@ Segment.prototype.elevationsNotExists = function () { this.terrainIsLoading = false; this.node.appliedTerrainNodeId = this.node.nodeId; - //this.gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom]; + // this.gridSize = this.planet.terrain.gridSizeByZoom[this.tileZoom]; if (this.planet.lightEnabled && !this._inTheQueue) { this.planet._normalMapCreator.queue(this); @@ -562,13 +546,13 @@ Segment.prototype._normalMapEdgeEqualize = function (side) { let seg_a_raw = s.normalMapNormalsRaw, seg_b_raw = b.normalMapNormalsRaw; - let seg_a_verts = s.terrainVertices, - seg_b_verts = s.terrainVertices; + // let seg_a_verts = s.terrainVertices, + // seg_b_verts = s.terrainVertices; let s_gs = Math.sqrt(seg_a.length / 3), - b_gs = Math.sqrt(seg_b.length / 3), - s_gs1 = s_gs - 1, - b_gs1 = b_gs - 1; + // b_gs = Math.sqrt(seg_b.length / 3), + s_gs1 = s_gs - 1; + // b_gs1 = b_gs - 1; const i_a = s_gs1 * _S[side]; @@ -576,7 +560,7 @@ Segment.prototype._normalMapEdgeEqualize = function (side) { if (s.tileZoom === b.tileZoom) { - let i_b = s_gs1 - i_a; + const i_b = s_gs1 - i_a; if (_V[side]) { for (let k = 0; k < s_gs; k++) { @@ -621,7 +605,6 @@ Segment.prototype._normalMapEdgeEqualize = function (side) { } }; - Segment.prototype.applyTerrain = function (elevations) { if (elevations) { this.elevationsExists(elevations); @@ -748,7 +731,7 @@ Segment.prototype.destroySegment = function () { this.materials = null; - //this.plainIndexes = null; + // this.plainIndexes = null; this.plainVertices = null; this.plainVerticesHigh = null; this.plainVerticesLow = null; @@ -799,7 +782,7 @@ Segment.prototype.createBoundsByExtent = function () { var coord_sw = ellipsoid.geodeticToCartesian(extent.southWest.lon, extent.southWest.lat); var coord_ne = ellipsoid.geodeticToCartesian(extent.northEast.lon, extent.northEast.lat); - //check for zoom + // check for zoom if (this.tileZoom < MAX_NORMAL_ZOOM) { var coord_nw = ellipsoid.geodeticToCartesian(extent.southWest.lon, extent.northEast.lat); @@ -858,7 +841,6 @@ Segment.prototype.createTerrainFromChildNodes = function () { let hgsOne = 0.5 * gs + 0.5; - this.terrainVertices = new Float64Array(sgs3); this.terrainVerticesHigh = new Float32Array(sgs3); this.terrainVerticesLow = new Float32Array(sgs3); @@ -870,7 +852,6 @@ Segment.prototype.createTerrainFromChildNodes = function () { this.normalMapNormals = new Float32Array(gs3); this.normalMapNormalsRaw = new Float32Array(gs3); - let verts = this.terrainVertices, vertsHigh = this.terrainVerticesHigh, vertsLow = this.terrainVerticesLow, @@ -960,7 +941,6 @@ Segment.prototype.createTerrainFromChildNodes = function () { new Vec3(xmin, ymin, zmin) ); - this.appliedTerrainNodeId = this.nodeId; this.terrainReady = true; this.terrainExists = true; @@ -1074,7 +1054,6 @@ Segment.prototype._assignGlobalTextureCoordinates = function () { this._globalTextureCoordinates[3] = (mercator.POLE - e.southWest.lat) * mercator.ONE_BY_POLE_DOUBLE; }; - Segment.prototype.createPlainSegmentAsync = function () { let p = this.planet, @@ -1179,7 +1158,7 @@ Segment.prototype._createPlainVertices = function () { this.terrainVerticesHigh = vertsHigh; this.terrainVerticesLow = vertsLow; - //store raw normals + // store raw normals this.normalMapNormalsRaw = new Float32Array(nmNorms.length); this.normalMapNormalsRaw.set(nmNorms); @@ -1224,7 +1203,7 @@ Segment.prototype.screenRendering = function (sh, layerSlice, sliceIndex, defaul currHeight = 0; } - //First always draw whole planet base layer segment with solid texture. + // First always draw whole planet base layer segment with solid texture. gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE + 2); gl.bindTexture(gl.TEXTURE_2D, defaultTexture || this.getDefaultTexture()); gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE + 2); @@ -1245,9 +1224,9 @@ Segment.prototype.screenRendering = function (sh, layerSlice, sliceIndex, defaul this._indexBuffer = this._getIndexBuffer(); while (li) { - if (this.layerOverlap(li) && - (li._fading && li._fadingOpacity > 0.0 || - li.minZoom <= p.minCurrZoom && li.maxZoom >= p.maxCurrZoom)) { + if (this.layerOverlap(li) && ((li._fading && (li._fadingOpacity > 0.0)) || + ((li.minZoom >= p.minCurrZoom || li.maxZoom >= p.minCurrZoom) && (li.minZoom <= p.maxCurrZoom || li.maxZoom <= p.maxCurrZoom))) + ) { notEmpty = true; var m = pm[li._id]; @@ -1310,7 +1289,7 @@ Segment.prototype.screenRendering = function (sh, layerSlice, sliceIndex, defaul gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr); gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr); - //bind normalmap texture + // bind normalmap texture if (p.lightEnabled) { gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE + 3); gl.bindTexture(gl.TEXTURE_2D, this.normalMapTexture || p.transparentTexture); @@ -1318,7 +1297,7 @@ Segment.prototype.screenRendering = function (sh, layerSlice, sliceIndex, defaul gl.uniform3fv(shu.uNormalMapBias, this.normalMapTextureBias); - //bind segment specular and night material texture coordinates + // bind segment specular and night material texture coordinates gl.uniform4fv(shu.uGlobalTextureCoord, this._globalTextureCoordinates); gl.uniform3fv(shu.diffuseMaterial, p._diffuseMaterialArr); @@ -1413,7 +1392,7 @@ Segment.prototype.heightPickingRendering = function (sh, layerSlice, sliceIndex, var pm = this.materials, p = this.planet; - //First always draw whole planet base layer segment with solid texture. + // First always draw whole planet base layer segment with solid texture. gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE); gl.bindTexture(gl.TEXTURE_2D, defaultTexture || p.solidTextureOne); gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE); @@ -1495,7 +1474,7 @@ Segment.prototype.getExtent = function () { Segment.prototype.getNodeState = function () { var vn = this.planet._visibleNodes[this.node.nodeId]; - return vn && vn.state || NOTRENDERING; + return (vn && vn.state) || NOTRENDERING; }; Segment.prototype.getNeighborSide = function (b) { @@ -1518,4 +1497,4 @@ Segment.prototype.getNeighborSide = function (b) { return -1; }; -export { Segment }; \ No newline at end of file +export { Segment }; diff --git a/src/og/segment/SegmentLonLat.js b/src/og/segment/SegmentLonLat.js index b896c3b1..e76e4065 100644 --- a/src/og/segment/SegmentLonLat.js +++ b/src/og/segment/SegmentLonLat.js @@ -1,6 +1,5 @@ 'use sctrict'; -import * as math from '../math.js'; import * as mercator from '../mercator.js'; import * as quadTree from '../quadTree/quadTree.js'; import { EPSG4326 } from '../proj/EPSG4326.js'; @@ -11,7 +10,6 @@ import { LonLat } from '../LonLat.js'; import { Segment } from './Segment.js'; import { Vec3 } from '../math/Vec3.js'; - const _heightLat = 90.0 - mercator.MAX_LAT; const _maxPoleZoom = 7; const _pieceSize = _heightLat / Math.pow(2, _maxPoleZoom); @@ -186,7 +184,6 @@ SegmentLonLat.prototype._createPlainVertices = function () { this.plainReady = true; }; - SegmentLonLat.prototype._assignGlobalTextureCoordinates = function () { var e = this._extent; this._globalTextureCoordinates[0] = (e.southWest.lon + 180.0) / 360.0; @@ -242,7 +239,7 @@ SegmentLonLat.prototype.getNodeState = function () { } else { vn = this.planet._visibleNodesSouth[this.node.nodeId]; } - return vn && vn.state || quadTree.NOTRENDERING; + return (vn && vn.state) || quadTree.NOTRENDERING; }; SegmentLonLat.prototype._freeCache = function () { diff --git a/src/og/shaders/billboard.js b/src/og/shaders/billboard.js index a3f0aee0..43c74a87 100644 --- a/src/og/shaders/billboard.js +++ b/src/og/shaders/billboard.js @@ -5,7 +5,6 @@ 'use sctrict'; import { Program } from '../webgl/Program.js'; -import { types } from '../webgl/types.js'; export function billboardPicking() { return new Program("billboardPicking", { diff --git a/src/og/shaders/blur.js b/src/og/shaders/blur.js index a289e3d3..a159e242 100644 --- a/src/og/shaders/blur.js +++ b/src/og/shaders/blur.js @@ -5,7 +5,7 @@ import { Program } from '../webgl/Program.js'; export function buildKernel(sigma) { function gauss(x, sigma) { - return Math.exp(- (x * x) / (2.0 * sigma * sigma)); + return Math.exp(-(x * x) / (2.0 * sigma * sigma)); } var i, values, sum, halfWidth, kMaxKernelSize = 25, kernelSize = 2 * Math.ceil(sigma * 3.0) + 1; diff --git a/src/og/shaders/pointCloud.js b/src/og/shaders/pointCloud.js index f57a5edf..ead9dfeb 100644 --- a/src/og/shaders/pointCloud.js +++ b/src/og/shaders/pointCloud.js @@ -7,7 +7,6 @@ import { Program } from '../webgl/Program.js'; import { types } from '../webgl/types.js'; - //Picking is the same export function pointCloud() { return new Program("pointCloud", { @@ -21,27 +20,27 @@ export function pointCloud() { colors: { type: types.VEC3, enableArray: true } }, vertexShader: - 'attribute vec3 coordinates;\ - attribute vec4 colors;\ - uniform mat4 projectionViewMatrix;\ - uniform float opacity;\ - uniform float pointSize;\ - varying vec4 color;\ - const float C = 0.1;\ - const float far = 149.6e+9;\ - float logc = 2.0 / log( C * far + 1.0 );\ - void main() {\ - color = colors;\ - color.a *= opacity;\ - gl_Position = projectionViewMatrix * vec4(coordinates, 1.0);\ - gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w;\ - gl_PointSize = pointSize;\ - }', + `attribute vec3 coordinates; + attribute vec4 colors; + uniform mat4 projectionViewMatrix; + uniform float opacity; + uniform float pointSize; + varying vec4 color; + const float C = 0.1; + const float far = 149.6e+9; + float logc = 2.0 / log( C * far + 1.0 ); + void main() { + color = colors; + color.a *= opacity; + gl_Position = projectionViewMatrix * vec4(coordinates, 1.0); + gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w; + gl_PointSize = pointSize; + }`, fragmentShader: - 'precision highp float;\n\ - varying vec4 color;\ - void main(void) {\ - gl_FragColor = color;\ - }' + `precision highp float; + varying vec4 color; + void main(void) { + gl_FragColor = color; + }` }); }; \ No newline at end of file diff --git a/src/og/shaders/polyline.js b/src/og/shaders/polyline.js index 1b482e9b..46ef9f56 100644 --- a/src/og/shaders/polyline.js +++ b/src/og/shaders/polyline.js @@ -9,30 +9,30 @@ import { Program } from '../webgl/Program.js'; export function polyline_screen() { return new Program("polyline_screen", { uniforms: { - 'viewport': "vec2", - 'proj': "mat4", - 'view': "mat4", - 'eyePositionHigh': "vec3", - 'eyePositionLow': "vec3", - 'uFloatParams': "vec2", - 'thickness': "float" + viewport: "vec2", + proj: "mat4", + view: "mat4", + eyePositionHigh: "vec3", + eyePositionLow: "vec3", + uFloatParams: "vec2", + thickness: "float" }, attributes: { - 'prevHigh': "vec3", - 'currentHigh': "vec3", - 'nextHigh': "vec3", + prevHigh: "vec3", + currentHigh: "vec3", + nextHigh: "vec3", - 'prevLow': "vec3", - 'currentLow': "vec3", - 'nextLow': "vec3", + prevLow: "vec3", + currentLow: "vec3", + nextLow: "vec3", - 'order': "float", + order: "float", - 'color': "vec4" + color: "vec4" }, - vertexShader: - `precision highp float; + vertexShader: + `precision highp float; attribute vec3 prevHigh; attribute vec3 currentHigh; @@ -181,7 +181,7 @@ export function polyline_screen() { gl_Position = vec4((2.0 * m / viewport - 1.0) * dCurrent.w, dCurrent.z, dCurrent.w); gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w; }`, - + fragmentShader: `precision highp float; uniform vec2 uFloatParams; @@ -200,25 +200,25 @@ export function polyline_screen() { export function polyline_picking() { return new Program("polyline_picking", { uniforms: { - 'viewport': "vec2", - 'proj': "mat4", - 'view': "mat4", - 'eyePositionHigh': "vec3", - 'eyePositionLow': "vec3", - 'uFloatParams': "vec2", - 'color': "vec4", - 'thickness': "float" + viewport: "vec2", + proj: "mat4", + view: "mat4", + eyePositionHigh: "vec3", + eyePositionLow: "vec3", + uFloatParams: "vec2", + color: "vec4", + thickness: "float" }, attributes: { - 'prevHigh': "vec3", - 'currentHigh': "vec3", - 'nextHigh': "vec3", + prevHigh: "vec3", + currentHigh: "vec3", + nextHigh: "vec3", - 'prevLow': "vec3", - 'currentLow': "vec3", - 'nextLow': "vec3", + prevLow: "vec3", + currentLow: "vec3", + nextLow: "vec3", - 'order': "float" + order: "float" }, vertexShader: diff --git a/src/og/shaders/shape.js b/src/og/shaders/shape.js index c69966dc..66dea9d2 100644 --- a/src/og/shaders/shape.js +++ b/src/og/shaders/shape.js @@ -28,56 +28,56 @@ export function shape_wl() { aTextureCoord: { type: types.VEC2, enableArray: true } }, vertexShader: - 'attribute vec3 aVertexNormal;\ - attribute vec3 aVertexPosition;\ - attribute vec2 aTextureCoord;\ - uniform mat4 projectionMatrix;\ - uniform mat4 viewMatrix;\ - uniform mat4 modelMatrix;\ - uniform mat3 normalMatrix;\ - varying vec2 vTextureCoord;\ - varying vec3 vNormal;\ - varying vec4 vPosition;\ - const float C = 0.1;\ - const float far = 149.6e+9;\ - float logc = 2.0 / log( C * far + 1.0 );\ - void main(void) {\ - vTextureCoord = aTextureCoord;\ - vNormal = normalMatrix * aVertexNormal;\ - vPosition = viewMatrix * modelMatrix * vec4(aVertexPosition, 1.0);\ - gl_Position = projectionMatrix * vPosition;\ - gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w;\ - }', + `attribute vec3 aVertexNormal; + attribute vec3 aVertexPosition; + attribute vec2 aTextureCoord; + uniform mat4 projectionMatrix; + uniform mat4 viewMatrix; + uniform mat4 modelMatrix; + uniform mat3 normalMatrix; + varying vec2 vTextureCoord; + varying vec3 vNormal; + varying vec4 vPosition; + const float C = 0.1; + const float far = 149.6e+9; + float logc = 2.0 / log( C * far + 1.0 ); + void main(void) { + vTextureCoord = aTextureCoord; + vNormal = normalMatrix * aVertexNormal; + vPosition = viewMatrix * modelMatrix * vec4(aVertexPosition, 1.0); + gl_Position = projectionMatrix * vPosition; + gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w; + }`, fragmentShader: - 'precision highp float;\n\ - varying vec2 vTextureCoord;\ - varying vec3 vNormal;\ - varying vec4 vPosition;\ - uniform vec4 uColor;\ - uniform sampler2D uSampler;\n\ - #define MAX_POINT_LIGHTS 1\n\ - uniform int lightsQuantity;\ - uniform vec4 lightsPositions[MAX_POINT_LIGHTS];\ - uniform vec3 lightsParamsv[MAX_POINT_LIGHTS * 3];\ - uniform float lightsParamsf[MAX_POINT_LIGHTS];\ - void main(void) {\ - vec3 lightWeighting;\ - vec3 lightDirection;\ - vec3 normal;\ - vec3 eyeDirection;\ - vec3 reflectionDirection;\ - float specularLightWeighting;\ - float diffuseLightWeighting;\ - lightDirection = normalize(lightsPositions[0].xyz - vPosition.xyz * lightsPositions[0].w);\ - normal = normalize(vNormal);\ - eyeDirection = normalize(-vPosition.xyz);\ - reflectionDirection = reflect(-lightDirection, normal);\ - specularLightWeighting = pow(max(dot(reflectionDirection, eyeDirection), 0.0), lightsParamsf[0]);\ - diffuseLightWeighting = max(dot(normal, lightDirection), 0.0);\ - lightWeighting = lightsParamsv[0] + lightsParamsv[1] * diffuseLightWeighting + lightsParamsv[2] * specularLightWeighting;\ - vec4 cc = texture2D( uSampler, vTextureCoord.st );\ - gl_FragColor = vec4(lightWeighting, uColor.a) * cc * uColor;\ - }' + `precision highp float; + varying vec2 vTextureCoord; + varying vec3 vNormal; + varying vec4 vPosition; + uniform vec4 uColor; + uniform sampler2D uSampler; + #define MAX_POINT_LIGHTS 1 + uniform int lightsQuantity; + uniform vec4 lightsPositions[MAX_POINT_LIGHTS]; + uniform vec3 lightsParamsv[MAX_POINT_LIGHTS * 3]; + uniform float lightsParamsf[MAX_POINT_LIGHTS]; + void main(void) { + vec3 lightWeighting; + vec3 lightDirection; + vec3 normal; + vec3 eyeDirection; + vec3 reflectionDirection; + float specularLightWeighting; + float diffuseLightWeighting; + lightDirection = normalize(lightsPositions[0].xyz - vPosition.xyz * lightsPositions[0].w); + normal = normalize(vNormal); + eyeDirection = normalize(-vPosition.xyz); + reflectionDirection = reflect(-lightDirection, normal); + specularLightWeighting = pow(max(dot(reflectionDirection, eyeDirection), 0.0), lightsParamsf[0]); + diffuseLightWeighting = max(dot(normal, lightDirection), 0.0); + lightWeighting = lightsParamsv[0] + lightsParamsv[1] * diffuseLightWeighting + lightsParamsv[2] * specularLightWeighting; + vec4 cc = texture2D( uSampler, vTextureCoord.st ); + gl_FragColor = vec4(lightWeighting, uColor.a) * cc * uColor; + }` }); }; @@ -94,26 +94,26 @@ export function shape_nl() { aTextureCoord: { type: types.VEC2, enableArray: true } }, vertexShader: - 'attribute vec3 aVertexPosition;\ - attribute vec2 aTextureCoord;\ - uniform mat4 projectionViewMatrix;\ - uniform mat4 modelMatrix;\ - varying vec2 vTextureCoord;\ - const float C = 0.1;\ - const float far = 149.6e+9;\ - float logc = 2.0 / log( C * far + 1.0 );\ - void main(void) {\ - gl_Position = projectionViewMatrix * (modelMatrix * vec4(aVertexPosition, 1.0));\ - gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w;\ - vTextureCoord = aTextureCoord;\ - }', + `attribute vec3 aVertexPosition; + attribute vec2 aTextureCoord; + uniform mat4 projectionViewMatrix; + uniform mat4 modelMatrix; + varying vec2 vTextureCoord; + const float C = 0.1; + const float far = 149.6e+9; + float logc = 2.0 / log( C * far + 1.0 ); + void main(void) { + gl_Position = projectionViewMatrix * (modelMatrix * vec4(aVertexPosition, 1.0)); + gl_Position.z = ( log( C * gl_Position.w + 1.0 ) * logc - 1.0 ) * gl_Position.w; + vTextureCoord = aTextureCoord; + }`, fragmentShader: - 'precision highp float;\n\ - uniform vec4 uColor;\ - uniform sampler2D uSampler;\ - varying vec2 vTextureCoord;\ - void main(void) {\ - gl_FragColor = uColor*texture2D( uSampler, vTextureCoord.st );\ - }' + `precision highp float; + uniform vec4 uColor; + uniform sampler2D uSampler; + varying vec2 vTextureCoord; + void main(void) { + gl_FragColor = uColor*texture2D( uSampler, vTextureCoord.st ); + }` }); }; \ No newline at end of file diff --git a/src/og/shaders/skybox.js b/src/og/shaders/skybox.js index 52b63e04..91ad4392 100644 --- a/src/og/shaders/skybox.js +++ b/src/og/shaders/skybox.js @@ -18,20 +18,20 @@ export function skybox() { aVertexPosition: { type: types.VEC3, enableArray: true } }, vertexShader: - 'attribute vec3 aVertexPosition;\ - uniform mat4 projectionViewMatrix;\ - uniform vec3 pos;\ - varying vec3 vTextureCoord;\ - void main(void) {\ - vTextureCoord = aVertexPosition;\ - gl_Position = projectionViewMatrix * vec4(aVertexPosition + pos, 1.0);\ - }', + `attribute vec3 aVertexPosition; + uniform mat4 projectionViewMatrix; + uniform vec3 pos; + varying vec3 vTextureCoord; + void main(void) { + vTextureCoord = aVertexPosition; + gl_Position = projectionViewMatrix * vec4(aVertexPosition + pos, 1.0); + }`, fragmentShader: - 'precision lowp float;\ - varying vec3 vTextureCoord;\ - uniform samplerCube uSampler;\ - void main(void) {\ - gl_FragColor = textureCube(uSampler, vTextureCoord);\ - }' + `precision lowp float; + varying vec3 vTextureCoord; + uniform samplerCube uSampler; + void main(void) { + gl_FragColor = textureCube(uSampler, vTextureCoord); + }` }); }; \ No newline at end of file diff --git a/src/og/shapes/BaseShape.js b/src/og/shapes/BaseShape.js index dd19ea24..62a7b38b 100644 --- a/src/og/shapes/BaseShape.js +++ b/src/og/shapes/BaseShape.js @@ -401,7 +401,7 @@ class BaseShape { if (rn.lightEnabled) { sh = r.handler.programs.shape_wl; p = sh._program; - sha = p.attributes, + let sha = p.attributes, shu = p.uniforms; sh.activate(); @@ -418,8 +418,7 @@ class BaseShape { } else { sh = r.handler.programs.shape_nl; p = sh._program; - sha = p.attributes, - shu = p.uniforms; + let shu = p.uniforms; sh.activate(); diff --git a/src/og/shapes/Icosphere.js b/src/og/shapes/Icosphere.js index 18bb2e7b..bc61557f 100644 --- a/src/og/shapes/Icosphere.js +++ b/src/og/shapes/Icosphere.js @@ -21,7 +21,7 @@ import { BaseShape } from './BaseShape.js'; */ class Icosphere extends BaseShape { constructor(options) { - + super(options); /** * Icosphere radius. * @protected @@ -134,12 +134,11 @@ class Icosphere extends BaseShape { faces.push([8, 6, 7]); faces.push([9, 8, 1]); - // refine triangles for (let i = 0; i < this._level; i++) { var faces2 = []; for (let j = 0; j < faces.length; j++) { - var tri = faces[j]; + let tri = faces[j]; // replace triangle by 4 triangles var a = this._getMiddlePoint(tri[0], tri[1]); var b = this._getMiddlePoint(tri[1], tri[2]); @@ -154,7 +153,7 @@ class Icosphere extends BaseShape { } for (let i = 0; i < faces.length; i++) { - var tri = faces[i]; + let tri = faces[i]; this._indexData.push(tri[0]); this._indexData.push(tri[1]); this._indexData.push(tri[2]); diff --git a/src/og/shapes/Sphere.js b/src/og/shapes/Sphere.js index bec476f6..c32db5d4 100644 --- a/src/og/shapes/Sphere.js +++ b/src/og/shapes/Sphere.js @@ -24,6 +24,8 @@ class Sphere extends BaseShape { constructor(options) { + super(options); + /** * Sphere radius. * @protected diff --git a/src/og/terrain/EmptyTerrain.js b/src/og/terrain/EmptyTerrain.js index ef3d82a7..08a683e2 100644 --- a/src/og/terrain/EmptyTerrain.js +++ b/src/og/terrain/EmptyTerrain.js @@ -4,7 +4,6 @@ 'use strict'; - /** * Class represents terrain provider without elevation data. * @class @@ -117,7 +116,7 @@ class EmptyTerrain { } isReady() { - return this._geoid && this._geoid.model || !this._geoid; + return (this._geoid && this._geoid.model) || !this._geoid; } /** diff --git a/src/og/terrain/Geoid.js b/src/og/terrain/Geoid.js index ed5bc8e8..197bf62c 100644 --- a/src/og/terrain/Geoid.js +++ b/src/og/terrain/Geoid.js @@ -37,9 +37,7 @@ 'use strict'; class Geoid { - constructor(options) { - - options = options || {} + constructor(options = {}) { this.model = options.model || null; this.src = options.src || null; @@ -241,5 +239,4 @@ class Geoid { } }; - export { Geoid }; \ No newline at end of file diff --git a/src/og/terrain/GlobusTerrain.js b/src/og/terrain/GlobusTerrain.js index 27f20372..f5372b55 100644 --- a/src/og/terrain/GlobusTerrain.js +++ b/src/og/terrain/GlobusTerrain.js @@ -11,17 +11,13 @@ import { EPSG3857 } from '../proj/EPSG3857.js'; import { Events } from '../Events.js'; import { Loader } from '../utils/Loader.js'; import { NOTRENDERING } from '../quadTree/quadTree.js'; -import { QueueArray } from '../QueueArray.js'; +// import { QueueArray } from '../QueueArray.js'; import { stringTemplate } from '../utils/shared.js'; import { Geoid } from './Geoid.js'; import { Layer } from '../layer/Layer.js'; -import { Vec2 } from '../math/Vec2.js'; import { Vec3 } from '../math/Vec3.js'; -import { Extent } from '../Extent.js'; -import { LonLat } from '../LonLat.js'; import { Ray } from '../math/Ray.js'; - const EVENT_NAMES = [ /** * Triggered when current elevation tile has loaded but before rendereing. @@ -83,7 +79,7 @@ class GlobusTerrain extends EmptyTerrain { this.maxZoom = options.maxZoom || 14; this._geoid = new Geoid({ - 'src': "//openglobus.org/geoid/egm96-15.pgm" + src: "//openglobus.org/geoid/egm96-15.pgm" }); /** @@ -157,7 +153,6 @@ class GlobusTerrain extends EmptyTerrain { x = Math.floor((mercator.POLE + merc.lon) / size), y = Math.floor((mercator.POLE - merc.lat) / size); - let tileIndex = Layer.getTileIndex(x, y, z); let cache = this._elevationCache[tileIndex]; @@ -173,13 +168,13 @@ class GlobusTerrain extends EmptyTerrain { if (!this._fetchCache[tileIndex]) { let url = stringTemplate(this.url, { - "x": x, - "y": y, - "z": z + x: x, + y: y, + z: z }); this._fetchCache[tileIndex] = this._loader.fetch({ - 'src': url, - 'type': this._dataType + src: url, + type: this._dataType }); } @@ -234,11 +229,6 @@ class GlobusTerrain extends EmptyTerrain { let w = tileData.extent.getWidth(), gs = Math.sqrt(tileData.heights.length); - if (!tileData.extent.isInside(merc)) { - console.log("GlobusTerrain.js 221 - error!"); - debugger; - } - let size = w / (gs - 1); /* @@ -281,11 +271,6 @@ class GlobusTerrain extends EmptyTerrain { if (d === Ray.INSIDE) { return res.y; } - - if (d === Ray.AWAY) { - console.log("GlobusTerrain.js 337 - error!"); - debugger; - } } /** @@ -333,10 +318,10 @@ class GlobusTerrain extends EmptyTerrain { } else { this._loader.load({ - 'src': this._getHTTPRequestString(segment), - 'segment': segment, - 'type': this._dataType, - 'filter': () => segment.plainReady && segment.node.getState() !== NOTRENDERING || forceLoading + src: this._getHTTPRequestString(segment), + segment: segment, + type: this._dataType, + filter: () => (segment.plainReady && segment.node.getState() !== NOTRENDERING) || forceLoading }, response => { if (response.status === "ready") { let heights = this._createHeights(response.data, segment); @@ -371,9 +356,9 @@ class GlobusTerrain extends EmptyTerrain { */ _createUrl(segment) { return stringTemplate(this.url, { - "x": segment.tileX.toString(), - "y": segment.tileY.toString(), - "z": segment.tileZoom.toString() + x: segment.tileX.toString(), + y: segment.tileY.toString(), + z: segment.tileZoom.toString() }); } @@ -418,8 +403,8 @@ class GlobusTerrain extends EmptyTerrain { var e = this.events.load; if (e.handlers.length) { this.events.dispatch(e, { - "elevations": elevations, - "segment": segment + elevations: elevations, + segment: segment }); } segment.applyTerrain(elevations); diff --git a/src/og/terrain/MapboxTerrain.js b/src/og/terrain/MapboxTerrain.js index d3b96562..fa6fd1e0 100644 --- a/src/og/terrain/MapboxTerrain.js +++ b/src/og/terrain/MapboxTerrain.js @@ -9,7 +9,7 @@ class MapboxTerrain extends GlobusTerrain { super(name, options); options = options || {}; - + this.blur = false; this.equalizeVertices = true; @@ -81,5 +81,4 @@ class MapboxTerrain extends GlobusTerrain { } }; - -export { MapboxTerrain }; \ No newline at end of file +export { MapboxTerrain }; diff --git a/src/og/utils/FontAtlas.js b/src/og/utils/FontAtlas.js index e980aa14..15e00238 100644 --- a/src/og/utils/FontAtlas.js +++ b/src/og/utils/FontAtlas.js @@ -73,7 +73,7 @@ class FontAtlas { getFullIndex(face, style, weight) { face = face && face.trim().toLowerCase(); - if (!face || face && !this.fontDetector.detect(face)) { + if (!face || (face && !this.fontDetector.detect(face))) { face = this.defaultFace; } return face + " " + ((style && style.toLowerCase()) || "normal") + " " + ((weight && weight.toLowerCase()) || "normal"); @@ -144,9 +144,10 @@ class FontAtlas { _dequeueRequest() { this._counter--; if (this._pendingsQueue.length && this._counter < 1) { - var obj; - if (obj = this._whilePendings()) + var obj = this._whilePendings(); + if (obj) { this._exec(obj); + } } } diff --git a/src/og/utils/FontDetector.js b/src/og/utils/FontDetector.js index d0583f3f..e6dbe01d 100644 --- a/src/og/utils/FontDetector.js +++ b/src/og/utils/FontDetector.js @@ -43,7 +43,7 @@ class FontDetector { detected = detected || matched; } return detected; - } + }; } }; diff --git a/src/og/utils/GeoImageCreator.js b/src/og/utils/GeoImageCreator.js index bc54ace6..7eb7655b 100644 --- a/src/og/utils/GeoImageCreator.js +++ b/src/og/utils/GeoImageCreator.js @@ -45,10 +45,10 @@ GeoImageCreator.prototype.createGridBuffer = function (c, toMerc) { var grid = new Float32Array((gs + 1) * (gs + 1) * 2); var k = 0; - for (var i = 0; i <= gs; i++) { + for (let i = 0; i <= gs; i++) { var P03i = new LonLat(c[0].lon + i * v03.lon, c[0].lat + i * v03.lat), P12i = new LonLat(c[1].lon + i * v12.lon, c[1].lat + i * v12.lat); - for (var j = 0; j <= gs; j++) { + for (let j = 0; j <= gs; j++) { var P01j = new LonLat(c[0].lon + j * v01.lon, c[0].lat + j * v01.lat), P32j = new LonLat(c[3].lon + j * v32.lon, c[3].lat + j * v32.lat); var xx = utils.getLinesIntersectionLonLat(P03i, P12i, P01j, P32j); @@ -58,8 +58,8 @@ GeoImageCreator.prototype.createGridBuffer = function (c, toMerc) { } if (toMerc) { - for (var i = 0; i < grid.length; i += 2) { - var c = new LonLat(grid[i], grid[i + 1]).forwardMercator(); + for (let i = 0; i < grid.length; i += 2) { + let c = new LonLat(grid[i], grid[i + 1]).forwardMercator(); grid[i] = c.lon; grid[i + 1] = c.lat; } @@ -140,21 +140,21 @@ GeoImageCreator.prototype._initShaders = function () { corners: { type: types.VEC2, enableArray: true }, texCoords: { type: types.VEC2, enableArray: true } }, - vertexShader: 'attribute vec2 corners; \ - attribute vec2 texCoords; \ - varying vec2 v_texCoords; \ - uniform vec4 extentParams; \ - void main() { \ - v_texCoords = texCoords; \ - gl_Position = vec4((-1.0 + (corners - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0), 0.0, 1.0); \ - }', + vertexShader: `attribute vec2 corners; + attribute vec2 texCoords; + varying vec2 v_texCoords; + uniform vec4 extentParams; + void main() { + v_texCoords = texCoords; + gl_Position = vec4((-1.0 + (corners - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0), 0.0, 1.0); + }`, fragmentShader: - 'precision highp float;\n\ - uniform sampler2D sourceTexture; \ - varying vec2 v_texCoords; \ - void main () { \ - gl_FragColor = texture2D(sourceTexture, v_texCoords); \ - }' + `precision highp float; + uniform sampler2D sourceTexture; + varying vec2 v_texCoords; + void main () { + gl_FragColor = texture2D(sourceTexture, v_texCoords); + }` })); }; diff --git a/src/og/utils/ImagesCacheManager.js b/src/og/utils/ImagesCacheManager.js index 67aa98dd..3a564619 100644 --- a/src/og/utils/ImagesCacheManager.js +++ b/src/og/utils/ImagesCacheManager.js @@ -51,10 +51,11 @@ class ImagesCacheManager { var req = this._pendingsQueue.pop(); if (req) { if (this.imagesCache[req.src]) { - if (this._counter <= 0) + if (this._counter <= 0) { this._counter = 0; - else + } else { this._counter--; + } req.success(this.imagesCache[req.src]); } else { this._exec(req); diff --git a/src/og/utils/Loader.js b/src/og/utils/Loader.js index ad8f0a15..cb45d695 100644 --- a/src/og/utils/Loader.js +++ b/src/og/utils/Loader.js @@ -3,7 +3,6 @@ import { Events } from '../Events.js'; import { QueueArray } from '../QueueArray.js'; - const Loader = function (maxRequests = 12) { this.MAX_REQUESTS = maxRequests; diff --git a/src/og/utils/NormalMapCreator.js b/src/og/utils/NormalMapCreator.js index 1e526467..710b34c1 100644 --- a/src/og/utils/NormalMapCreator.js +++ b/src/og/utils/NormalMapCreator.js @@ -47,41 +47,41 @@ NormalMapCreator.prototype._init = function () { uniforms: { s_texture: { type: types.SAMPLER2D } }, - vertexShader: "attribute vec2 a_position; \n\ - attribute vec2 a_texCoord; \n\ - \n\ - varying vec2 blurCoordinates[5]; \n\ - \n\ - void main() { \n\ - vec2 vt = a_position * 0.5 + 0.5;" + + vertexShader: `attribute vec2 a_position; + attribute vec2 a_texCoord; + + varying vec2 blurCoordinates[5]; + + void main() { + vec2 vt = a_position * 0.5 + 0.5;` + (isWebkit ? "vt.y = 1.0 - vt.y; " : " ") + - "gl_Position = vec4(a_position, 0.0, 1.0); \n\ - blurCoordinates[0] = vt; \n\ - blurCoordinates[1] = vt + " + (1.0 / this._width * 1.407333) + ";" + + `gl_Position = vec4(a_position, 0.0, 1.0); + blurCoordinates[0] = vt; + blurCoordinates[1] = vt + ` + (1.0 / this._width * 1.407333) + ";" + "blurCoordinates[2] = vt - " + (1.0 / this._height * 1.407333) + ";" + "blurCoordinates[3] = vt + " + (1.0 / this._width * 3.294215) + ";" + "blurCoordinates[4] = vt - " + (1.0 / this._height * 3.294215) + ";" + "}", fragmentShader: - "precision lowp float;\n\ - uniform sampler2D s_texture; \n\ - \n\ - varying vec2 blurCoordinates[5]; \n\ - \n\ - void main() { \n\ - lowp vec4 sum = vec4(0.0); \n\ - if(blurCoordinates[0].x <= 0.01 || blurCoordinates[0].x >= 0.99 ||\n\ - blurCoordinates[0].y <= 0.01 || blurCoordinates[0].y >= 0.99){\n\ - sum = texture2D(s_texture, blurCoordinates[0]);\n\ - } else {\n\ - sum += texture2D(s_texture, blurCoordinates[0]) * 0.204164; \n\ - sum += texture2D(s_texture, blurCoordinates[1]) * 0.304005; \n\ - sum += texture2D(s_texture, blurCoordinates[2]) * 0.304005; \n\ - sum += texture2D(s_texture, blurCoordinates[3]) * 0.093913; \n\ - sum += texture2D(s_texture, blurCoordinates[4]) * 0.093913; \n\ - }\n\ - gl_FragColor = sum; \n\ - }" + `precision lowp float; + uniform sampler2D s_texture; + + varying vec2 blurCoordinates[5]; + + void main() { + lowp vec4 sum = vec4(0.0); + if(blurCoordinates[0].x <= 0.01 || blurCoordinates[0].x >= 0.99 || + blurCoordinates[0].y <= 0.01 || blurCoordinates[0].y >= 0.99){ + sum = texture2D(s_texture, blurCoordinates[0]); + } else { + sum += texture2D(s_texture, blurCoordinates[0]) * 0.204164; + sum += texture2D(s_texture, blurCoordinates[1]) * 0.304005; + sum += texture2D(s_texture, blurCoordinates[2]) * 0.304005; + sum += texture2D(s_texture, blurCoordinates[3]) * 0.093913; + sum += texture2D(s_texture, blurCoordinates[4]) * 0.093913; + } + gl_FragColor = sum; + }` }); var normalMap = new Program("normalMap", { @@ -89,23 +89,23 @@ NormalMapCreator.prototype._init = function () { a_position: { type: types.VEC2, enableArray: true }, a_normal: { type: types.VEC3, enableArray: true } }, - vertexShader: "attribute vec2 a_position; \ - attribute vec3 a_normal; \ - \ - varying vec3 v_color; \ - \ - void main() { \ - gl_Position = vec4(a_position, 0, 1); \ - v_color = normalize(a_normal) * 0.5 + 0.5; \ - }", + vertexShader: `attribute vec2 a_position; + attribute vec3 a_normal; + + varying vec3 v_color; + + void main() { + gl_Position = vec4(a_position, 0, 1); + v_color = normalize(a_normal) * 0.5 + 0.5; + }`, fragmentShader: - "precision highp float;\n\ - \ - varying vec3 v_color; \ - \ - void main () { \ - gl_FragColor = vec4(v_color, 1.0); \ - }" + `precision highp float; + + varying vec3 v_color; + + void main () { + gl_FragColor = vec4(v_color, 1.0); + }` }); this._handler.addProgram(normalMapBlur); @@ -208,7 +208,6 @@ NormalMapCreator.prototype._drawNormalMapBlur = function (segment) { return false; }; - NormalMapCreator.prototype._drawNormalMapNoBlur = function (segment) { var normals = segment.normalMapNormals; if (segment.node && diff --git a/src/og/utils/SDFCreator.js b/src/og/utils/SDFCreator.js index aaf2344b..44fad576 100644 --- a/src/og/utils/SDFCreator.js +++ b/src/og/utils/SDFCreator.js @@ -38,7 +38,8 @@ class SDFCreator { _initHandler(width, height) { this._handler = new Handler(null, { - width: width, height: height, + width: width, + height: height, context: { alpha: true, depth: false } }); this._handler.initialize(); @@ -55,6 +56,7 @@ class SDFCreator { this._framebuffer1.init(); this._framebuffer2.init(); } + _initShaders() { var vfield = new Program("vfield", { uniforms: { @@ -67,44 +69,44 @@ class SDFCreator { aPos: { type: types.VEC2, enableArray: true } }, vertexShader: - "precision highp float;\ - attribute vec2 aPos;\ - uniform vec2 uTexSize;\ - varying vec2 TexCoord;\ - varying vec2 vTexSize;\ - void main() {\ - TexCoord = (aPos + 1.0) * 0.5;\ - TexCoord *= uTexSize;\ - vTexSize = uTexSize;\ - gl_Position.xy = aPos;\ - gl_Position.zw = vec2(0.0, 1.0);\ - }", + `precision highp float; + attribute vec2 aPos; + uniform vec2 uTexSize; + varying vec2 TexCoord; + varying vec2 vTexSize; + void main() { + TexCoord = (aPos + 1.0) * 0.5; + TexCoord *= uTexSize; + vTexSize = uTexSize; + gl_Position.xy = aPos; + gl_Position.zw = vec2(0.0, 1.0); + }`, fragmentShader: - "precision highp float;\ - uniform sampler2D uTex1;\ - uniform int uDistance;\ - uniform vec2 uNeg;\ - varying vec2 TexCoord;\ - varying vec2 vTexSize;\ - const int maxDistance = " + this._outsideDistance + ";\ - void main() {\ - if ( uNeg.x - uNeg.y * texture2D(uTex1, TexCoord / vTexSize).r > 0.5 ) {\ - gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\ - return;\ - }\ - for ( int i=1; i <= maxDistance; i++ ) {\ - if(i > uDistance) break;\ - if ( uNeg.x - uNeg.y * texture2D(uTex1, ( TexCoord + vec2(0.0, i) ) / vTexSize ).r > 0.5 ) {\ - gl_FragColor = vec4( vec3(float(i)/float(uDistance)), 1.0 );\ - return;\ - }\ - if ( uNeg.x - uNeg.y * texture2D(uTex1, ( TexCoord - vec2(0.0, i)) / vTexSize ).r > 0.5 ) {\ - gl_FragColor = vec4(vec3(float(i)/float(uDistance)), 1.0);\ - return;\ - }\ - }\ - gl_FragColor = vec4(1.0);\ - }" + `precision highp float; + uniform sampler2D uTex1; + uniform int uDistance; + uniform vec2 uNeg; + varying vec2 TexCoord; + varying vec2 vTexSize; + const int maxDistance = ` + this._outsideDistance + `; + void main() { + if ( uNeg.x - uNeg.y * texture2D(uTex1, TexCoord / vTexSize).r > 0.5 ) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + return; + } + for ( int i=1; i <= maxDistance; i++ ) { + if(i > uDistance) break; + if ( uNeg.x - uNeg.y * texture2D(uTex1, ( TexCoord + vec2(0.0, i) ) / vTexSize ).r > 0.5 ) { + gl_FragColor = vec4( vec3(float(i)/float(uDistance)), 1.0 ); + return; + } + if ( uNeg.x - uNeg.y * texture2D(uTex1, ( TexCoord - vec2(0.0, i)) / vTexSize ).r > 0.5 ) { + gl_FragColor = vec4(vec3(float(i)/float(uDistance)), 1.0); + return; + } + } + gl_FragColor = vec4(1.0); + }` }); var hfield = new Program("hfield", { @@ -117,39 +119,39 @@ class SDFCreator { aPos: { type: types.VEC2, enableArray: true } }, vertexShader: - "precision highp float;\ - attribute vec2 aPos;\ - uniform vec2 uTexSize;\ - varying vec2 TexCoord;\ - varying vec2 vTexSize;\ - void main() {\n\ - TexCoord = (aPos + 1.0) * 0.5;\ - TexCoord *= uTexSize;\ - vTexSize = uTexSize;\ - gl_Position.xy = aPos;\ - gl_Position.zw = vec2(0.0, 1.0);\ - }", + `precision highp float; + attribute vec2 aPos; + uniform vec2 uTexSize; + varying vec2 TexCoord; + varying vec2 vTexSize; + void main() { + TexCoord = (aPos + 1.0) * 0.5; + TexCoord *= uTexSize; + vTexSize = uTexSize; + gl_Position.xy = aPos; + gl_Position.zw = vec2(0.0, 1.0); + }`, fragmentShader: - "precision highp float;\ - uniform sampler2D uTex1;\ - uniform int uDistance;\ - varying vec2 TexCoord;\ - varying vec2 vTexSize;\ - const int maxDistance = " + this._outsideDistance + ";\ - float CalcC(float H, float V) {\ - return ( sqrt( H * H + V * V ) );\ - }\ - void main(){\ - float dist = CalcC( 0.0, texture2D( uTex1, TexCoord / vTexSize ).r );\ - for ( int i = 1; i <= maxDistance; i++ ) {\ - if(i > uDistance) break;\ - float H = float(i) / float(uDistance);\ - dist = min( dist, CalcC( H, texture2D( uTex1, ( TexCoord + vec2( float(i), 0.0) ) / vTexSize ).r ) );\ - dist = min( dist, CalcC( H, texture2D( uTex1, ( TexCoord - vec2( float(i), 0.0) ) / vTexSize ).r ) );\ - }\ - gl_FragColor = vec4(dist);\ - gl_FragColor.w = 1.0;\ - }" + `precision highp float; + uniform sampler2D uTex1; + uniform int uDistance; + varying vec2 TexCoord; + varying vec2 vTexSize; + const int maxDistance = ` + this._outsideDistance + `; + float CalcC(float H, float V) { + return ( sqrt( H * H + V * V ) ); + } + void main(){ + float dist = CalcC( 0.0, texture2D( uTex1, TexCoord / vTexSize ).r ); + for ( int i = 1; i <= maxDistance; i++ ) { + if(i > uDistance) break; + float H = float(i) / float(uDistance); + dist = min( dist, CalcC( H, texture2D( uTex1, ( TexCoord + vec2( float(i), 0.0) ) / vTexSize ).r ) ); + dist = min( dist, CalcC( H, texture2D( uTex1, ( TexCoord - vec2( float(i), 0.0) ) / vTexSize ).r ) ); + } + gl_FragColor = vec4(dist); + gl_FragColor.w = 1.0; + }` }); var sum = new Program("sum", { @@ -161,25 +163,25 @@ class SDFCreator { attributes: { aPos: { type: types.VEC2, enableArray: true } }, - vertexShader: "attribute vec2 aPos;\n\ - varying vec2 TexCoord;\n\ - void main(){\n\ - TexCoord = (aPos * vec2(1.0,-1.0) + 1.0) * 0.5;\n\ - gl_Position.xy = aPos;\n\ - gl_Position.zw = vec2(0.0, 1.0);\n\ - }", + vertexShader: `attribute vec2 aPos; + varying vec2 TexCoord; + void main(){ + TexCoord = (aPos * vec2(1.0,-1.0) + 1.0) * 0.5; + gl_Position.xy = aPos; + gl_Position.zw = vec2(0.0, 1.0); + }`, fragmentShader: - "precision highp float;\n\ - uniform sampler2D outside;\n\ - uniform sampler2D inside;\n\ - uniform sampler2D source;\n\ - varying vec2 TexCoord;\n\ - void main(){\n\ - float o = texture2D(outside, TexCoord).r;\n\ - float i = 1.0 - texture2D(inside, TexCoord).r;\n\ - float s = texture2D(source, TexCoord).r;\n\ - gl_FragColor = vec4( vec3(1.0 - mix(i, o, step(0.5, s) * " + this._outsideMix + " + (1.0 - step(0.5, s)) * " + this._insideMix + " )), 1.0);\n\ - }" + `precision highp float; + uniform sampler2D outside; + uniform sampler2D inside; + uniform sampler2D source; + varying vec2 TexCoord; + void main(){ + float o = texture2D(outside, TexCoord).r; + float i = 1.0 - texture2D(inside, TexCoord).r; + float s = texture2D(source, TexCoord).r; + gl_FragColor = vec4( vec3(1.0 - mix(i, o, step(0.5, s) * ` + this._outsideMix + ` + (1.0 - step(0.5, s)) * ` + this._insideMix + ` )), 1.0); + }` }); this._handler.addPrograms([vfield, hfield, sum]); }; @@ -232,9 +234,9 @@ class SDFCreator { this._framebuffer2.deactivate(); h.programs.hfield.activate(); - var sh = h.programs.hfield._program; - var sha = sh.attributes, - shu = sh.uniforms; + sh = h.programs.hfield._program; + sha = sh.attributes; + shu = sh.uniforms; gl.uniform2fv(shu.uTexSize, [this._width, this._height]); gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer); @@ -265,9 +267,9 @@ class SDFCreator { gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); h.programs.sum.activate(); - var sh = h.programs.sum._program; - var sha = sh.attributes, - shu = sh.uniforms; + sh = h.programs.sum._program; + sha = sh.attributes; + shu = sh.uniforms; gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, this._framebuffer1.textures[0]); diff --git a/src/og/utils/TerrainWorker.js b/src/og/utils/TerrainWorker.js index 1a05034e..f19cb8b8 100644 --- a/src/og/utils/TerrainWorker.js +++ b/src/og/utils/TerrainWorker.js @@ -1,6 +1,6 @@ 'use sctrict'; -import { QueueArray } from '../QueueArray.js'; +// import { QueueArray } from '../QueueArray.js'; class TerrainWorker { constructor(numWorkers = 2) { diff --git a/src/og/utils/TextureAtlas.js b/src/og/utils/TextureAtlas.js index d696f8e3..44095a46 100644 --- a/src/og/utils/TextureAtlas.js +++ b/src/og/utils/TextureAtlas.js @@ -4,14 +4,6 @@ import { ImageCanvas } from '../ImageCanvas.js'; import { Rectangle } from '../Rectangle.js'; import { ImagesCacheManager } from './ImagesCacheManager.js'; - -/** - * Border beetween stored images. - * @type {number} - * @const - */ -const BORDER_SIZE = 4; - /** * Texture atlas stores images in one texture. Each image has its own * atlas texture coordinates. @@ -236,22 +228,25 @@ class TextureAtlasNode { var newNode = this.childNodes[0].insert(img); - if (newNode != null) + if (newNode != null) { return newNode; + } return this.childNodes[1].insert(img); } else { - if (this.image != null) + if (this.image != null) { return null; + } var rc = this.rect; var w = (img.atlasWidth || img.width) + this.atlas.borderSize; var h = (img.atlasHeight || img.height) + this.atlas.borderSize; - if (w > rc.getWidth() || h > rc.getHeight()) + if (w > rc.getWidth() || h > rc.getHeight()) { return null; + } if (rc.fit(w, h)) { this.image = img; diff --git a/src/og/utils/VectorTileCreator.js b/src/og/utils/VectorTileCreator.js index 7286f27c..059c56d3 100644 --- a/src/og/utils/VectorTileCreator.js +++ b/src/og/utils/VectorTileCreator.js @@ -41,78 +41,78 @@ VectorTileCreator.prototype._initialize = function () { 'color': { type: types.VEC4 }, 'thickness': { type: types.FLOAT } }, - vertexShader: 'attribute vec2 prev;\ - attribute vec2 current;\ - attribute vec2 next;\ - attribute float order;\ - attribute float thickness;\ - attribute vec4 color;\ - uniform float thicknessOutline;\ - uniform vec2 viewport;\ - uniform vec4 extentParams;\ - varying vec4 vColor;\ - \ - vec2 proj(vec2 coordinates){\ - return vec2(-1.0 + (coordinates - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0);\ - }\ - \ - void main(){\ - vColor = color;\ - vec2 _next = next;\ - vec2 _prev = prev;\ - if(prev == current){\ - if(next == current){\ - _next = current + vec2(1.0, 0.0);\ - _prev = current - next;\ - }else{\ - _prev = current + normalize(current - next);\ - }\ - }\ - if(next == current){\ - _next = current + normalize(current - _prev);\ - }\ - \ - vec2 sNext = proj(_next),\ - sCurrent = proj(current),\ - sPrev = proj(_prev);\ - vec2 dirNext = normalize(sNext - sCurrent);\ - vec2 dirPrev = normalize(sPrev - sCurrent);\ - float dotNP = dot(dirNext, dirPrev);\ - \ - vec2 normalNext = normalize(vec2(-dirNext.y, dirNext.x));\ - vec2 normalPrev = normalize(vec2(dirPrev.y, -dirPrev.x));\ - vec2 d = (thickness + thicknessOutline) * 0.5 * sign(order) / viewport;\ - \ - vec2 m;\ - if(dotNP >= 0.99991){\ - m = sCurrent - normalPrev * d;\ - }else{\ - vec2 dir = normalPrev + normalNext;\ - m = sCurrent + dir * d / (dirNext.x * dir.y - dirNext.y * dir.x);\ - \ - if( dotNP > 0.5 && dot(dirNext + dirPrev, m - sCurrent) < 0.0 ){\ - float occw = order * sign(dirNext.x * dirPrev.y - dirNext.y * dirPrev.x);\ - if(occw == -1.0){\ - m = sCurrent + normalPrev * d;\ - }else if(occw == 1.0){\ - m = sCurrent + normalNext * d;\ - }else if(occw == -2.0){\ - m = sCurrent + normalNext * d;\ - }else if(occw == 2.0){\ - m = sCurrent + normalPrev * d;\ - }\ - }else if(distance(sCurrent, m) > min(distance(sCurrent, sNext), distance(sCurrent, sPrev))){\ - m = sCurrent + normalNext * d;\ - }\ - }\ - gl_Position = vec4(m.x, m.y, 0.0, 1.0);\ - }', - fragmentShader: 'precision highp float;\ - uniform float alpha;\ - varying vec4 vColor;\ - void main() {\ - gl_FragColor = vec4(vColor.rgb, alpha * vColor.a);\ - }' + vertexShader: `attribute vec2 prev; + attribute vec2 current; + attribute vec2 next; + attribute float order; + attribute float thickness; + attribute vec4 color; + uniform float thicknessOutline; + uniform vec2 viewport; + uniform vec4 extentParams; + varying vec4 vColor; + + vec2 proj(vec2 coordinates){ + return vec2(-1.0 + (coordinates - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0); + } + + void main(){ + vColor = color; + vec2 _next = next; + vec2 _prev = prev; + if(prev == current){ + if(next == current){ + _next = current + vec2(1.0, 0.0); + _prev = current - next; + }else{ + _prev = current + normalize(current - next); + } + } + if(next == current){ + _next = current + normalize(current - _prev); + } + + vec2 sNext = proj(_next), + sCurrent = proj(current), + sPrev = proj(_prev); + vec2 dirNext = normalize(sNext - sCurrent); + vec2 dirPrev = normalize(sPrev - sCurrent); + float dotNP = dot(dirNext, dirPrev); + + vec2 normalNext = normalize(vec2(-dirNext.y, dirNext.x)); + vec2 normalPrev = normalize(vec2(dirPrev.y, -dirPrev.x)); + vec2 d = (thickness + thicknessOutline) * 0.5 * sign(order) / viewport; + + vec2 m; + if(dotNP >= 0.99991){ + m = sCurrent - normalPrev * d; + }else{ + vec2 dir = normalPrev + normalNext; + m = sCurrent + dir * d / (dirNext.x * dir.y - dirNext.y * dir.x); + + if( dotNP > 0.5 && dot(dirNext + dirPrev, m - sCurrent) < 0.0 ){ + float occw = order * sign(dirNext.x * dirPrev.y - dirNext.y * dirPrev.x); + if(occw == -1.0){ + m = sCurrent + normalPrev * d; + }else if(occw == 1.0){ + m = sCurrent + normalNext * d; + }else if(occw == -2.0){ + m = sCurrent + normalNext * d; + }else if(occw == 2.0){ + m = sCurrent + normalPrev * d; + } + }else if(distance(sCurrent, m) > min(distance(sCurrent, sNext), distance(sCurrent, sPrev))){ + m = sCurrent + normalNext * d; + } + } + gl_Position = vec4(m.x, m.y, 0.0, 1.0); + }`, + fragmentShader: `precision highp float; + uniform float alpha; + varying vec4 vColor; + void main() { + gl_FragColor = vec4(vColor.rgb, alpha * vColor.a); + }` })); } @@ -126,19 +126,19 @@ VectorTileCreator.prototype._initialize = function () { 'coordinates': { type: types.VEC2 }, 'colors': { type: types.VEC4 } }, - vertexShader: 'attribute vec2 coordinates; \ - attribute vec4 colors; \ - uniform vec4 extentParams; \ - varying vec4 color;\ - void main() { \ - color = colors;\ - gl_Position = vec4((-1.0 + (coordinates - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0), 0.0, 1.0); \ - }', - fragmentShader: 'precision highp float;\ - varying vec4 color;\ - void main () { \ - gl_FragColor = color; \ - }' + vertexShader: `attribute vec2 coordinates; + attribute vec4 colors; + uniform vec4 extentParams; + varying vec4 color; + void main() { + color = colors; + gl_Position = vec4((-1.0 + (coordinates - extentParams.xy) * extentParams.zw) * vec2(1.0, -1.0), 0.0, 1.0); + }`, + fragmentShader: `precision highp float; + varying vec4 color; + void main () { + gl_FragColor = color; + }` })); } @@ -174,7 +174,7 @@ VectorTileCreator.prototype.frame = function () { var pickingMask = null, texture = null; - var prevLayerId = -1; + // var prevLayerId = -1; var extentParams = new Array(4); @@ -195,7 +195,7 @@ VectorTileCreator.prototype.frame = function () { height = _h; } - texture = material._updateTexture && material._updateTexture || h.createEmptyTexture_l(width, height); + texture = (material._updateTexture && material._updateTexture) || h.createEmptyTexture_l(width, height); f.setSize(width, height); @@ -331,7 +331,7 @@ VectorTileCreator.prototype.frame = function () { } deltaTime = window.performance.now() - startTime; - prevLayerId = material.layer._id; + // prevLayerId = material.layer._id; } gl.disable(gl.BLEND); diff --git a/src/og/utils/colorTable.js b/src/og/utils/colorTable.js index 7cb5866a..4ca0f64f 100644 --- a/src/og/utils/colorTable.js +++ b/src/og/utils/colorTable.js @@ -1,28 +1,145 @@ 'use strict'; export const colorTable = { - "aliceblue": "#f0f8ff", "antiquewhite": "#faebd7", "aqua": "#00ffff", "aquamarine": "#7fffd4", "azure": "#f0ffff", - "beige": "#f5f5dc", "bisque": "#ffe4c4", "black": "#000000", "blanchedalmond": "#ffebcd", "blue": "#0000ff", "blueviolet": "#8a2be2", "brown": "#a52a2a", "burlywood": "#deb887", - "cadetblue": "#5f9ea0", "chartreuse": "#7fff00", "chocolate": "#d2691e", "coral": "#ff7f50", "cornflowerblue": "#6495ed", "cornsilk": "#fff8dc", "crimson": "#dc143c", "cyan": "#00ffff", - "darkblue": "#00008b", "darkcyan": "#008b8b", "darkgoldenrod": "#b8860b", "darkgray": "#a9a9a9", "darkgreen": "#006400", "darkkhaki": "#bdb76b", "darkmagenta": "#8b008b", "darkolivegreen": "#556b2f", - "darkorange": "#ff8c00", "darkorchid": "#9932cc", "darkred": "#8b0000", "darksalmon": "#e9967a", "darkseagreen": "#8fbc8f", "darkslateblue": "#483d8b", "darkslategray": "#2f4f4f", "darkturquoise": "#00ced1", - "darkviolet": "#9400d3", "deeppink": "#ff1493", "deepskyblue": "#00bfff", "dimgray": "#696969", "dodgerblue": "#1e90ff", - "firebrick": "#b22222", "floralwhite": "#fffaf0", "forestgreen": "#228b22", "fuchsia": "#ff00ff", - "gainsboro": "#dcdcdc", "ghostwhite": "#f8f8ff", "gold": "#ffd700", "goldenrod": "#daa520", "gray": "#808080", "green": "#008000", "greenyellow": "#adff2f", - "honeydew": "#f0fff0", "hotpink": "#ff69b4", - "indianred ": "#cd5c5c", "indigo": "#4b0082", "ivory": "#fffff0", "khaki": "#f0e68c", - "lavender": "#e6e6fa", "lavenderblush": "#fff0f5", "lawngreen": "#7cfc00", "lemonchiffon": "#fffacd", "lightblue": "#add8e6", "lightcoral": "#f08080", "lightcyan": "#e0ffff", "lightgoldenrodyellow": "#fafad2", - "lightgrey": "#d3d3d3", "lightgreen": "#90ee90", "lightpink": "#ffb6c1", "lightsalmon": "#ffa07a", "lightseagreen": "#20b2aa", "lightskyblue": "#87cefa", "lightslategray": "#778899", "lightsteelblue": "#b0c4de", - "lightyellow": "#ffffe0", "lime": "#00ff00", "limegreen": "#32cd32", "linen": "#faf0e6", - "magenta": "#ff00ff", "maroon": "#800000", "mediumaquamarine": "#66cdaa", "mediumblue": "#0000cd", "mediumorchid": "#ba55d3", "mediumpurple": "#9370d8", "mediumseagreen": "#3cb371", "mediumslateblue": "#7b68ee", - "mediumspringgreen": "#00fa9a", "mediumturquoise": "#48d1cc", "mediumvioletred": "#c71585", "midnightblue": "#191970", "mintcream": "#f5fffa", "mistyrose": "#ffe4e1", "moccasin": "#ffe4b5", - "navajowhite": "#ffdead", "navy": "#000080", - "oldlace": "#fdf5e6", "olive": "#808000", "olivedrab": "#6b8e23", "orange": "#ffa500", "orangered": "#ff4500", "orchid": "#da70d6", - "palegoldenrod": "#eee8aa", "palegreen": "#98fb98", "paleturquoise": "#afeeee", "palevioletred": "#d87093", "papayawhip": "#ffefd5", "peachpuff": "#ffdab9", "peru": "#cd853f", "pink": "#ffc0cb", "plum": "#dda0dd", "powderblue": "#b0e0e6", "purple": "#800080", - "rebeccapurple": "#663399", "red": "#ff0000", "rosybrown": "#bc8f8f", "royalblue": "#4169e1", - "saddlebrown": "#8b4513", "salmon": "#fa8072", "sandybrown": "#f4a460", "seagreen": "#2e8b57", "seashell": "#fff5ee", "sienna": "#a0522d", "silver": "#c0c0c0", "skyblue": "#87ceeb", "slateblue": "#6a5acd", "slategray": "#708090", "snow": "#fffafa", "springgreen": "#00ff7f", "steelblue": "#4682b4", - "tan": "#d2b48c", "teal": "#008080", "thistle": "#d8bfd8", "tomato": "#ff6347", "turquoise": "#40e0d0", + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred ": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgrey": "#d3d3d3", + "lightgreen": "#90ee90", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370d8", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#d87093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", "violet": "#ee82ee", - "wheat": "#f5deb3", "white": "#ffffff", "whitesmoke": "#f5f5f5", - "yellow": "#ffff00", "yellowgreen": "#9acd32" -} \ No newline at end of file + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32" +}; \ No newline at end of file diff --git a/src/og/utils/earcut.js b/src/og/utils/earcut.js index 6ac6febe..b03ff58c 100644 --- a/src/og/utils/earcut.js +++ b/src/og/utils/earcut.js @@ -1,10 +1,13 @@ +/* eslint-disable no-unused-vars */ +/* eslint-disable curly */ +/* eslint-disable operator-linebreak */ +/* eslint-disable no-mixed-operators */ /** * @module og/utils/earcut */ 'use sctrict'; - // ISC License // // Copyright (c) 2016, Mapbox diff --git a/src/og/utils/polylabel.js b/src/og/utils/polylabel.js index bb42e9f0..824e92ff 100644 --- a/src/og/utils/polylabel.js +++ b/src/og/utils/polylabel.js @@ -1,3 +1,4 @@ +/* eslint-disable no-mixed-operators */ goog.provide('og.utils.getPolyCenter'); /* diff --git a/src/og/utils/shared.js b/src/og/utils/shared.js index 63a230d8..98611635 100644 --- a/src/og/utils/shared.js +++ b/src/og/utils/shared.js @@ -21,7 +21,7 @@ if (!('createImageBitmap' in window)) { }); img.src = URL.createObjectURL(blob); }); - } + }; }; export function getDefault(param, def) { @@ -190,7 +190,7 @@ export function createColorRGBA(c, def) { if (isString(c)) { return htmlColorToRgba(c); } else if (c instanceof Array) { - return new Vec4.fromVec(c); + return Vec4.fromVec(c); } else if (c instanceof Vec4) { return c.clone(); } @@ -205,7 +205,7 @@ export function createColorRGB(c, def) { if (isString(c)) { return htmlColorToRgb(c); } else if (c instanceof Array) { - return new Vec3.fromVec(c); + return Vec3.fromVec(c); } else if (c instanceof Vec3) { return c.clone(); } @@ -243,7 +243,6 @@ export function createLonLat(l, def) { return new LonLat(); }; - /** * Finds an item in a sorted array. * @param {Array} ar The sorted array to search. @@ -322,8 +321,9 @@ export function getLinesIntersection2v(start1, end1, start2, end2, isSegment) { var seg2_line1_start = a1 * start2.x + b1 * start2.y + d1; var seg2_line1_end = a1 * end2.x + b1 * end2.y + d1; - if (isSegment && (seg1_line2_start * seg1_line2_end > 0 || seg2_line1_start * seg2_line1_end > 0)) + if (isSegment && (seg1_line2_start * seg1_line2_end > 0 || seg2_line1_start * seg2_line1_end > 0)) { return null; + } var u = seg1_line2_start / (seg1_line2_start - seg1_line2_end); @@ -358,8 +358,9 @@ export function getLinesIntersectionLonLat(start1, end1, start2, end2, isSegment var seg2_line1_start = a1 * start2.lon + b1 * start2.lat + d1; var seg2_line1_end = a1 * end2.lon + b1 * end2.lat + d1; - if (isSegment && (seg1_line2_start * seg1_line2_end > 0 || seg2_line1_start * seg2_line1_end > 0)) + if (isSegment && (seg1_line2_start * seg1_line2_end > 0 || seg2_line1_start * seg2_line1_end > 0)) { return null; + } var u = seg1_line2_start / (seg1_line2_start - seg1_line2_end); @@ -436,25 +437,30 @@ export const castType = { }, "boolean": function (str) { - if (str === null) + if (str === null) { return str; + } if (typeof str === 'boolean') { - if (str === true) + if (str === true) { return true; + } return false; } if (typeof str === 'string') { - if (str === "") + if (str === "") { return false; + } str = str.replace(/^\s+|\s+$/g, ''); - if (str.toLowerCase() === 'true' || str.toLowerCase() === 'yes') + if (str.toLowerCase() === 'true' || str.toLowerCase() === 'yes') { return true; + } str = str.replace(/,/g, '.'); str = str.replace(/^\s*\-\s*/g, '-'); } - if (!isNaN(str)) + if (!isNaN(str)) { return parseFloat(str) !== 0; + } return false; } }; @@ -516,29 +522,28 @@ export function base64toBlob(base64Data, contentType) { * @param {Number} skip */ export function throttle(func, limit, skip) { - let lastFunc - let lastRan + let lastFunc; + let lastRan; return function () { - const context = this - const args = arguments + const context = this; + const args = arguments; if (!lastRan) { - func.apply(context, args) - lastRan = Date.now() + func.apply(context, args); + lastRan = Date.now(); } else { if (skip) { clearTimeout(lastFunc); } lastFunc = setTimeout(function () { if ((Date.now() - lastRan) >= limit) { - func.apply(context, args) - lastRan = Date.now() + func.apply(context, args); + lastRan = Date.now(); } - }, limit - (Date.now() - lastRan)) + }, limit - (Date.now() - lastRan)); } - } + }; }; - /** * * y2-----Q12--------------Q22--- diff --git a/src/og/webgl/Framebuffer.js b/src/og/webgl/Framebuffer.js index dad792e1..376d2a8f 100644 --- a/src/og/webgl/Framebuffer.js +++ b/src/og/webgl/Framebuffer.js @@ -202,8 +202,9 @@ Framebuffer.prototype.setSize = function (width, height, forceDestroy) { */ Framebuffer.prototype.isComplete = function () { var gl = this.handler.gl; - if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) + if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) { return true; + } return false; }; @@ -297,9 +298,9 @@ Framebuffer.prototype.openImage = function () { var img = this.getImage(); var dataUrl = img.src; var windowContent = ''; - windowContent += '' + windowContent += ''; windowContent += 'Print'; - windowContent += '' + windowContent += ''; windowContent += ''; windowContent += ''; windowContent += ''; @@ -310,5 +311,4 @@ Framebuffer.prototype.openImage = function () { printWin.focus(); }; - export { Framebuffer }; \ No newline at end of file diff --git a/src/og/webgl/Handler.js b/src/og/webgl/Handler.js index 59da3c8e..3a2f7339 100644 --- a/src/og/webgl/Handler.js +++ b/src/og/webgl/Handler.js @@ -141,7 +141,7 @@ const Handler = function (id, params) { if (params.autoActivate || isEmpty(params.autoActivate)) { this.initialize(); } -} +}; /** * The return value is null if the extension is not supported, or an extension object otherwise. @@ -179,8 +179,7 @@ Handler.getContext = function (canvas, contextAttributes) { break; } } - } - catch (ex) { + } catch (ex) { cons.logErr("exception during the GL context initialization"); } @@ -189,7 +188,7 @@ Handler.getContext = function (canvas, contextAttributes) { } return ctx; -} +}; /** * Sets animation frame function. @@ -198,7 +197,7 @@ Handler.getContext = function (canvas, contextAttributes) { */ Handler.prototype.setFrameCallback = function (callback) { callback && (this._frameCallback = callback); -} +}; /** * Creates NEAREST filter texture. @@ -218,7 +217,7 @@ Handler.prototype.createTexture_n = function (image) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; /** * Creates empty texture. @@ -256,7 +255,7 @@ Handler.prototype.createEmptyTexture2DExt = function ( gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; ///** // * Creates Empty half float texture. @@ -319,7 +318,7 @@ Handler.prototype.createEmptyTexture_n = function (width, height) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; /** * Creates empty LINEAR filtered texture. @@ -340,7 +339,7 @@ Handler.prototype.createEmptyTexture_l = function (width, height) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; /** * Creates LINEAR filter texture. @@ -359,7 +358,7 @@ Handler.prototype.createTexture_l = function (image) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; /** * Creates MIPMAP filter texture. @@ -379,7 +378,7 @@ Handler.prototype.createTexture_mm = function (image) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; /** * Creates ANISOTROPY filter texture. @@ -400,7 +399,7 @@ Handler.prototype.createTexture_a = function (image) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.bindTexture(gl.TEXTURE_2D, null); return texture; -} +}; /** * Creates DEFAULT filter texture, ANISOTROPY is default. @@ -409,8 +408,8 @@ Handler.prototype.createTexture_a = function (image) { * @returns {Object} - WebGL texture object. */ Handler.prototype.createTexture = function (image) { - return this.createTexture_a(image) -} + return this.createTexture_a(image); +}; /** * Creates cube texture. @@ -455,17 +454,17 @@ Handler.prototype.loadCubeMapTexture = function (params) { let face = faces[i][1]; let image = new Image(); image.crossOrigin = ''; - image.onload = function (texture, face, image) { + image.onload = (function (texture, face, image) { return function () { gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); gl.texImage2D(face, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - } - }(texture, face, image); + }; + }(texture, face, image)); image.src = faces[i][0]; } return texture; -} +}; /** * Adds shader program to the handler. @@ -479,13 +478,14 @@ Handler.prototype.addProgram = function (program, notActivate) { var sc = new ProgramController(this, program); this.programs[program.name] = sc; this._initProgramController(sc); - if (notActivate) + if (notActivate) { sc._activated = false; + } } else { console.log("og.webgl.Handler:284 - shader program: '" + program.name + "' is allready exists."); } return program; -} +}; /** * Removes shader program from handler. @@ -494,7 +494,7 @@ Handler.prototype.addProgram = function (program, notActivate) { */ Handler.prototype.removeProgram = function (name) { this.programs[name] && this.programs[name].remove(); -} +}; /** * Adds shader programs to the handler. @@ -505,7 +505,7 @@ Handler.prototype.addPrograms = function (programsArr) { for (var i = 0; i < programsArr.length; i++) { this.addProgram(programsArr[i]); } -} +}; /** * Used in addProgram @@ -524,7 +524,7 @@ Handler.prototype._initProgramController = function (sc) { this.activeProgram._program.use(); } } -} +}; /** * Used in init function. @@ -534,7 +534,7 @@ Handler.prototype._initPrograms = function () { for (var p in this.programs) { this._initProgramController(this.programs[p]); } -} +}; /** * Initialize additional WebGL extensions. @@ -553,7 +553,7 @@ Handler.prototype.initializeExtension = function (extensionStr, showLog) { } } return this.extensions && this.extensions[extensionStr]; -} +}; /** * Main function that initialize handler. @@ -588,13 +588,14 @@ Handler.prototype.initialize = function () { this.initializeExtension(this._params.extensions[i], true); } - if (!this.extensions.EXT_texture_filter_anisotropic) + if (!this.extensions.EXT_texture_filter_anisotropic) { this.createTexture = this.createTexture_mm; + } /** Initilalize shaders and rendering parameters*/ this._initPrograms(); this._setDefaults(); -} +}; /** * Sets default gl render parameters. Used in init function. @@ -611,7 +612,7 @@ Handler.prototype._setDefaults = function () { this.createDefaultTexture({ color: "rgba(0,0,0,0.0)" }, function (t) { that.transparentTexture = t; }); -} +}; /** * Activate depth test. @@ -619,7 +620,7 @@ Handler.prototype._setDefaults = function () { */ Handler.prototype.activateDepthTest = function () { this.gl.enable(this.gl.DEPTH_TEST); -} +}; /** * Deactivate depth test. @@ -627,7 +628,7 @@ Handler.prototype.activateDepthTest = function () { */ Handler.prototype.deactivateDepthTest = function () { this.gl.disable(this.gl.DEPTH_TEST); -} +}; /** * Activate face culling. @@ -635,7 +636,7 @@ Handler.prototype.deactivateDepthTest = function () { */ Handler.prototype.activateFaceCulling = function () { this.gl.enable(this.gl.CULL_FACE); -} +}; /** * Deactivate face cullting. @@ -643,7 +644,7 @@ Handler.prototype.activateFaceCulling = function () { */ Handler.prototype.deactivateFaceCulling = function () { this.gl.disable(this.gl.CULL_FACE); -} +}; /** * Activate blending. @@ -651,7 +652,7 @@ Handler.prototype.deactivateFaceCulling = function () { */ Handler.prototype.activateBlending = function () { this.gl.enable(this.gl.BLEND); -} +}; /** * Deactivate blending. @@ -659,7 +660,7 @@ Handler.prototype.activateBlending = function () { */ Handler.prototype.deactivateBlending = function () { this.gl.disable(this.gl.BLEND); -} +}; /** * Creates ARRAY buffer. @@ -681,7 +682,7 @@ Handler.prototype.createArrayBuffer = function (array, itemSize, numItems, usage buffer.itemSize = itemSize; buffer.numItems = numItems; return buffer; -} +}; /** * Creates ELEMENT ARRAY buffer. @@ -700,7 +701,7 @@ Handler.prototype.createElementArrayBuffer = function (array, itemSize, numItems buffer.itemSize = itemSize; buffer.numItems = numItems || array.length; return buffer; -} +}; /** * Sets handler canvas size. @@ -726,7 +727,7 @@ Handler.prototype.setSize = function (w, h) { this.gl && this.gl.viewport(0, 0, w, h); this.onCanvasResize && this.onCanvasResize(this.canvas); -} +}; /** * Returns context screen width. @@ -744,7 +745,7 @@ Handler.prototype.getWidth = function () { */ Handler.prototype.getHeight = function () { return this.canvas.height; -} +}; /** * Returns canvas aspect ratio. @@ -753,7 +754,7 @@ Handler.prototype.getHeight = function () { */ Handler.prototype.getClientAspect = function () { return this.canvas.clientWidth / this.canvas.clientHeight; -} +}; /** * Returns screen center coordinates. @@ -763,7 +764,7 @@ Handler.prototype.getClientAspect = function () { Handler.prototype.getCenter = function () { var c = this.canvas; return new Vec2(Math.round(c.width * 0.5), Math.round(c.height * 0.5)); -} +}; /** * Draw single frame. @@ -792,7 +793,7 @@ Handler.prototype.drawFrame = function () { /** Draw frame */ this._frameCallback(); -} +}; /** * Clearing gl frame. @@ -802,7 +803,7 @@ Handler.prototype.clearFrame = function () { var gl = this.gl; this.gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); -} +}; /** * Starts animation loop. @@ -815,14 +816,14 @@ Handler.prototype.start = function () { this.defaultClock.setDate(d); this._animationFrameCallback(); } -} +}; Handler.prototype.stop = function () { if (this._requestAnimationFrameId) { window.cancelAnimationFrame(this._requestAnimationFrameId); this._requestAnimationFrameId = null; } -} +}; /** * Make animation. @@ -833,7 +834,7 @@ Handler.prototype._animationFrameCallback = function () { this.drawFrame(); this._animationFrameCallback(); }); -} +}; /** * Creates default texture object @@ -868,7 +869,7 @@ Handler.prototype.createDefaultTexture = function (params, success) { texture.default = true; success(texture); } -} +}; /** * @public @@ -934,20 +935,20 @@ Handler.prototype.destroy = function () { this.gl = null; this._initialized = false; -} +}; Handler.prototype.addClock = function (clock) { if (!clock.__handler) { clock.__handler = this; this._clocks.push(clock); } -} +}; Handler.prototype.addClocks = function (clockArr) { for (var i = 0; i < clockArr.length; i++) { this.addClock(clockArr[i]); } -} +}; Handler.prototype.removeClock = function (clock) { if (clock.__handler) { @@ -961,7 +962,6 @@ Handler.prototype.removeClock = function (clock) { } } } -} - -export { Handler }; +}; +export { Handler }; \ No newline at end of file diff --git a/src/og/webgl/Multisample.js b/src/og/webgl/Multisample.js index 90c4b72c..54cba20a 100644 --- a/src/og/webgl/Multisample.js +++ b/src/og/webgl/Multisample.js @@ -192,8 +192,9 @@ Multisample.prototype.setSize = function (width, height, forceDestroy) { */ Multisample.prototype.isComplete = function () { var gl = this.handler.gl; - if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) + if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) { return true; + } return false; }; diff --git a/src/og/webgl/Program.js b/src/og/webgl/Program.js index 89841fe5..1ace21b0 100644 --- a/src/og/webgl/Program.js +++ b/src/og/webgl/Program.js @@ -272,9 +272,9 @@ class Program { //Maybe, it will be better to remove enableArray option... this._attributes[a].enableArray = (this._attributes[a].enableArray != undefined ? this._attributes[a].enableArray : true); - if (this._attributes[a].enableArray) + if (this._attributes[a].enableArray) { this._attributes[a]._callback = Program.bindBuffer; - else { + } else { if (typeof (this._attributes[a].type) === "string") { this._attributes[a]._callback = callbacks.a[typeStr[this._attributes[a].type.trim().toLowerCase()]]; } else { diff --git a/src/og/webgl/ProgramController.js b/src/og/webgl/ProgramController.js index ac303bd1..a3b79747 100644 --- a/src/og/webgl/ProgramController.js +++ b/src/og/webgl/ProgramController.js @@ -32,7 +32,6 @@ const ProgramController = function (handler, program) { this._activated = false; }; - /** * Lazy create program call. * @public diff --git a/src/og/webgl/types.js b/src/og/webgl/types.js index 5463c307..957abbcf 100644 --- a/src/og/webgl/types.js +++ b/src/og/webgl/types.js @@ -5,21 +5,20 @@ 'use strict'; let _declarations = [ - "FLOAT", "DOUBLE", "BOOL", "INT", "UINT", + "FLOAT", "DOUBLE", "BOOL", "INT", "UINT", "VEC2", "VEC3", "VEC4", "DVEC2", - "DVEC3", "DVEC4", - "BVEC2", "BVEC3", "BVEC4", - "IVEC2", "IVEC3", "IVEC4", - "UVEC2", "UVEC3", "UVEC4", - "MAT2", "DMAT2", "MAT3", "DMAT3", "MAT4", "DMAT4", - "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X4", "MAT4X2", + "DVEC3", "DVEC4", + "BVEC2", "BVEC3", "BVEC4", + "IVEC2", "IVEC3", "IVEC4", + "UVEC2", "UVEC3", "UVEC4", + "MAT2", "DMAT2", "MAT3", "DMAT3", "MAT4", "DMAT4", + "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X4", "MAT4X2", "MAT4X3", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X4", - "DMAT4X2", "DMAT4X3", + "DMAT4X2", "DMAT4X3", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", - "SAMPLER2DXX", + "SAMPLER2DXX", "INTXX", "FLOATXX"]; - export const types = {}; for (let i = 0; i < _declarations.length; i++) {