overte-HifiExperiments/scripts/system/fingerPaint/content/brushes/dynamicBrushes/dynamicTranslationBrush.js
Artur Gomes 5c40a6810e Add drawing in Desktop mode.
Remove dynamic rotation and translation brushes since the movement would
be unsynced after a while, resulting in a poor user experience.
Fix restoring last used settings taking to long, which caused the user
to see the values to change after the tablet application was open.
Fix using a different brush after restarting the app, if drawing before
the brush was reset.
2017-08-16 18:28:55 +01:00

45 lines
No EOL
2 KiB
JavaScript

//Superclass
Script.include("dynamicBrush.js");
function DynamicTranslationBrushClass(settings) {
//dynamic brush vars
DynamicBrush.call(this);
//print("Starting dynamic Translation brush");
this.startingPosition = null;
this.translation = 0;
this.activeAxis = settings.axis;
}
DynamicTranslationBrushClass.prototype.constructor = DynamicTranslationBrushClass;
DynamicTranslationBrushClass.prototype.parent = DynamicBrush.prototype;
DynamicTranslationBrushClass.prototype.DYNAMIC_BRUSH_TIME = 10; //inteval in milliseconds to update the brush width;
DynamicTranslationBrushClass.prototype.DYNAMIC_BRUSH_INCREMENT = 0.005; //linear increment of brush size;
DynamicTranslationBrushClass.prototype.MAX_TRANSLATION = 2;
DynamicTranslationBrushClass.prototype.NAME = "DynamicTranslationBrush"; //linear increment of brush size;
DynamicTranslationBrushClass.prototype.onUpdate = function(deltaSeconds, entityID) {
//print("translation this: " + JSON.stringify(this) + " : " + JSON.stringify(this.activeAxis));
var currentPosition = Entities.getEntityProperties(entityID).position;
//print("currentPosition " + JSON.stringify(currentPosition));
if (this.startingPosition == null) {
this.startingPosition = currentPosition;
}
this.translation = this.translation + ((deltaSeconds * this.DYNAMIC_BRUSH_INCREMENT)/this.DYNAMIC_BRUSH_TIME);
var translationVec = Vec3.multiply(this.translation, this.activeAxis);
var nextPosition = {
x: this.startingPosition.x + translationVec.x,
y: this.startingPosition.y + translationVec.y,
z: this.startingPosition.z + translationVec.z
};
if (Vec3.distance(nextPosition, this.startingPosition) > this.MAX_TRANSLATION) {
this.translation = 0;
nextPosition = this.startingPosition;
}
Entities.editEntity(entityID, {position : nextPosition});
this.parent.updateUserData(entityID, this);
}
DynamicTranslationBrush = DynamicTranslationBrushClass;