Add GopherJS bindings for raylib.js
This commit is contained in:
parent
6de595f396
commit
2bfca1f330
9 changed files with 1592 additions and 111 deletions
|
@ -17,30 +17,15 @@ func (w *Wave) cptr() *C.Wave {
|
|||
return (*C.Wave)(unsafe.Pointer(w))
|
||||
}
|
||||
|
||||
// newWaveFromPointer - Returns new Wave from pointer
|
||||
func newWaveFromPointer(ptr unsafe.Pointer) Wave {
|
||||
return *(*Wave)(ptr)
|
||||
}
|
||||
|
||||
func (s *Sound) cptr() *C.Sound {
|
||||
return (*C.Sound)(unsafe.Pointer(s))
|
||||
}
|
||||
|
||||
// newSoundFromPointer - Returns new Sound from pointer
|
||||
func newSoundFromPointer(ptr unsafe.Pointer) Sound {
|
||||
return *(*Sound)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (a *AudioStream) cptr() *C.AudioStream {
|
||||
return (*C.AudioStream)(unsafe.Pointer(a))
|
||||
}
|
||||
|
||||
// newAudioStreamFromPointer - Returns new AudioStream from pointer
|
||||
func newAudioStreamFromPointer(ptr unsafe.Pointer) AudioStream {
|
||||
return *(*AudioStream)(ptr)
|
||||
}
|
||||
|
||||
// InitAudioDevice - Initialize audio device and context
|
||||
func InitAudioDevice() {
|
||||
C.InitAudioDevice()
|
||||
|
|
|
@ -17,81 +17,41 @@ func (v *Vector2) cptr() *C.Vector2 {
|
|||
return (*C.Vector2)(unsafe.Pointer(v))
|
||||
}
|
||||
|
||||
// newVector2FromPointer - Returns new Vector2 from pointer
|
||||
func newVector2FromPointer(ptr unsafe.Pointer) Vector2 {
|
||||
return *(*Vector2)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (v *Vector3) cptr() *C.Vector3 {
|
||||
return (*C.Vector3)(unsafe.Pointer(v))
|
||||
}
|
||||
|
||||
// newVector3FromPointer - Returns new Vector3 from pointer
|
||||
func newVector3FromPointer(ptr unsafe.Pointer) Vector3 {
|
||||
return *(*Vector3)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (m *Matrix) cptr() *C.Matrix {
|
||||
return (*C.Matrix)(unsafe.Pointer(m))
|
||||
}
|
||||
|
||||
// newMatrixFromPointer - Returns new Matrix from pointer
|
||||
func newMatrixFromPointer(ptr unsafe.Pointer) Matrix {
|
||||
return *(*Matrix)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (color *Color) cptr() *C.Color {
|
||||
return (*C.Color)(unsafe.Pointer(color))
|
||||
}
|
||||
|
||||
// newColorFromPointer - Returns new Color from pointer
|
||||
func newColorFromPointer(ptr unsafe.Pointer) Color {
|
||||
return *(*Color)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (r *Rectangle) cptr() *C.Rectangle {
|
||||
return (*C.Rectangle)(unsafe.Pointer(r))
|
||||
}
|
||||
|
||||
// newRectangleFromPointer - Returns new Rectangle from pointer
|
||||
func newRectangleFromPointer(ptr unsafe.Pointer) Rectangle {
|
||||
return *(*Rectangle)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (c *Camera) cptr() *C.Camera {
|
||||
return (*C.Camera)(unsafe.Pointer(c))
|
||||
}
|
||||
|
||||
// newCameraFromPointer - Returns new Camera from pointer
|
||||
func newCameraFromPointer(ptr unsafe.Pointer) Camera {
|
||||
return *(*Camera)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (c *Camera2D) cptr() *C.Camera2D {
|
||||
return (*C.Camera2D)(unsafe.Pointer(c))
|
||||
}
|
||||
|
||||
// newCamera2DFromPointer - Returns new Camera2D from pointer
|
||||
func newCamera2DFromPointer(ptr unsafe.Pointer) Camera2D {
|
||||
return *(*Camera2D)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (b *BoundingBox) cptr() *C.BoundingBox {
|
||||
return (*C.BoundingBox)(unsafe.Pointer(b))
|
||||
}
|
||||
|
||||
// newBoundingBoxFromPointer - Returns new BoundingBox from pointer
|
||||
func newBoundingBoxFromPointer(ptr unsafe.Pointer) BoundingBox {
|
||||
return *(*BoundingBox)(ptr)
|
||||
}
|
||||
|
||||
// CloseWindow - Close Window and Terminate Context
|
||||
func CloseWindow() {
|
||||
C.CloseWindow()
|
||||
|
|
|
@ -14,41 +14,21 @@ func (m *Mesh) cptr() *C.Mesh {
|
|||
return (*C.Mesh)(unsafe.Pointer(m))
|
||||
}
|
||||
|
||||
// newMeshFromPointer - Returns new Mesh from pointer
|
||||
func newMeshFromPointer(ptr unsafe.Pointer) Mesh {
|
||||
return *(*Mesh)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (m *Material) cptr() *C.Material {
|
||||
return (*C.Material)(unsafe.Pointer(m))
|
||||
}
|
||||
|
||||
// newMaterialFromPointer - Returns new Material from pointer
|
||||
func newMaterialFromPointer(ptr unsafe.Pointer) Material {
|
||||
return *(*Material)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (m *Model) cptr() *C.Model {
|
||||
return (*C.Model)(unsafe.Pointer(m))
|
||||
}
|
||||
|
||||
// newModelFromPointer - Returns new Model from pointer
|
||||
func newModelFromPointer(ptr unsafe.Pointer) Model {
|
||||
return *(*Model)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (r *Ray) cptr() *C.Ray {
|
||||
return (*C.Ray)(unsafe.Pointer(r))
|
||||
}
|
||||
|
||||
// newRayFromPointer - Returns new Ray from pointer
|
||||
func newRayFromPointer(ptr unsafe.Pointer) Ray {
|
||||
return *(*Ray)(ptr)
|
||||
}
|
||||
|
||||
// DrawLine3D - Draw a line in 3D world space
|
||||
func DrawLine3D(startPos Vector3, endPos Vector3, color Color) {
|
||||
cstartPos := startPos.cptr()
|
||||
|
|
115
raylib/raylib.go
115
raylib/raylib.go
|
@ -67,6 +67,11 @@ func NewWave(sampleCount, sampleRate, sampleSize, channels uint32, data []byte)
|
|||
return Wave{sampleCount, sampleRate, sampleSize, channels, d}
|
||||
}
|
||||
|
||||
// newWaveFromPointer - Returns new Wave from pointer
|
||||
func newWaveFromPointer(ptr unsafe.Pointer) Wave {
|
||||
return *(*Wave)(ptr)
|
||||
}
|
||||
|
||||
// Sound source type
|
||||
type Sound struct {
|
||||
// Audio source id
|
||||
|
@ -82,6 +87,11 @@ func NewSound(source, buffer uint32, format int32) Sound {
|
|||
return Sound{source, buffer, format}
|
||||
}
|
||||
|
||||
// newSoundFromPointer - Returns new Sound from pointer
|
||||
func newSoundFromPointer(ptr unsafe.Pointer) Sound {
|
||||
return *(*Sound)(ptr)
|
||||
}
|
||||
|
||||
// Music type (file streaming from memory)
|
||||
// NOTE: Anything longer than ~10 seconds should be streamed
|
||||
type Music struct {
|
||||
|
@ -97,6 +107,11 @@ type Music struct {
|
|||
SamplesLeft uint32
|
||||
}
|
||||
|
||||
// newMusicFromPointer - Returns new Music from pointer
|
||||
func newMusicFromPointer(ptr unsafe.Pointer) Music {
|
||||
return *(*Music)(ptr)
|
||||
}
|
||||
|
||||
// AudioStream type
|
||||
// NOTE: Useful to create custom audio streams not bound to a specific file
|
||||
type AudioStream struct {
|
||||
|
@ -119,6 +134,11 @@ func NewAudioStream(sampleRate, sampleSize, channels uint32, format int32, sourc
|
|||
return AudioStream{sampleRate, sampleSize, channels, format, source, buffers}
|
||||
}
|
||||
|
||||
// newAudioStreamFromPointer - Returns new AudioStream from pointer
|
||||
func newAudioStreamFromPointer(ptr unsafe.Pointer) AudioStream {
|
||||
return *(*AudioStream)(ptr)
|
||||
}
|
||||
|
||||
// CameraMode type
|
||||
type CameraMode int32
|
||||
|
||||
|
@ -367,6 +387,11 @@ func NewVector2(x, y float32) Vector2 {
|
|||
return Vector2{x, y}
|
||||
}
|
||||
|
||||
// newVector2FromPointer - Returns new Vector2 from pointer
|
||||
func newVector2FromPointer(ptr unsafe.Pointer) Vector2 {
|
||||
return *(*Vector2)(ptr)
|
||||
}
|
||||
|
||||
// Vector3 type
|
||||
type Vector3 struct {
|
||||
X float32
|
||||
|
@ -379,6 +404,11 @@ func NewVector3(X, Y, Z float32) Vector3 {
|
|||
return Vector3{X, Y, Z}
|
||||
}
|
||||
|
||||
// newVector3FromPointer - Returns new Vector3 from pointer
|
||||
func newVector3FromPointer(ptr unsafe.Pointer) Vector3 {
|
||||
return *(*Vector3)(ptr)
|
||||
}
|
||||
|
||||
// Matrix type (OpenGL style 4x4 - right handed, column major)
|
||||
type Matrix struct {
|
||||
M0, M4, M8, M12 float32
|
||||
|
@ -392,6 +422,11 @@ func NewMatrix(m0, m4, m8, m12, m1, m5, m9, m13, m2, m6, m10, m14, m3, m7, m11,
|
|||
return Matrix{m0, m4, m8, m12, m1, m5, m9, m13, m2, m6, m10, m14, m3, m7, m11, m15}
|
||||
}
|
||||
|
||||
// newMatrixFromPointer - Returns new Matrix from pointer
|
||||
func newMatrixFromPointer(ptr unsafe.Pointer) Matrix {
|
||||
return *(*Matrix)(ptr)
|
||||
}
|
||||
|
||||
// Mat2 type (used for polygon shape rotation matrix)
|
||||
type Mat2 struct {
|
||||
M00 float32
|
||||
|
@ -431,6 +466,11 @@ func NewColor(r, g, b, a uint8) Color {
|
|||
return Color{r, g, b, a}
|
||||
}
|
||||
|
||||
// newColorFromPointer - Returns new Color from pointer
|
||||
func newColorFromPointer(ptr unsafe.Pointer) Color {
|
||||
return *(*Color)(ptr)
|
||||
}
|
||||
|
||||
// Rectangle type
|
||||
type Rectangle struct {
|
||||
X int32
|
||||
|
@ -444,6 +484,11 @@ func NewRectangle(x, y, width, height int32) Rectangle {
|
|||
return Rectangle{x, y, width, height}
|
||||
}
|
||||
|
||||
// newRectangleFromPointer - Returns new Rectangle from pointer
|
||||
func newRectangleFromPointer(ptr unsafe.Pointer) Rectangle {
|
||||
return *(*Rectangle)(ptr)
|
||||
}
|
||||
|
||||
// Camera type, defines a camera position/orientation in 3d space
|
||||
type Camera struct {
|
||||
// Camera position
|
||||
|
@ -461,6 +506,11 @@ func NewCamera(pos, target, up Vector3, fovy float32) Camera {
|
|||
return Camera{pos, target, up, fovy}
|
||||
}
|
||||
|
||||
// newCameraFromPointer - Returns new Camera from pointer
|
||||
func newCameraFromPointer(ptr unsafe.Pointer) Camera {
|
||||
return *(*Camera)(ptr)
|
||||
}
|
||||
|
||||
// Camera2D type, defines a 2d camera
|
||||
type Camera2D struct {
|
||||
// Camera offset (displacement from target)
|
||||
|
@ -478,6 +528,11 @@ func NewCamera2D(offset, target Vector2, rotation, zoom float32) Camera2D {
|
|||
return Camera2D{offset, target, rotation, zoom}
|
||||
}
|
||||
|
||||
// newCamera2DFromPointer - Returns new Camera2D from pointer
|
||||
func newCamera2DFromPointer(ptr unsafe.Pointer) Camera2D {
|
||||
return *(*Camera2D)(ptr)
|
||||
}
|
||||
|
||||
// BoundingBox type
|
||||
type BoundingBox struct {
|
||||
// Minimum vertex box-corner
|
||||
|
@ -491,6 +546,11 @@ func NewBoundingBox(min, max Vector3) BoundingBox {
|
|||
return BoundingBox{min, max}
|
||||
}
|
||||
|
||||
// newBoundingBoxFromPointer - Returns new BoundingBox from pointer
|
||||
func newBoundingBoxFromPointer(ptr unsafe.Pointer) BoundingBox {
|
||||
return *(*BoundingBox)(ptr)
|
||||
}
|
||||
|
||||
// Asset file
|
||||
type Asset interface {
|
||||
io.ReadSeeker
|
||||
|
@ -611,6 +671,11 @@ func NewMesh(vertexCount, triangleCount int32, vertices, texcoords, texcoords2,
|
|||
return Mesh{vertexCount, triangleCount, vertices, texcoords, texcoords2, normals, tangents, colors, indices, vaoID, vboID}
|
||||
}
|
||||
|
||||
// newMeshFromPointer - Returns new Mesh from pointer
|
||||
func newMeshFromPointer(ptr unsafe.Pointer) Mesh {
|
||||
return *(*Mesh)(ptr)
|
||||
}
|
||||
|
||||
// Material type
|
||||
type Material struct {
|
||||
// Shader
|
||||
|
@ -628,6 +693,11 @@ func NewMaterial(shader Shader, maps [MaxMaterialMaps]MaterialMap, params *[]flo
|
|||
return Material{shader, maps, [4]byte{}, params}
|
||||
}
|
||||
|
||||
// newMaterialFromPointer - Returns new Material from pointer
|
||||
func newMaterialFromPointer(ptr unsafe.Pointer) Material {
|
||||
return *(*Material)(ptr)
|
||||
}
|
||||
|
||||
// MaterialMap type
|
||||
type MaterialMap struct {
|
||||
// Texture
|
||||
|
@ -655,6 +725,11 @@ func NewModel(mesh Mesh, transform Matrix, material Material) Model {
|
|||
return Model{mesh, transform, material, [4]byte{}}
|
||||
}
|
||||
|
||||
// newModelFromPointer - Returns new Model from pointer
|
||||
func newModelFromPointer(ptr unsafe.Pointer) Model {
|
||||
return *(*Model)(ptr)
|
||||
}
|
||||
|
||||
// Ray type (useful for raycast)
|
||||
type Ray struct {
|
||||
// Ray position (origin)
|
||||
|
@ -668,6 +743,11 @@ func NewRay(position, direction Vector3) Ray {
|
|||
return Ray{position, direction}
|
||||
}
|
||||
|
||||
// newRayFromPointer - Returns new Ray from pointer
|
||||
func newRayFromPointer(ptr unsafe.Pointer) Ray {
|
||||
return *(*Ray)(ptr)
|
||||
}
|
||||
|
||||
// VrDevice type
|
||||
type VrDevice int32
|
||||
|
||||
|
@ -713,6 +793,11 @@ func NewVrDeviceInfo(hResolution, vResolution int, hScreenSize, vScreenSize, vSc
|
|||
lensSeparationDistance, interpupillaryDistance, lensDistortionValues, chromaAbCorrection}
|
||||
}
|
||||
|
||||
// newVrDeviceInfoFromPointer - Returns new VrDeviceInfo from pointer
|
||||
func newVrDeviceInfoFromPointer(ptr unsafe.Pointer) VrDeviceInfo {
|
||||
return *(*VrDeviceInfo)(ptr)
|
||||
}
|
||||
|
||||
// BlendMode type
|
||||
type BlendMode int32
|
||||
|
||||
|
@ -736,6 +821,11 @@ func NewShader(id uint32, locs [MaxShaderLocations]int32) Shader {
|
|||
return Shader{id, locs}
|
||||
}
|
||||
|
||||
// newShaderFromPointer - Returns new Shader from pointer
|
||||
func newShaderFromPointer(ptr unsafe.Pointer) Shader {
|
||||
return *(*Shader)(ptr)
|
||||
}
|
||||
|
||||
// CharInfo - SpriteFont character info
|
||||
type CharInfo struct {
|
||||
// Character value (Unicode)
|
||||
|
@ -755,6 +845,11 @@ func NewCharInfo(value int32, rec Rectangle, offsetX, offsetY, advanceX int32) C
|
|||
return CharInfo{value, rec, offsetX, offsetY, advanceX}
|
||||
}
|
||||
|
||||
// newCharInfoFromPointer - Returns new SpriteFont from pointer
|
||||
func newCharInfoFromPointer(ptr unsafe.Pointer) CharInfo {
|
||||
return *(*CharInfo)(ptr)
|
||||
}
|
||||
|
||||
// SpriteFont type, includes texture and charSet array data
|
||||
type SpriteFont struct {
|
||||
// Font texture
|
||||
|
@ -772,6 +867,11 @@ func NewSpriteFont(texture Texture2D, baseSize, charsCount int32, chars *CharInf
|
|||
return SpriteFont{texture, baseSize, charsCount, chars}
|
||||
}
|
||||
|
||||
// newSpriteFontFromPointer - Returns new SpriteFont from pointer
|
||||
func newSpriteFontFromPointer(ptr unsafe.Pointer) SpriteFont {
|
||||
return *(*SpriteFont)(ptr)
|
||||
}
|
||||
|
||||
// TextureFormat - Texture format
|
||||
type TextureFormat int32
|
||||
|
||||
|
@ -880,6 +980,11 @@ func NewImage(data []byte, width, height, mipmaps int32, format TextureFormat) *
|
|||
return &Image{d, width, height, mipmaps, format}
|
||||
}
|
||||
|
||||
// newImageFromPointer - Returns new Image from pointer
|
||||
func newImageFromPointer(ptr unsafe.Pointer) *Image {
|
||||
return (*Image)(ptr)
|
||||
}
|
||||
|
||||
// NewImageFromImage - Returns new Image from Go image.Image
|
||||
func NewImageFromImage(img image.Image) *Image {
|
||||
size := img.Bounds().Size()
|
||||
|
@ -916,6 +1021,11 @@ func NewTexture2D(id uint32, width, height, mipmaps int32, format TextureFormat)
|
|||
return Texture2D{id, width, height, mipmaps, format}
|
||||
}
|
||||
|
||||
// newTexture2DFromPointer - Returns new Texture2D from pointer
|
||||
func newTexture2DFromPointer(ptr unsafe.Pointer) Texture2D {
|
||||
return *(*Texture2D)(ptr)
|
||||
}
|
||||
|
||||
// RenderTexture2D type, for texture rendering
|
||||
type RenderTexture2D struct {
|
||||
// Render texture (fbo) id
|
||||
|
@ -931,6 +1041,11 @@ func NewRenderTexture2D(id uint32, texture, depth Texture2D) RenderTexture2D {
|
|||
return RenderTexture2D{id, texture, depth}
|
||||
}
|
||||
|
||||
// newRenderTexture2DFromPointer - Returns new RenderTexture2D from pointer
|
||||
func newRenderTexture2DFromPointer(ptr unsafe.Pointer) RenderTexture2D {
|
||||
return *(*RenderTexture2D)(ptr)
|
||||
}
|
||||
|
||||
// Log message types
|
||||
const (
|
||||
LogInfo = iota
|
||||
|
|
1476
raylib/raylib_js.go
1476
raylib/raylib_js.go
File diff suppressed because it is too large
Load diff
|
@ -15,21 +15,11 @@ func (v *VrDeviceInfo) cptr() *C.VrDeviceInfo {
|
|||
return (*C.VrDeviceInfo)(unsafe.Pointer(v))
|
||||
}
|
||||
|
||||
// newVrDeviceInfoFromPointer - Returns new VrDeviceInfo from pointer
|
||||
func newVrDeviceInfoFromPointer(ptr unsafe.Pointer) VrDeviceInfo {
|
||||
return *(*VrDeviceInfo)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (s *Shader) cptr() *C.Shader {
|
||||
return (*C.Shader)(unsafe.Pointer(s))
|
||||
}
|
||||
|
||||
// newShaderFromPointer - Returns new Shader from pointer
|
||||
func newShaderFromPointer(ptr unsafe.Pointer) Shader {
|
||||
return *(*Shader)(ptr)
|
||||
}
|
||||
|
||||
// LoadShader - Load a custom shader and bind default locations
|
||||
func LoadShader(vsFileName string, fsFileName string) Shader {
|
||||
cvsFileName := C.CString(vsFileName)
|
||||
|
|
|
@ -14,21 +14,11 @@ func (c *CharInfo) cptr() *C.CharInfo {
|
|||
return (*C.CharInfo)(unsafe.Pointer(c))
|
||||
}
|
||||
|
||||
// newCharInfoFromPointer - Returns new SpriteFont from pointer
|
||||
func newCharInfoFromPointer(ptr unsafe.Pointer) CharInfo {
|
||||
return *(*CharInfo)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (s *SpriteFont) cptr() *C.SpriteFont {
|
||||
return (*C.SpriteFont)(unsafe.Pointer(s))
|
||||
}
|
||||
|
||||
// newSpriteFontFromPointer - Returns new SpriteFont from pointer
|
||||
func newSpriteFontFromPointer(ptr unsafe.Pointer) SpriteFont {
|
||||
return *(*SpriteFont)(ptr)
|
||||
}
|
||||
|
||||
// GetDefaultFont - Get the default SpriteFont
|
||||
func GetDefaultFont() SpriteFont {
|
||||
ret := C.GetDefaultFont()
|
||||
|
|
|
@ -17,31 +17,16 @@ func (i *Image) cptr() *C.Image {
|
|||
return (*C.Image)(unsafe.Pointer(i))
|
||||
}
|
||||
|
||||
// newImageFromPointer - Returns new Image from pointer
|
||||
func newImageFromPointer(ptr unsafe.Pointer) *Image {
|
||||
return (*Image)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (t *Texture2D) cptr() *C.Texture2D {
|
||||
return (*C.Texture2D)(unsafe.Pointer(t))
|
||||
}
|
||||
|
||||
// newTexture2DFromPointer - Returns new Texture2D from pointer
|
||||
func newTexture2DFromPointer(ptr unsafe.Pointer) Texture2D {
|
||||
return *(*Texture2D)(ptr)
|
||||
}
|
||||
|
||||
// cptr returns C pointer
|
||||
func (r *RenderTexture2D) cptr() *C.RenderTexture2D {
|
||||
return (*C.RenderTexture2D)(unsafe.Pointer(r))
|
||||
}
|
||||
|
||||
// newRenderTexture2DFromPointer - Returns new RenderTexture2D from pointer
|
||||
func newRenderTexture2DFromPointer(ptr unsafe.Pointer) RenderTexture2D {
|
||||
return *(*RenderTexture2D)(ptr)
|
||||
}
|
||||
|
||||
// LoadImage - Load an image into CPU memory (RAM)
|
||||
func LoadImage(fileName string) *Image {
|
||||
cfileName := C.CString(fileName)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// +build !android,!windows,!js
|
||||
// +build !android,!windows
|
||||
|
||||
package raylib
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue