Advertisement
Guest User

Untitled

a guest
Oct 24th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. vector.cross = vector.cross or function(a, b)
  2. return {
  3. x = a.y * b.z - a.z * b.y,
  4. y = a.z * b.x - a.x * b.z,
  5. z = a.x * b.y - a.y * b.x
  6. }
  7. end
  8.  
  9. local function project(player)
  10. local camera_z = player:get_look_dir()
  11. local camera_x = minetest.yaw_to_dir(player:get_look_horizontal() + math.pi / 2)
  12. local camera_y = vector.cross(camera_x, camera_z)
  13. for theta = 0, math.pi * 2 - 0.1, 0.1 do
  14. local cv = {x = math.cos(theta) * 2, y = math.sin(theta) * 2, z = 2}
  15. local wv = player:get_pos()
  16. wv.y = wv.y + player:get_properties().eye_height
  17. wv = vector.add(wv, vector.multiply(camera_x, cv.x))
  18. wv = vector.add(wv, vector.multiply(camera_y, cv.y))
  19. wv = vector.add(wv, vector.multiply(camera_z, cv.z))
  20. minetest.add_particle({
  21. pos = wv,
  22. size = 0.25,
  23. texture = "solid_generated_color.png"
  24. })
  25. end
  26. end
  27.  
  28. local function tick()
  29. for _, v in pairs(minetest.get_connected_players()) do
  30. project(v)
  31. end
  32. minetest.after(0.25, tick)
  33. end
  34. tick()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement