directory name changed
This commit is contained in:
81
3d_renderer/renderer.py
Normal file
81
3d_renderer/renderer.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import pygame as pg
|
||||
import numpy as np
|
||||
from math import *
|
||||
from src.camera import Camera
|
||||
from src.object import Object
|
||||
|
||||
class Renderer:
|
||||
__clock: pg.time.Clock
|
||||
screen: pg.Surface
|
||||
fps: int
|
||||
caption: str
|
||||
camera: Camera
|
||||
window_width: int
|
||||
window_height: int
|
||||
objects: list[Object]
|
||||
|
||||
def __init__(self, window_width: int, window_height: int):
|
||||
self.__clock = pg.time.Clock()
|
||||
self.screen = pg.display.set_mode((window_width, window_height))
|
||||
self.window_width = window_width
|
||||
self.window_height = window_height
|
||||
self.fps = 60
|
||||
self.caption = "window"
|
||||
self.camera = Camera(self)
|
||||
self.objects = []
|
||||
|
||||
def __quit(self):
|
||||
pg.quit()
|
||||
exit()
|
||||
|
||||
def __handle_event(self, event: pg.event.Event):
|
||||
if event.type == pg.QUIT:
|
||||
self.__quit()
|
||||
if not self.camera.is_static:
|
||||
key = pg.key.get_pressed()
|
||||
if key[pg.K_w]:
|
||||
self.camera.move_forward()
|
||||
if key[pg.K_s]:
|
||||
self.camera.move_backward()
|
||||
if key[pg.K_a]:
|
||||
self.camera.move_left()
|
||||
if key[pg.K_d]:
|
||||
self.camera.move_right()
|
||||
if key[pg.K_SPACE]:
|
||||
self.camera.move_up()
|
||||
if key[pg.K_LSHIFT]:
|
||||
self.camera.move_down()
|
||||
if key[pg.K_EQUALS]:
|
||||
self.camera.fov_up()
|
||||
if key[pg.K_MINUS]:
|
||||
self.camera.fov_down()
|
||||
if key[pg.K_r]:
|
||||
self.camera.pitch_down()
|
||||
if key[pg.K_f]:
|
||||
self.camera.pitch_up()
|
||||
if key[pg.K_q]:
|
||||
self.camera.yaw_down()
|
||||
if key[pg.K_e]:
|
||||
self.camera.yaw_up()
|
||||
if key[pg.K_z]:
|
||||
self.camera.roll_down()
|
||||
if key[pg.K_c]:
|
||||
self.camera.roll_up()
|
||||
|
||||
def __update(self):
|
||||
self.screen.fill((255,255,255))
|
||||
for o in self.objects:
|
||||
o.draw()
|
||||
pg.display.update()
|
||||
|
||||
def add_object(self, object: Object):
|
||||
object.attach_renderer(self)
|
||||
self.objects.append(object)
|
||||
|
||||
def run(self):
|
||||
pg.display.set_caption(self.caption)
|
||||
while True:
|
||||
for event in pg.event.get():
|
||||
self.__handle_event(event)
|
||||
self.__update()
|
||||
self.__clock.tick(self.fps)
|
||||
Reference in New Issue
Block a user