__init__.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from .print_tree import print_tree
  2. from .api import *
  3. from .gfx import Layer
  4. from . import settings
  5. class App(EventLoop):
  6. def __init__(self):
  7. super().__init__()
  8. w = get_property("/window", "width")
  9. h = get_property("/window", "height")
  10. self.chatbox_layer = Layer("chatbox_layer")
  11. self.chatbox_layer.resize(w, h)
  12. self.chatbox_layer.add_obj("outline")
  13. def resize_event(self, w, h):
  14. self.chatbox_layer.resize(w, h)
  15. resize_box()
  16. def mouse_click(self, x, y):
  17. print(f"mouse click ({x}, {y})")
  18. def mouse_wheel(self, y):
  19. settings.ui_scale *= 1 + y/100
  20. print(settings.ui_scale)
  21. def key_down(self, keycode, keymods, repeat):
  22. #print(f"key_down: '{keycode}'")
  23. if keymods.ctrl and keycode == "=":
  24. settings.ui_scale *= 1.01
  25. print(settings.ui_scale)
  26. elif keymods.ctrl and keycode == "-":
  27. settings.ui_scale *= 0.99
  28. print(settings.ui_scale)
  29. def draw_box():
  30. from pydrk import SceneNodeType, PropertyType
  31. mesh_id = api.add_node("box", SceneNodeType.RENDER_MESH)
  32. api.add_property(mesh_id, "verts", PropertyType.BUFFER)
  33. api.add_property(mesh_id, "faces", PropertyType.BUFFER)
  34. link_node(mesh_id, "/window/chatbox_layer/outline")
  35. mesh_id = api.add_node("inner_box", SceneNodeType.RENDER_MESH)
  36. api.add_property(mesh_id, "verts", PropertyType.BUFFER)
  37. api.add_property(mesh_id, "faces", PropertyType.BUFFER)
  38. link_node(mesh_id, "/window/chatbox_layer/outline")
  39. resize_box()
  40. def resize_box():
  41. from pydrk import vertex, face
  42. mesh_id = api.lookup_node_id("/window/chatbox_layer/outline/box")
  43. # Lets add a poly - must be counterclockwise
  44. x, y = 0.25, 0.25
  45. w, h = 0.5, 0.5
  46. vert1 = vertex(x, y, 1, 1, 1, 1, 0, 0)
  47. vert2 = vertex(x + w, y, 1, 1, 1, 1, 1, 0)
  48. vert3 = vertex(x, y + h, 1, 1, 1, 1, 0, 1)
  49. vert4 = vertex(x + w, y + h, 1, 1, 1, 1, 1, 1)
  50. api.set_property_buffer(mesh_id, "verts", vert1 + vert2 + vert3 + vert4)
  51. api.set_property_buffer(mesh_id, "faces", face(0, 2, 1) + face(1, 2, 3))
  52. # Second mesh
  53. w = get_property("/window/chatbox_layer", "rect_w")
  54. h = get_property("/window/chatbox_layer", "rect_h")
  55. # in pixels
  56. border_size = 5
  57. bx, by = 5/w, 5/h
  58. mesh_id = api.lookup_node_id("/window/chatbox_layer/outline/inner_box")
  59. x, y = 0.25 + bx, 0.25 + by
  60. w, h = 0.50 - 2*bx, 0.50 - 2*by
  61. vert1 = vertex(x, y, 0, 0, 0, 1, 0, 0)
  62. vert2 = vertex(x + w, y, 0, 0, 0, 1, 1, 0)
  63. vert3 = vertex(x, y + h, 0, 0, 0, 1, 0, 1)
  64. vert4 = vertex(x + w, y + h, 0.3, 0.3, 0.3, 1, 1, 1)
  65. api.set_property_buffer(mesh_id, "verts", vert1 + vert2 + vert3 + vert4)
  66. api.set_property_buffer(mesh_id, "faces", face(0, 2, 1) + face(1, 2, 3))
  67. def main():
  68. garbage_collect()
  69. app = App()
  70. draw_box()
  71. print_tree()
  72. app.run()