mirror of
https://github.com/dataarts/dat.gui.git
synced 2024-12-12 04:08:27 +00:00
This is getting really close.
This commit is contained in:
parent
e17d9be534
commit
634ddc0736
@ -28,10 +28,12 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.controller.addChangeListener(function(newVal) {
|
this.controller.addChangeListener(function(newVal) {
|
||||||
|
|
||||||
|
|
||||||
if (!_this.playing) {
|
if (!_this.playing) {
|
||||||
if (_this.timer.activePoint == null) {
|
if (_this.timer.activePoint == null) {
|
||||||
console.log(_this, _this.timer.playhead, newVal);
|
|
||||||
_this.timer.activePoint = new GUI.ScrubberPoint(_this, _this.timer.playhead, newVal);
|
_this.timer.activePoint = new GUI.ScrubberPoint(_this, _this.timer.playhead, newVal);
|
||||||
|
_this.add(_this.timer.activePoint);
|
||||||
_this.render();
|
_this.render();
|
||||||
} else {
|
} else {
|
||||||
_this.timer.activePoint.value = newVal;
|
_this.timer.activePoint.value = newVal;
|
||||||
@ -51,6 +53,8 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
var position;
|
var position;
|
||||||
var height;
|
var height;
|
||||||
|
|
||||||
|
var mx, pmx;
|
||||||
|
|
||||||
this.__defineGetter__("width", function() {
|
this.__defineGetter__("width", function() {
|
||||||
return width;
|
return width;
|
||||||
});
|
});
|
||||||
@ -61,7 +65,6 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
|
|
||||||
controller.domElement.insertBefore(this.domElement, controller.propertyNameElement.nextSibling);
|
controller.domElement.insertBefore(this.domElement, controller.propertyNameElement.nextSibling);
|
||||||
|
|
||||||
|
|
||||||
this.render = function() {
|
this.render = function() {
|
||||||
|
|
||||||
// TODO: if visible ...
|
// TODO: if visible ...
|
||||||
@ -100,7 +103,30 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
|
|
||||||
var scrub = function(e) {
|
var scrub = function(e) {
|
||||||
var t = GUI.map(e.pageX, position.left, position.left+width, _this.timer.windowMin, _this.timer.windowMin+_this.timer.windowWidth);
|
var t = GUI.map(e.pageX, position.left, position.left+width, _this.timer.windowMin, _this.timer.windowMin+_this.timer.windowWidth);
|
||||||
|
|
||||||
|
|
||||||
_this.timer.playhead = t;
|
_this.timer.playhead = t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (t < _this.timer.windowMin + _this.timer.windowWidth/5) {
|
||||||
|
_this.timer.windowMin = _this.timer.playhead -_this.timer.windowWidth/5;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t > _this.timer.windowMin + _this.timer.windowWidth - _this.timer.windowWidth/5) {
|
||||||
|
_this.timer.windowMin = _this.timer.playhead +_this.timer.windowWidth/5-_this.timer.windowWidth;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var dragActive = function(e) {
|
||||||
|
|
||||||
|
mx = e.pageX;
|
||||||
|
var t = GUI.map(mx - pmx, 0, width, 0, _this.timer.windowWidth);
|
||||||
|
_this.timer.activePoint.time += t;
|
||||||
|
pmx = mx;
|
||||||
|
_this.sort();
|
||||||
|
_this.timer.playhead += t;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.addEventListener('mousedown', function(e) {
|
canvas.addEventListener('mousedown', function(e) {
|
||||||
@ -108,10 +134,13 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
|
|
||||||
_this.timer.activePoint = _this.timer.hoverPoint;
|
_this.timer.activePoint = _this.timer.hoverPoint;
|
||||||
_this.timer.playhead = _this.timer.activePoint.time;
|
_this.timer.playhead = _this.timer.activePoint.time;
|
||||||
|
pmx = mx = e.pageX;
|
||||||
|
document.addEventListener("mousemove", dragActive, false);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
_this.timer.activePoint = null;
|
_this.timer.activePoint = null;
|
||||||
|
_this.timer.hoverPoint = null;
|
||||||
scrub(e);
|
scrub(e);
|
||||||
document.body.style.cursor = "text";
|
document.body.style.cursor = "text";
|
||||||
document.addEventListener('mousemove', scrub, false);
|
document.addEventListener('mousemove', scrub, false);
|
||||||
@ -134,6 +163,7 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
|
|
||||||
document.addEventListener('mouseup', function() {
|
document.addEventListener('mouseup', function() {
|
||||||
document.body.style.cursor = "auto";
|
document.body.style.cursor = "auto";
|
||||||
|
document.removeEventListener("mousemove", dragActive, false);
|
||||||
document.removeEventListener('mousemove', scrub, false);
|
document.removeEventListener('mousemove', scrub, false);
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
@ -161,20 +191,21 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (closestToLeft == null || closestToLeft.time > curTime) return;
|
if (closestToLeft != null && closestToLeft.time <= curTime) {
|
||||||
|
|
||||||
var n = closestToLeft.next;
|
|
||||||
if (n != null) {
|
|
||||||
|
|
||||||
// Interpolate.
|
var n = closestToLeft.next;
|
||||||
var t = GUI.map(curTime, closestToLeft.time, n.time, 0, 1);
|
if (n != null) {
|
||||||
t = closestToLeft.tween(t);
|
|
||||||
var val = GUI.map(t, 0, 1, closestToLeft.value, n.value);
|
// Interpolate.
|
||||||
_this.controller.setValue(val);
|
var t = GUI.map(curTime, closestToLeft.time, n.time, 0, 1);
|
||||||
|
t = closestToLeft.tween(t);
|
||||||
|
var val = GUI.map(t, 0, 1, closestToLeft.value, n.value);
|
||||||
|
_this.controller.setValue(val);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
for (var i = 0; i < _this.points.length; i++) {
|
for (var i = 0; i < _this.points.length; i++) {
|
||||||
@ -221,8 +252,9 @@ GUI.Scrubber = function(controller, timer) {
|
|||||||
|
|
||||||
GUI.ScrubberPoint = function(scrubber, time, value) {
|
GUI.ScrubberPoint = function(scrubber, time, value) {
|
||||||
|
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
|
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
var g = scrubber.g;
|
var g = scrubber.g;
|
||||||
var timer = scrubber.timer;
|
var timer = scrubber.timer;
|
||||||
@ -243,6 +275,11 @@ GUI.ScrubberPoint = function(scrubber, time, value) {
|
|||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.remove = function() {
|
||||||
|
scrubber.points.splice(scrubber.points.indexOf(this), 1);
|
||||||
|
scrubber.render();
|
||||||
|
};
|
||||||
|
|
||||||
this.isHovering = function(xx) {
|
this.isHovering = function(xx) {
|
||||||
return xx >= x-rectSize/2 && xx <= x+rectSize/2;
|
return xx >= x-rectSize/2 && xx <= x+rectSize/2;
|
||||||
};
|
};
|
||||||
@ -264,6 +301,9 @@ GUI.ScrubberPoint = function(scrubber, time, value) {
|
|||||||
this.__defineGetter__("time", function() {
|
this.__defineGetter__("time", function() {
|
||||||
return time;
|
return time;
|
||||||
});
|
});
|
||||||
|
this.__defineSetter__("time", function(s) {
|
||||||
|
time = s;
|
||||||
|
});
|
||||||
|
|
||||||
this.render = function() {
|
this.render = function() {
|
||||||
|
|
||||||
@ -271,10 +311,20 @@ GUI.ScrubberPoint = function(scrubber, time, value) {
|
|||||||
|
|
||||||
if (x >= 0 && x <= 1) {
|
if (x >= 0 && x <= 1) {
|
||||||
x = Math.round(GUI.map(x, 0, 1, 0, scrubber.width));
|
x = Math.round(GUI.map(x, 0, 1, 0, scrubber.width));
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
y = scrubber.height/2;
|
y = scrubber.height/2;
|
||||||
|
|
||||||
|
if (scrubber.timer.activePoint == this) {
|
||||||
|
g.fillStyle = "#fff"; //
|
||||||
|
} else if (scrubber.timer.hoverPoint == this) {
|
||||||
|
g.fillStyle = "#ddd";
|
||||||
|
} else {
|
||||||
|
g.fillStyle = "#ccc";
|
||||||
|
}
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
|
||||||
case "number":
|
case "number":
|
||||||
@ -297,12 +347,11 @@ GUI.ScrubberPoint = function(scrubber, time, value) {
|
|||||||
g.lineTo(x, y);
|
g.lineTo(x, y);
|
||||||
g.stroke();
|
g.stroke();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g.translate(x, y);
|
g.translate(x, y);
|
||||||
g.rotate(Math.PI/4);
|
g.rotate(Math.PI/4);
|
||||||
g.fillStyle = c1;
|
// g.fillStyle = c1;
|
||||||
g.fillRect(-rectSize/2, -rectSize/2, rectSize, rectSize);
|
g.fillRect(-rectSize/2, -rectSize/2, rectSize, rectSize);
|
||||||
g.restore();
|
g.restore();
|
||||||
|
|
||||||
@ -311,13 +360,6 @@ GUI.ScrubberPoint = function(scrubber, time, value) {
|
|||||||
default:
|
default:
|
||||||
g.save();
|
g.save();
|
||||||
g.translate(x-barSize/2, 0);
|
g.translate(x-barSize/2, 0);
|
||||||
if (scrubber.timer.activePoint == this) {
|
|
||||||
g.fillStyle = "red"; //
|
|
||||||
} else if (scrubber.timer.hoverPoint == this) {
|
|
||||||
g.fillStyle = "green";
|
|
||||||
} else {
|
|
||||||
g.fillStyle = "blue";
|
|
||||||
}
|
|
||||||
//g.fillStyle = c1;
|
//g.fillStyle = c1;
|
||||||
g.fillRect(0, 0, barSize/2, scrubber.height-1);
|
g.fillRect(0, 0, barSize/2, scrubber.height-1);
|
||||||
//g.fillStyle = c2;
|
//g.fillStyle = c2;
|
||||||
|
@ -17,7 +17,6 @@ GUI.Slider = function(numberController, min, max, step, initValue) {
|
|||||||
|
|
||||||
this.domElement.appendChild(this.fg);
|
this.domElement.appendChild(this.fg);
|
||||||
|
|
||||||
|
|
||||||
this.__defineSetter__('value', function(e) {
|
this.__defineSetter__('value', function(e) {
|
||||||
var pct = GUI.map(e, min, max, 0, 100);
|
var pct = GUI.map(e, min, max, 0, 100);
|
||||||
this.fg.style.width = pct+"%";
|
this.fg.style.width = pct+"%";
|
||||||
@ -39,7 +38,6 @@ GUI.Slider = function(numberController, min, max, step, initValue) {
|
|||||||
onDrag(e);
|
onDrag(e);
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
|
||||||
document.addEventListener('mouseup', function(e) {
|
document.addEventListener('mouseup', function(e) {
|
||||||
_this.domElement.setAttribute('class', 'guidat-slider-bg');
|
_this.domElement.setAttribute('class', 'guidat-slider-bg');
|
||||||
_this.fg.setAttribute('class', 'guidat-slider-fg');
|
_this.fg.setAttribute('class', 'guidat-slider-fg');
|
||||||
@ -50,4 +48,4 @@ GUI.Slider = function(numberController, min, max, step, initValue) {
|
|||||||
|
|
||||||
this.value = initValue;
|
this.value = initValue;
|
||||||
|
|
||||||
}
|
}
|
@ -29,6 +29,24 @@ GUI.Timer = function(gui) {
|
|||||||
return d.getTime();
|
return d.getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.addEventListener("keyup", function(e) {
|
||||||
|
switch (e.keyCode) {
|
||||||
|
case 32:
|
||||||
|
_this.playPause();
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
_this.stop();
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
if (_this.activePoint != null) {
|
||||||
|
_this.activePoint.remove();
|
||||||
|
_this.activePoint = null;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
console.log(e.keyCode);
|
||||||
|
}, false);
|
||||||
|
|
||||||
this.__defineGetter__("windowMin", function() {
|
this.__defineGetter__("windowMin", function() {
|
||||||
return windowMin;
|
return windowMin;
|
||||||
});
|
});
|
||||||
@ -59,6 +77,9 @@ GUI.Timer = function(gui) {
|
|||||||
this.__defineSetter__("playhead", function(t) {
|
this.__defineSetter__("playhead", function(t) {
|
||||||
lastPlayhead = playhead;
|
lastPlayhead = playhead;
|
||||||
playhead = t;
|
playhead = t;
|
||||||
|
if (playing) {
|
||||||
|
windowMin += ((playhead-windowWidth/2)-windowMin)*0.3;
|
||||||
|
}
|
||||||
for (var i = 0; i < playListeners.length; i++) {
|
for (var i = 0; i < playListeners.length; i++) {
|
||||||
playListeners[i].call(this, playhead, lastPlayhead);
|
playListeners[i].call(this, playhead, lastPlayhead);
|
||||||
}
|
}
|
||||||
@ -96,10 +117,10 @@ GUI.Timer = function(gui) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this.stop = function() {
|
this.stop = function() {
|
||||||
this.pause();
|
this.pause();
|
||||||
this.playhead = 0;
|
this.playhead = 0;
|
||||||
|
this.windowMin = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addPlayListener = function(fnc) {
|
this.addPlayListener = function(fnc) {
|
||||||
|
@ -49,9 +49,9 @@
|
|||||||
.at(3000, "shit");
|
.at(3000, "shit");
|
||||||
|
|
||||||
// Sliders with min and max
|
// Sliders with min and max
|
||||||
// gui.add(fizzyText, "maxSize", 0.5, 7);
|
gui.add(fizzyText, "maxSize", 0.5, 7);
|
||||||
//gui.add(fizzyText, "growthSpeed", 0.01, 1);
|
gui.add(fizzyText, "growthSpeed", 0.01, 1);
|
||||||
//gui.add(fizzyText, "speed", 0.1, 2);
|
gui.add(fizzyText, "speed", 0.1, 2);
|
||||||
|
|
||||||
// Sliders with min, max and increment.
|
// Sliders with min, max and increment.
|
||||||
gui.add(fizzyText, "noiseStrength", 10, 100, 5).
|
gui.add(fizzyText, "noiseStrength", 10, 100, 5).
|
||||||
|
Loading…
Reference in New Issue
Block a user