-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfolderPoint.js
More file actions
130 lines (95 loc) · 4.08 KB
/
folderPoint.js
File metadata and controls
130 lines (95 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/**
* FolderPoint
*
* GUI for changing point settings.
*
* @author [Andrej Hristoliubov]{@link https://github.com/anhr}
*
* @copyright 2011 Data Arts Team, Google Creative Lab
*
* @license under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*/
import three from './three.js'
import PositionController from './PositionController.js';
/**
* @callback setSize
* @description Set size of the point
* @param {number} value new size.
* */
/**
* GUI for changing point settings.
* @param {Object} point point options.
* @param {number} point.size point size.
* @param {setSize} setSize Set size of the point
* @param {Options} options See the <b>options</b> parameter of the <a href="../../myThree/jsdoc/module-MyThree-MyThree.html" target="_blank">MyThree</a> class.
* @param {Object} [settings={}] the following settings are available
* @param {GUI} [settings.folder] parent folder. See [GUI]{@link https://github.com/anhr/dat.gui}.
* @param {Object} [settings.defaultPoint={}] default point options. Restore point options if user has clicked "Default" button
* @param {number} [settings.defaultPoint.size=point.size] point size.
* @param {number} [settings.PCOptions={}] See options parameter of the <a href="../../jsdoc/PositionController/PositionController.html" target="_blank">PositionController</a>
* @param {Object} [settings.PCOptions.min=0.01] Minimal offset.
* @param {Object} [settings.PCOptions.max=1] Maximal offset.
* @param {Object} [settings.PCOptions.step=0.01] step of offset.
* @param {Object} [settings.PCOptions.settings={}] time settings.
* @param {Object} [settings.PCOptions.settings.offset=1]
*/
class FolderPoint {
constructor( point, setSize, options, settings = {} ) {
const dat = three.dat;
if ( !options.boOptions ) {
console.error( 'FolderPoint: call options = new Options( options ) first' );
return;
}
const gui = settings.folder || options.dat.gui;
if ( !gui || options.dat.folderPoint === false )
return;
options.dat.folderPoint = this;
//Localization
const lang = {
pointSettings: 'Point',
size: 'Size',
sizeTitle: 'Size of the point with "ShaderMaterial" material',
defaultButton: 'Default',
defaultPointTitle: 'Restore point.',
};
switch ( options.getLanguageCode() ) {
case 'ru'://Russian language
lang.pointSettings = 'Точка';
lang.size = 'Размер';
lang.sizeTitle = 'Размер точки с материалом типа "ShaderMaterial"';
lang.defaultButton = 'Восстановить';
lang.defaultPointTitle = 'Восстановить точку';
break;
}
const defaultPoint = settings.defaultPoint || {};
if ( defaultPoint.size === undefined ) defaultPoint.size = point.size;
const PCOptions = settings.PCOptions || {};
if ( PCOptions.min === undefined ) PCOptions.min = 0.01;
if ( PCOptions.max === undefined ) PCOptions.max = 1;
PCOptions.settings = PCOptions.settings || {};
if ( PCOptions.settings.offset === undefined ) PCOptions.settings.offset = 1;//0.1;
if ( PCOptions.step === undefined ) PCOptions.step = 0.01;
PCOptions.getLanguageCode = PCOptions.getLanguageCode || settings.getLanguageCode || options.getLanguageCode;
var fPoint = gui.addFolder( lang.pointSettings ),
fSize = fPoint.addFolder( lang.size );
dat.folderNameAndTitle( fSize, lang.size, lang.sizeTitle );
this.display = function ( display ) { fPoint.domElement.style.display = display; }
fSize.add( new PositionController( function ( shift ) { setSize( point.size + shift ); }, PCOptions ) );
//size
this.size = dat.controllerZeroStep( fSize, point, 'size', function ( value ) {
setSize( value );
} );
dat.controllerNameAndTitle( this.size, lang.size, lang.sizeTitle );
//point default button
dat.controllerNameAndTitle( fPoint.add( {
defaultF: function ( value ) {
setSize( defaultPoint.size );
},
}, 'defaultF' ), lang.defaultButton, lang.defaultPointTitle );
}
}
export default FolderPoint;