function Brush(rune) { Module.call(this,rune); this.parameters = []; this.settings = {color:"#000","size":2}; this.pointers = [new Pointer(new Position("0,0"))]; this.add_method(new Method("add_pointer",["Position"])); this.add_pointer = function(params, preview = false) { if(preview){ return; } var pointer = new Pointer(); pointer.offset = params.position() ? params.position() : new Position("0,0"); this.pointers.push(pointer); ronin.terminal.log(new Log(this,"Added pointer at: "+pointer.offset.render())); return 1, "ok"; } this.size_up = function() { this.settings["size"] += 1; } this.size_down = function() { this.settings["size"] -= this.settings["size"] > 1 ? 1 : 0; } // Eraser this.erase = function() { if(!this.position_prev){this.position_prev = ronin.cursor.position; } var position = ronin.cursor.position; ronin.frame.context().beginPath(); ronin.frame.context().globalCompositeOperation="destination-out"; ronin.frame.context().moveTo(this.position_prev.x,this.position_prev.y); ronin.frame.context().lineTo(position.x,position.y); ronin.frame.context().lineCap="round"; ronin.frame.context().lineWidth = this.settings["size"] * 5; ronin.frame.context().strokeStyle = new Color("#ff0000").rgba(); ronin.frame.context().stroke(); ronin.frame.context().closePath(); this.position_prev = position; } // Mouse this.mouse_pointer = function(position) { return ronin.cursor.draw_pointer_circle(position,this.settings["size"]); } this.mouse_mode = function() { if(keyboard.shift_held == true){ return "Eraser "+this.settings["size"]; } else{ return "Brush "+this.settings["size"]; } } this.mouse_down = function(position) { if(position.is_outside()){ return; } if(keyboard.shift_held == true){ this.erase(); } else{ for (i = 0; i < ronin.brush.pointers.length; i++) { ronin.brush.pointers[i].start(); } } } this.mouse_move = function(position,rect) { if(!this.mouse_held){ return; } if(keyboard.shift_held == true){ this.erase(); } else{ for (i = 0; i < ronin.brush.pointers.length; i++) { ronin.brush.pointers[i].draw(); } } } this.mouse_up = function(position,rect) { for (i = 0; i < ronin.brush.pointers.length; i++) { ronin.brush.pointers[i].stop(); } } }