__init__.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. layer_w = get_property("/window/chatbox_layer", "rect_w")
  44. layer_h = get_property("/window/chatbox_layer", "rect_h")
  45. # Lets add a poly - must be counterclockwise
  46. x, y = layer_w * 0.25, layer_h * 0.25
  47. w, h = layer_w * 0.50, layer_h * 0.50
  48. vert1 = vertex(x, y, 1, 1, 1, 1, 0, 0)
  49. vert2 = vertex(x + w, y, 1, 1, 1, 1, 1, 0)
  50. vert3 = vertex(x, y + h, 1, 1, 1, 1, 0, 1)
  51. vert4 = vertex(x + w, y + h, 1, 1, 1, 1, 1, 1)
  52. api.set_property_buffer(mesh_id, "verts", vert1 + vert2 + vert3 + vert4)
  53. api.set_property_buffer(mesh_id, "faces", face(0, 2, 1) + face(1, 2, 3))
  54. # Second mesh
  55. mesh_id = api.lookup_node_id("/window/chatbox_layer/outline/inner_box")
  56. x, y = x + 5, y + 5
  57. w -= 10
  58. h -= 10
  59. vert1 = vertex(x, y, 0, 0, 0, 1, 0, 0)
  60. vert2 = vertex(x + w, y, 0, 0, 0, 1, 1, 0)
  61. vert3 = vertex(x, y + h, 0, 0, 0, 1, 0, 1)
  62. vert4 = vertex(x + w, y + h, 0.3, 0.3, 0.3, 1, 1, 1)
  63. api.set_property_buffer(mesh_id, "verts", vert1 + vert2 + vert3 + vert4)
  64. api.set_property_buffer(mesh_id, "faces", face(0, 2, 1) + face(1, 2, 3))
  65. def main():
  66. garbage_collect()
  67. app = App()
  68. draw_box()
  69. print_tree()
  70. app.run()