reorg modules

This commit is contained in:
Richard Smith 2019-06-07 03:51:03 +01:00
parent 7262e4fa2e
commit 1d5579db6d
9 changed files with 68 additions and 63 deletions

View file

@ -47,6 +47,33 @@ CloseWindow()
```
## raylib.pyray
Wrapper around the static bindings. Makes the names snakecase and converts strings to bytes automatically. See test_pyray.py.
```
from raylib.pyray import PyRay
from raylib.colors import *
pyray = PyRay()
pyray.init_window(800, 450, "Hello Pyray")
pyray.set_target_fps(60)
camera = pyray.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0)
pyray.set_camera_mode(camera, pyray.CAMERA_ORBITAL)
while not pyray.window_should_close():
pyray.update_camera(pyray.pointer(camera))
pyray.begin_drawing()
pyray.clear_background(RAYWHITE)
pyray.draw_text("Hello world", 190, 200, 20, VIOLET)
pyray.end_drawing()
pyray.close_window()
```
## raylib.dynamic
In addition to the API static bindings we have CFFI ABI dynamic bindings in order to avoid the need to compile a C extension module.
@ -58,31 +85,6 @@ which we supply for Windows/Mac/Linux.
See test_dynamic.py for how to use.
## raylib.static.pyray
Wrapper around the static bindings. Makes the names snakecase and converts strings to bytes automatically. See test_pyray.py.
```
from raylib.static.pyray import pyray as prl
from raylib.colors import *
prl.init_window(800, 450, "Hello Pyray")
prl.set_target_fps(60)
camera = prl.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0)
prl.set_camera_mode(camera, prl.CAMERA_ORBITAL)
while not prl.window_should_close():
prl.update_camera(prl.pointer(camera))
prl.begin_drawing()
prl.clear_background(RAYWHITE)
prl.draw_text("Hello world", 190, 200, 20, VIOLET)
prl.end_drawing()
prl.close_window()
```
## raylib.richlib
A very easy to use library on top of static bindings, modelled after Pygame Zero.
@ -98,4 +100,5 @@ A very easy to use library on top of static bindings, modelled after Pygame Zero
* converting more examples from C to python
* testing and building on more platforms
* sorting out binary wheel distribution for Mac/Win and compile-from-source distributtion for Linux
* dealing with conversions to pointers in PyRay automatically

View file

@ -1,5 +1,5 @@
from raylib.richlib import *
from raylib.static.pyray import pyray
WIDTH=1200
HEIGHT=800

View file

@ -1,5 +1,5 @@
from . import rl, ffi
from ..colors import *
from .static import rl, ffi
from .colors import *
from inspect import ismethod,getmembers,isbuiltin
import inflection
@ -7,8 +7,6 @@ class PyRay:
def pointer(self, struct):
return ffi.addressof(struct)
pyray = PyRay()
def makefunc(a):
#print("makefunc ",a)
@ -31,10 +29,12 @@ def makeStructHelper(struct):
for name, attr in getmembers(rl):
print(name, attr)
#print(name, attr)
uname = inflection.underscore(name).replace('3_d','_3d').replace('2_d','_2d')
if isbuiltin(attr):
#print(attr)
#print(attr.__call__)
#print(attr.__doc__)
#print(attr.__text_signature__)
#print(dir(attr))
#print(dir(attr.__repr__))
f = makefunc(attr)
@ -47,4 +47,5 @@ for name, attr in getmembers(rl):
for struct in ('Vector2','Vector3','Vector4','Camera2D', 'Camera3D', 'Quaternion', 'Color'):
f = makeStructHelper(struct)
setattr(PyRay, struct, f)
setattr(PyRay, struct, f)

View file

@ -10,6 +10,10 @@ import sys
data_dir = ""
from ..pyray import PyRay
pyray = PyRay()
camera = ffi.new("struct Camera3D *")
camera.position = (0.0, 100, 100)
camera.target = (0.0, 0.0, 0.0)

View file

@ -1,7 +1,6 @@
from ._raylib_cffi import ffi, lib as rl
from _raylib_cffi.lib import *
from raylib.colors import *
from .helpers import *
print("RAYLIB STATIC LOADED")

View file

@ -1,5 +0,0 @@
from ._raylib_cffi import ffi
def Vector3(x, y, z):
return ffi.new("struct Vector3 *", [x, y, z])[0]

View file

@ -10,7 +10,7 @@ README = (HERE / "README.md").read_text()
# This call to setup() does all the work
setup(
name="raylib",
version="2.5.0.post2",
version="2.5.0.post3",
description="Python CFFI bindings for Raylib",
long_description=README,
long_description_content_type="text/markdown",

View file

@ -1,30 +1,33 @@
"""
This shows how to use the Pyray wrapper around the static binding.
"""
from raylib.static.pyray import pyray as prl
from raylib.pyray import PyRay
from raylib.colors import *
prl.init_window(800, 450, "Raylib texture test")
prl.set_target_fps(60)
pyray = PyRay()
camera = prl.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0)
image = prl.load_image("examples/models/resources/heightmap.png")
texture = prl.load_texture_from_image(image)
mesh = prl.gen_mesh_heightmap(image, (16, 8, 16))
model = prl.load_model_from_mesh(mesh)
model.materials.maps[prl.MAP_DIFFUSE].texture = texture
pyray.init_window(800, 450, "Raylib texture test")
pyray.set_target_fps(60)
prl.unload_image(image)
prl.set_camera_mode(camera, prl.CAMERA_ORBITAL)
camera = pyray.Camera3D([18.0, 16.0, 18.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], 45.0, 0)
image = pyray.load_image("examples/models/resources/heightmap.png")
texture = pyray.load_texture_from_image(image)
mesh = pyray.gen_mesh_heightmap(image, (16, 8, 16))
model = pyray.load_model_from_mesh(mesh)
model.materials.maps[pyray.MAP_DIFFUSE].texture = texture
while not prl.window_should_close():
prl.update_camera(prl.pointer(camera))
prl.begin_drawing()
prl.clear_background(RAYWHITE)
prl.begin_mode_3d(camera)
prl.draw_model(model, (-8.0, 0.0, -8.0), 1.0, RED)
prl.draw_grid(20, 1.0)
prl.end_mode_3d()
prl.draw_text("This mesh should be textured", 190, 200, 20, VIOLET)
prl.end_drawing()
prl.close_window()
pyray.unload_image(image)
pyray.set_camera_mode(camera, pyray.CAMERA_ORBITAL)
while not pyray.window_should_close():
pyray.update_camera(pyray.pointer(camera))
pyray.begin_drawing()
pyray.clear_background(RAYWHITE)
pyray.begin_mode_3d(camera)
pyray.draw_model(model, (-8.0, 0.0, -8.0), 1.0, RED)
pyray.draw_grid(20, 1.0)
pyray.end_mode_3d()
pyray.draw_text("This mesh should be textured", 190, 200, 20, VIOLET)
pyray.end_drawing()
pyray.close_window()

View file

@ -1,5 +1,5 @@
from raylib.richlib import *
from raylib.static.pyray import pyray
WIDTH=800
HEIGHT=640