38 lines
1.2 KiB
Lua
38 lines
1.2 KiB
Lua
-- This file is part of Noggit3, licensed under GNU General Public License (version 3).
|
|
local painter_brush = brush("Image Painter")
|
|
local image_path = painter_brush:add_string_tag("Filename", "")
|
|
|
|
function painter_brush:on_left_click(evt)
|
|
local img = load_png(
|
|
image_path:get()
|
|
)
|
|
local origin = evt:pos()
|
|
local width = img:width()
|
|
local height = img:height()
|
|
local half_width = width / 2
|
|
local half_height = height / 2
|
|
local sel = select_origin(origin, width, height)
|
|
|
|
for i,vert in pairs(sel:verts()) do
|
|
local angle = cam_yaw() - 90
|
|
local pos = rotate_2d(
|
|
vert:get_pos(),
|
|
origin,
|
|
angle
|
|
)
|
|
local local_x = round((pos.x - origin.x) + half_width)
|
|
local local_z = round((pos.z - origin.z) + half_height)
|
|
|
|
if local_x >= 0
|
|
and local_x < width
|
|
and local_z >= 0
|
|
and local_z < height
|
|
and img:get_alpha(local_x,local_z)>0.5 then
|
|
local red = img:get_red(local_x, local_z)
|
|
local green = img:get_green(local_x, local_z)
|
|
local blue = img:get_blue(local_x, local_z)
|
|
vert:set_color(red, green, blue)
|
|
end
|
|
end
|
|
sel:apply()
|
|
end |