コード例 #1
0
ファイル: game.py プロジェクト: springtangent/ld34
def main():
	glfw.setErrorCallback(error_callback)

	print("GL:", gl)

	glfw.init()
	glfw.windowHint(glfw.CONTEXT_VERSION_MAJOR, 3)
	glfw.windowHint(glfw.CONTEXT_VERSION_MINOR, 3)
	glfw.windowHint(glfw.OPENGL_PROFILE, glfw.OPENGL_CORE_PROFILE)
	glfw.windowHint(glfw.RESIZABLE, gl.FALSE)
	glfw.windowHint(glfw.OPENGL_FORWARD_COMPAT, 1)

	window = glfw.createWindow(WIDTH, HEIGHT, "LearnOpenGL")

	if window is None:
		print('could not open window.')
		glfw.terminate()
		sys.exit()

	window.makeContextCurrent()
	# window.setInputMode(glfw.CURSOR, glfw.CURSOR_DISABLED)
	window.setKeyCallback(key_callback)

	gl.init()
	print("IN MODULE:", gl.getError)
	err = gl.getError()
	if err:
		print("WINDOW OPEN ERROR:", err)

	gl.enable(gl.DEPTH_TEST)
	gl.enable(gl.BLEND)
	gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)

	# set up our application
	nodebuilder = NodeBuilder()

	# TODO: this stuff should happen automatically.
	debugdraw.register_with_nodebuilder(nodebuilder)
	transformnode.register_with_nodebuilder(nodebuilder)
	physicsnode.register_with_nodebuilder(nodebuilder)

	# set up
	scene = physicsnode.SceneNode(name='physics_scene') # scenenode.SceneNode(name='scene')

	debugdraw_renderer = debugdraw.RendererNode(name='debugdraw_renderer', parent=scene)
	sprite_renderer = spritenode.RendererNode(name="sprite_renderer", parent=scene)
	# space = 

	create_wheelchair_guy(scene)

	# TODO: finish debugging the get_relative_path method...
	# print("wheel_suspension -> wheel_body", wheel_suspension.get_relative_path(wheel_body))
	# print("wheel_suspension -> body", wheel_suspension.get_relative_path(body))
	# print("wheel_suspension -> player", wheel_suspension.get_relative_path(player))
	# print("wheel_suspension -> player_body", wheel_suspension.get_relative_path(body))
# 
	# print(wheel_suspension.get_node('../../../..'))
	# assert(wheel_suspension.get_node('..') is wheel)
	# p = '../../../..'
	# print("P", wheel_suspension.get_node(p))
	# assert(wheel_suspension.get_node(p) is player)
	# assert(wheel_suspension.get_node('../wheel_body') is wheel_body)
	# p = '../../../player_body'
	# print(wheel_suspension.get_node(p))
	# assert(wheel_suspension.get_node(p) is body)



	while not window.shouldClose():
		glfw.pollEvents()

		framebuffer_width, framebuffer_height = window.getFramebufferSize()
		gl.viewport(0, 0, framebuffer_width, framebuffer_height)
		gl.clearColor(0.2, 0.3, 0.3, 1.0)
		gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT)

		gl.enable(gl.BLEND)
		gl.enable(gl.DEPTH_TEST)
		sprite_renderer.draw()

		gl.disable(gl.BLEND)
		gl.disable(gl.DEPTH_TEST)
		debugdraw_renderer.draw() # draw the debug draw scene on top of the other stuff.
		scene.step(1.0/30.0, iterations=10)

		#print(scene.get_node('transform').position, scene.get_node('transform').angle)

		window.swapBuffers()