overte/scripts/system/fingerPaint/content/animatedBrushes/animatedTranslationBrush.js
2017-08-16 18:35:21 +01:00

41 lines
No EOL
1.7 KiB
JavaScript

//Superclass
Script.include("animatedBrush.js");
function AnimatedTranslationBrushClass(settings, entityID) {
AnimatedBrush.call(this);
this.startingPosition = null;
this.translation = 0;
this.activeAxis = settings.axis;
}
AnimatedTranslationBrushClass.prototype.constructor = AnimatedTranslationBrushClass;
AnimatedTranslationBrushClass.prototype.parent = AnimatedBrush.prototype;
AnimatedTranslationBrushClass.prototype.ANIMATED_BRUSH_TIME = 10; //inteval in milliseconds to update the brush width;
AnimatedTranslationBrushClass.prototype.ANIMATED_BRUSH_INCREMENT = 0.005; //linear increment of brush size;
AnimatedTranslationBrushClass.prototype.MAX_TRANSLATION = 2;
AnimatedTranslationBrushClass.prototype.NAME = "animatedTranslationBrush"; //linear increment of brush size;
AnimatedTranslationBrushClass.prototype.onUpdate = function(deltaSeconds, entityID) {
var currentPosition = Entities.getEntityProperties(entityID).position;
if (this.startingPosition == null) {
this.startingPosition = currentPosition;
}
this.translation = this.translation + ((deltaSeconds * this.ANIMATED_BRUSH_INCREMENT)/this.ANIMATED_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);
}
AnimatedTranslationBrush = AnimatedTranslationBrushClass;