Initial commit

This commit is contained in:
Milan Nikolic 2017-01-27 09:35:30 +01:00
commit d7ff68b487
196 changed files with 286314 additions and 0 deletions

View file

@ -0,0 +1,127 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
var (
MaxBuildings int = 100
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera")
player := raylib.NewRectangle(400, 280, 40, 40)
buildings := make([]raylib.Rectangle, MaxBuildings)
buildColors := make([]raylib.Color, MaxBuildings)
spacing := int32(0)
for i := 0; i < MaxBuildings; i++ {
r := raylib.Rectangle{}
r.Width = raylib.GetRandomValue(50, 200)
r.Height = raylib.GetRandomValue(100, 800)
r.Y = screenHeight - 130 - r.Height
r.X = -6000 + spacing
spacing += r.Width
c := raylib.NewColor(byte(raylib.GetRandomValue(200, 240)), byte(raylib.GetRandomValue(200, 240)), byte(raylib.GetRandomValue(200, 250)), byte(255))
buildings[i] = r
buildColors[i] = c
}
camera := raylib.Camera2D{}
camera.Target = raylib.NewVector2(float32(player.X+20), float32(player.Y+20))
camera.Offset = raylib.NewVector2(0, 0)
camera.Rotation = 0.0
camera.Zoom = 1.0
raylib.SetTargetFPS(30)
for !raylib.WindowShouldClose() {
if raylib.IsKeyDown(raylib.KeyRight) {
player.X += 2 // Player movement
camera.Offset.X -= 2 // Camera displacement with player movement
} else if raylib.IsKeyDown(raylib.KeyLeft) {
player.X -= 2 // Player movement
camera.Offset.X += 2 // Camera displacement with player movement
}
// Camera target follows player
camera.Target = raylib.NewVector2(float32(player.X+20), float32(player.Y+20))
// Camera rotation controls
if raylib.IsKeyDown(raylib.KeyA) {
camera.Rotation--
} else if raylib.IsKeyDown(raylib.KeyS) {
camera.Rotation++
}
// Limit camera rotation to 80 degrees (-40 to 40)
if camera.Rotation > 40 {
camera.Rotation = 40
} else if camera.Rotation < -40 {
camera.Rotation = -40
}
// Camera zoom controls
camera.Zoom += float32(raylib.GetMouseWheelMove()) * 0.05
if camera.Zoom > 3.0 {
camera.Zoom = 3.0
} else if camera.Zoom < 0.1 {
camera.Zoom = 0.1
}
// Camera reset (zoom and rotation)
if raylib.IsKeyPressed(raylib.KeyR) {
camera.Zoom = 1.0
camera.Rotation = 0.0
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin2dMode(camera)
raylib.DrawRectangle(-6000, 320, 13000, 8000, raylib.DarkGray)
for i := 0; i < MaxBuildings; i++ {
raylib.DrawRectangleRec(buildings[i], buildColors[i])
}
raylib.DrawRectangleRec(player, raylib.Red)
raylib.DrawRectangle(int32(camera.Target.X), -500, 1, screenHeight*4, raylib.Green)
raylib.DrawRectangle(-500, int32(camera.Target.Y), screenWidth*4, 1, raylib.Green)
raylib.End2dMode()
raylib.DrawText("SCREEN AREA", 640, 10, 20, raylib.Red)
raylib.DrawRectangle(0, 0, screenWidth, 5, raylib.Red)
raylib.DrawRectangle(0, 5, 5, screenHeight-10, raylib.Red)
raylib.DrawRectangle(screenWidth-5, 5, 5, screenHeight-10, raylib.Red)
raylib.DrawRectangle(0, screenHeight-5, screenWidth, 5, raylib.Red)
raylib.DrawRectangle(10, 10, 250, 113, raylib.Fade(raylib.SkyBlue, 0.5))
raylib.DrawRectangleLines(10, 10, 250, 113, raylib.Blue)
raylib.DrawText("Free 2d camera controls:", 20, 20, 10, raylib.Black)
raylib.DrawText("- Right/Left to move Offset", 40, 40, 10, raylib.DarkGray)
raylib.DrawText("- Mouse Wheel to Zoom in-out", 40, 60, 10, raylib.DarkGray)
raylib.DrawText("- A / S to Rotate", 40, 80, 10, raylib.DarkGray)
raylib.DrawText("- R to reset Zoom and Rotation", 40, 100, 10, raylib.DarkGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,68 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
const (
MaxColumns = 20
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - 3d camera first person")
camera := raylib.Camera{}
camera.Position = raylib.NewVector3(4.0, 2.0, 4.0)
camera.Target = raylib.NewVector3(0.0, 1.8, 0.0)
camera.Up = raylib.NewVector3(0.0, 1.0, 0.0)
camera.Fovy = 60.0
// Generates some random columns
heights := make([]float32, MaxColumns)
positions := make([]raylib.Vector3, MaxColumns)
colors := make([]raylib.Color, MaxColumns)
for i := 0; i < MaxColumns; i++ {
heights[i] = float32(raylib.GetRandomValue(1, 12))
positions[i] = raylib.NewVector3(float32(raylib.GetRandomValue(-15, 15)), heights[i]/2, float32(raylib.GetRandomValue(-15, 15)))
colors[i] = raylib.NewColor(uint8(raylib.GetRandomValue(20, 255)), uint8(raylib.GetRandomValue(10, 55)), 30, 255)
}
raylib.SetCameraMode(camera, raylib.CameraFirstPerson) // Set a first person camera mode
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.UpdateCamera(&camera) // Update camera
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin3dMode(camera)
raylib.DrawPlane(raylib.NewVector3(0.0, 0.0, 0.0), raylib.NewVector2(32.0, 32.0), raylib.LightGray) // Draw ground
raylib.DrawCube(raylib.NewVector3(-16.0, 2.5, 0.0), 1.0, 5.0, 32.0, raylib.Blue) // Draw a blue wall
raylib.DrawCube(raylib.NewVector3(16.0, 2.5, 0.0), 1.0, 5.0, 32.0, raylib.Lime) // Draw a green wall
raylib.DrawCube(raylib.NewVector3(0.0, 2.5, 16.0), 32.0, 5.0, 1.0, raylib.Gold) // Draw a yellow wall
// Draw some cubes around
for i := 0; i < MaxColumns; i++ {
raylib.DrawCube(positions[i], 2.0, heights[i], 2.0, colors[i])
raylib.DrawCubeWires(positions[i], 2.0, heights[i], 2.0, raylib.Maroon)
}
raylib.End3dMode()
raylib.DrawRectangle(10, 10, 220, 70, raylib.Fade(raylib.SkyBlue, 0.5))
raylib.DrawRectangleLines(10, 10, 220, 70, raylib.Blue)
raylib.DrawText("First person camera default controls:", 20, 20, 10, raylib.Black)
raylib.DrawText("- Move with keys: W, A, S, D", 40, 40, 10, raylib.DarkGray)
raylib.DrawText("- Mouse move to look around", 40, 60, 10, raylib.DarkGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,56 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - 3d camera free")
camera := raylib.Camera{}
camera.Position = raylib.NewVector3(10.0, 10.0, 10.0)
camera.Target = raylib.NewVector3(0.0, 0.0, 0.0)
camera.Up = raylib.NewVector3(0.0, 1.0, 0.0)
camera.Fovy = 45.0
cubePosition := raylib.NewVector3(0.0, 0.0, 0.0)
raylib.SetCameraMode(camera, raylib.CameraFree) // Set a free camera mode
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.UpdateCamera(&camera) // Update camera
if raylib.IsKeyDown(raylib.KeyZ) {
camera.Target = raylib.NewVector3(0.0, 0.0, 0.0)
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin3dMode(camera)
raylib.DrawCube(cubePosition, 2.0, 2.0, 2.0, raylib.Red)
raylib.DrawCubeWires(cubePosition, 2.0, 2.0, 2.0, raylib.Maroon)
raylib.DrawGrid(10, 1.0)
raylib.End3dMode()
raylib.DrawRectangle(10, 10, 320, 133, raylib.Fade(raylib.SkyBlue, 0.5))
raylib.DrawRectangleLines(10, 10, 320, 133, raylib.Blue)
raylib.DrawText("Free camera default controls:", 20, 20, 10, raylib.Black)
raylib.DrawText("- Mouse Wheel to Zoom in-out", 40, 40, 10, raylib.DarkGray)
raylib.DrawText("- Mouse Wheel Pressed to Pan", 40, 60, 10, raylib.DarkGray)
raylib.DrawText("- Alt + Mouse Wheel Pressed to Rotate", 40, 80, 10, raylib.DarkGray)
raylib.DrawText("- Alt + Ctrl + Mouse Wheel Pressed for Smooth Zoom", 40, 100, 10, raylib.DarkGray)
raylib.DrawText("- Z to zoom to (0, 0, 0)", 40, 120, 10, raylib.DarkGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,42 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - 3d mode")
camera := raylib.Camera{}
camera.Position = raylib.NewVector3(5.0, 10.0, 10.0)
camera.Target = raylib.NewVector3(0.0, 0.0, 0.0)
camera.Up = raylib.NewVector3(0.0, 1.0, 0.0)
camera.Fovy = 45.0
cubePosition := raylib.NewVector3(0.0, 0.0, 0.0)
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin3dMode(camera)
raylib.DrawCube(cubePosition, 2.0, 2.0, 2.0, raylib.Red)
raylib.DrawCubeWires(cubePosition, 2.0, 2.0, 2.0, raylib.Maroon)
raylib.DrawGrid(10, 1.0)
raylib.End3dMode()
raylib.DrawText("Welcome to the third dimension!", 10, 40, 20, raylib.DarkGray)
raylib.DrawFPS(10, 10)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,77 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d picking")
camera := raylib.Camera{}
camera.Position = raylib.NewVector3(10.0, 10.0, 10.0)
camera.Target = raylib.NewVector3(0.0, 0.0, 0.0)
camera.Up = raylib.NewVector3(0.0, 1.0, 0.0)
camera.Fovy = 45.0
cubePosition := raylib.NewVector3(0.0, 1.0, 0.0)
cubeSize := raylib.NewVector3(2.0, 2.0, 2.0)
var ray raylib.Ray
collision := false
raylib.SetCameraMode(camera, raylib.CameraFree) // Set a free camera mode
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.UpdateCamera(&camera) // Update camera
if raylib.IsMouseButtonPressed(raylib.MouseLeftButton) {
// NOTE: This function is NOT WORKING properly!
ray = raylib.GetMouseRay(raylib.GetMousePosition(), camera)
// Check collision between ray and box
min := raylib.NewVector3(cubePosition.X-cubeSize.X/2, cubePosition.Y-cubeSize.Y/2, cubePosition.Z-cubeSize.Z/2)
max := raylib.NewVector3(cubePosition.X+cubeSize.X/2, cubePosition.Y+cubeSize.Y/2, cubePosition.Z+cubeSize.Z/2)
collision = raylib.CheckCollisionRayBox(ray, raylib.NewBoundingBox(min, max))
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin3dMode(camera)
if collision {
raylib.DrawCube(cubePosition, cubeSize.X, cubeSize.Y, cubeSize.Z, raylib.Red)
raylib.DrawCubeWires(cubePosition, cubeSize.X, cubeSize.Y, cubeSize.Z, raylib.Maroon)
raylib.DrawCubeWires(cubePosition, cubeSize.X+0.2, cubeSize.Y+0.2, cubeSize.Z+0.2, raylib.Green)
} else {
raylib.DrawCube(cubePosition, cubeSize.X, cubeSize.Y, cubeSize.Z, raylib.Gray)
raylib.DrawCubeWires(cubePosition, cubeSize.X, cubeSize.Y, cubeSize.Z, raylib.DarkGray)
}
raylib.DrawRay(ray, raylib.Maroon)
raylib.DrawGrid(10, 1.0)
raylib.End3dMode()
raylib.DrawText("Try selecting the box with mouse!", 240, 10, 20, raylib.DarkGray)
if collision {
raylib.DrawText("BOX SELECTED", (screenWidth-raylib.MeasureText("BOX SELECTED", 30))/2, int32(float32(screenHeight)*0.1), 30, raylib.Green)
}
raylib.DrawFPS(10, 10)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,22 @@
package main
import "github.com/gen2brain/raylib-go/raylib"
func main() {
raylib.SetConfigFlags(raylib.FlagVsyncHint)
raylib.InitWindow(800, 450, "raylib [core] example - basic window")
//raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawText("Congrats! You created your first window!", 190, 200, 20, raylib.LightGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,70 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - color selection (collision detection)")
colors := [21]raylib.Color{
raylib.DarkGray, raylib.Maroon, raylib.Orange, raylib.DarkGreen, raylib.DarkBlue, raylib.DarkPurple,
raylib.DarkBrown, raylib.Gray, raylib.Red, raylib.Gold, raylib.Lime, raylib.Blue, raylib.Violet, raylib.Brown,
raylib.LightGray, raylib.Pink, raylib.Yellow, raylib.Green, raylib.SkyBlue, raylib.Purple, raylib.Beige,
}
colorsRecs := make([]raylib.Rectangle, 21) // Rectangles array
// Fills colorsRecs data (for every rectangle)
for i := 0; i < 21; i++ {
r := raylib.Rectangle{}
r.X = int32(20 + 100*(i%7) + 10*(i%7))
r.Y = int32(60 + 100*(i/7) + 10*(i/7))
r.Width = 100
r.Height = 100
colorsRecs[i] = r
}
selected := make([]bool, 21) // Selected rectangles indicator
mousePoint := raylib.Vector2{}
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
mousePoint = raylib.GetMousePosition()
for i := 0; i < 21; i++ { // Iterate along all the rectangles
if raylib.CheckCollisionPointRec(mousePoint, colorsRecs[i]) {
colors[i].A = 120
if raylib.IsMouseButtonPressed(raylib.MouseLeftButton) {
selected[i] = !selected[i]
}
} else {
colors[i].A = 255
}
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
for i := 0; i < 21; i++ { // Draw all rectangles
raylib.DrawRectangleRec(colorsRecs[i], colors[i])
// Draw four rectangles around selected rectangle
if selected[i] {
raylib.DrawRectangle(colorsRecs[i].X, colorsRecs[i].Y, 100, 10, raylib.RayWhite) // Square top rectangle
raylib.DrawRectangle(colorsRecs[i].X, colorsRecs[i].Y, 10, 100, raylib.RayWhite) // Square left rectangle
raylib.DrawRectangle(colorsRecs[i].X+90, colorsRecs[i].Y, 10, 100, raylib.RayWhite) // Square right rectangle
raylib.DrawRectangle(colorsRecs[i].X, colorsRecs[i].Y+90, 100, 10, raylib.RayWhite) // Square bottom rectangle
}
}
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,50 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - drop files")
raylib.SetTargetFPS(60)
count := int32(0)
var droppedFiles []string
for !raylib.WindowShouldClose() {
if raylib.IsFileDropped() {
droppedFiles = raylib.GetDroppedFiles(&count)
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
if count == 0 {
raylib.DrawText("Drop your files to this window!", 100, 40, 20, raylib.DarkGray)
} else {
raylib.DrawText("Dropped files:", 100, 40, 20, raylib.DarkGray)
for i := int32(0); i < count; i++ {
if i%2 == 0 {
raylib.DrawRectangle(0, int32(85+40*i), screenWidth, 40, raylib.Fade(raylib.LightGray, 0.5))
} else {
raylib.DrawRectangle(0, int32(85+40*i), screenWidth, 40, raylib.Fade(raylib.LightGray, 0.3))
}
raylib.DrawText(droppedFiles[i], 120, int32(100), 10, raylib.Gray)
}
raylib.DrawText("Drop new files...", 100, int32(150), 20, raylib.DarkGray)
}
raylib.EndDrawing()
}
raylib.ClearDroppedFiles()
raylib.CloseWindow()
}

View file

@ -0,0 +1,99 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
var (
MaxGestureStrings int = 20
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - gestures detection")
touchPosition := raylib.NewVector2(0, 0)
touchArea := raylib.NewRectangle(220, 10, screenWidth-230, screenHeight-20)
gestureStrings := make([]string, 0)
currentGesture := raylib.GestureNone
lastGesture := raylib.GestureNone
//raylib.SetGesturesEnabled(uint32(raylib.GestureHold | raylib.GestureDrag)) // Enable only some gestures to be detected
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
lastGesture = currentGesture
currentGesture = raylib.GetGestureDetected()
touchPosition = raylib.GetTouchPosition(0)
if raylib.CheckCollisionPointRec(touchPosition, touchArea) && currentGesture != raylib.GestureNone {
if currentGesture != lastGesture {
switch currentGesture {
case raylib.GestureTap:
gestureStrings = append(gestureStrings, "GESTURE TAP")
case raylib.GestureDoubletap:
gestureStrings = append(gestureStrings, "GESTURE DOUBLETAP")
case raylib.GestureHold:
gestureStrings = append(gestureStrings, "GESTURE HOLD")
case raylib.GestureDrag:
gestureStrings = append(gestureStrings, "GESTURE DRAG")
case raylib.GestureSwipeRight:
gestureStrings = append(gestureStrings, "GESTURE SWIPE RIGHT")
case raylib.GestureSwipeLeft:
gestureStrings = append(gestureStrings, "GESTURE SWIPE LEFT")
case raylib.GestureSwipeUp:
gestureStrings = append(gestureStrings, "GESTURE SWIPE UP")
case raylib.GestureSwipeDown:
gestureStrings = append(gestureStrings, "GESTURE SWIPE DOWN")
case raylib.GesturePinchIn:
gestureStrings = append(gestureStrings, "GESTURE PINCH IN")
case raylib.GesturePinchOut:
gestureStrings = append(gestureStrings, "GESTURE PINCH OUT")
}
if len(gestureStrings) >= MaxGestureStrings {
gestureStrings = make([]string, 0)
}
}
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawRectangleRec(touchArea, raylib.Gray)
raylib.DrawRectangle(225, 15, screenWidth-240, screenHeight-30, raylib.RayWhite)
raylib.DrawText("GESTURES TEST AREA", screenWidth-270, screenHeight-40, 20, raylib.Fade(raylib.Gray, 0.5))
for i := 0; i < len(gestureStrings); i++ {
if i%2 == 0 {
raylib.DrawRectangle(10, int32(30+20*i), 200, 20, raylib.Fade(raylib.LightGray, 0.5))
} else {
raylib.DrawRectangle(10, int32(30+20*i), 200, 20, raylib.Fade(raylib.LightGray, 0.3))
}
if i < len(gestureStrings)-1 {
raylib.DrawText(gestureStrings[i], 35, int32(36+20*i), 10, raylib.DarkGray)
} else {
raylib.DrawText(gestureStrings[i], 35, int32(36+20*i), 10, raylib.Maroon)
}
}
raylib.DrawRectangleLines(10, 29, 200, screenHeight-50, raylib.Gray)
raylib.DrawText("DETECTED GESTURES", 50, 15, 10, raylib.Gray)
if currentGesture != raylib.GestureNone {
raylib.DrawCircleV(touchPosition, 30, raylib.Maroon)
}
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,201 @@
package main
import (
"fmt"
"github.com/gen2brain/raylib-go/raylib"
)
const (
Xbox360NameId = "Xbox 360 Controller"
Ps3NameId = "PLAYSTATION(R)3 Controller"
)
func main() {
raylib.SetConfigFlags(raylib.FlagMsaa4xHint) // Set MSAA 4X hint before windows creation
raylib.InitWindow(800, 450, "raylib [core] example - gamepad input")
texPs3Pad := raylib.LoadTexture("ps3.png")
texXboxPad := raylib.LoadTexture("xbox.png")
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
if raylib.IsGamepadAvailable(raylib.GamepadPlayer1) {
raylib.DrawText(fmt.Sprintf("GP1: %s", raylib.GetGamepadName(raylib.GamepadPlayer1)), 10, 10, 10, raylib.Black)
if raylib.IsGamepadName(raylib.GamepadPlayer1, Xbox360NameId) {
raylib.DrawTexture(texXboxPad, 0, 0, raylib.DarkGray)
// Draw buttons: xbox home
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonHome) {
raylib.DrawCircle(394, 89, 19, raylib.Red)
}
// Draw buttons: basic
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonStart) {
raylib.DrawCircle(436, 150, 9, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonSelect) {
raylib.DrawCircle(352, 150, 9, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonX) {
raylib.DrawCircle(501, 151, 15, raylib.Blue)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonA) {
raylib.DrawCircle(536, 187, 15, raylib.Lime)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonB) {
raylib.DrawCircle(572, 151, 15, raylib.Maroon)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonY) {
raylib.DrawCircle(536, 115, 15, raylib.Gold)
}
// Draw buttons: d-pad
raylib.DrawRectangle(317, 202, 19, 71, raylib.Black)
raylib.DrawRectangle(293, 228, 69, 19, raylib.Black)
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonUp) {
raylib.DrawRectangle(317, 202, 19, 26, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonDown) {
raylib.DrawRectangle(317, 202+45, 19, 26, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonLeft) {
raylib.DrawRectangle(292, 228, 25, 19, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonRight) {
raylib.DrawRectangle(292+44, 228, 26, 19, raylib.Red)
}
// Draw buttons: left-right back
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonLb) {
raylib.DrawCircle(259, 61, 20, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadXboxButtonRb) {
raylib.DrawCircle(536, 61, 20, raylib.Red)
}
// Draw axis: left joystick
raylib.DrawCircle(259, 152, 39, raylib.Black)
raylib.DrawCircle(259, 152, 34, raylib.LightGray)
raylib.DrawCircle(int32(259+(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadXboxAxisLeftX)*20)),
int32(152-(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadXboxAxisLeftY)*20)), 25, raylib.Black)
// Draw axis: right joystick
raylib.DrawCircle(461, 237, 38, raylib.Black)
raylib.DrawCircle(461, 237, 33, raylib.LightGray)
raylib.DrawCircle(int32(461+(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadXboxAxisRightX)*20)),
int32(237-(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadXboxAxisRightY)*20)), 25, raylib.Black)
// Draw axis: left-right triggers
raylib.DrawRectangle(170, 30, 15, 70, raylib.Gray)
raylib.DrawRectangle(604, 30, 15, 70, raylib.Gray)
raylib.DrawRectangle(170, 30, 15, int32(((1.0+raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadXboxAxisLt))/2.0)*70), raylib.Red)
raylib.DrawRectangle(604, 30, 15, int32(((1.0+raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadXboxAxisRt))/2.0)*70), raylib.Red)
} else if raylib.IsGamepadName(raylib.GamepadPlayer1, Ps3NameId) {
raylib.DrawTexture(texPs3Pad, 0, 0, raylib.DarkGray)
// Draw buttons: ps
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonPs) {
raylib.DrawCircle(396, 222, 13, raylib.Red)
}
// Draw buttons: basic
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonSelect) {
raylib.DrawRectangle(328, 170, 32, 13, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonStart) {
raylib.DrawTriangle(raylib.NewVector2(436, 168), raylib.NewVector2(436, 185), raylib.NewVector2(464, 177), raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonTriangle) {
raylib.DrawCircle(557, 144, 13, raylib.Lime)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonCircle) {
raylib.DrawCircle(586, 173, 13, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonCross) {
raylib.DrawCircle(557, 203, 13, raylib.Violet)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonSquare) {
raylib.DrawCircle(527, 173, 13, raylib.Pink)
}
// Draw buttons: d-pad
raylib.DrawRectangle(225, 132, 24, 84, raylib.Black)
raylib.DrawRectangle(195, 161, 84, 25, raylib.Black)
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonUp) {
raylib.DrawRectangle(225, 132, 24, 29, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonDown) {
raylib.DrawRectangle(225, 132+54, 24, 30, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonLeft) {
raylib.DrawRectangle(195, 161, 30, 25, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonRight) {
raylib.DrawRectangle(195+54, 161, 30, 25, raylib.Red)
}
// Draw buttons: left-right back buttons
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonL1) {
raylib.DrawCircle(239, 82, 20, raylib.Red)
}
if raylib.IsGamepadButtonDown(raylib.GamepadPlayer1, raylib.GamepadPs3ButtonR1) {
raylib.DrawCircle(557, 82, 20, raylib.Red)
}
// Draw axis: left joystick
raylib.DrawCircle(319, 255, 35, raylib.Black)
raylib.DrawCircle(319, 255, 31, raylib.LightGray)
raylib.DrawCircle(int32(319+(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadPs3AxisLeftX)*20)),
int32(255+(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadPs3AxisLeftY)*20)), 25, raylib.Black)
// Draw axis: right joystick
raylib.DrawCircle(475, 255, 35, raylib.Black)
raylib.DrawCircle(475, 255, 31, raylib.LightGray)
raylib.DrawCircle(int32(475+(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadPs3AxisRightX)*20)),
int32(255+(raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadPs3AxisRightY)*20)), 25, raylib.Black)
// Draw axis: left-right triggers
raylib.DrawRectangle(169, 48, 15, 70, raylib.Gray)
raylib.DrawRectangle(611, 48, 15, 70, raylib.Gray)
raylib.DrawRectangle(169, 48, 15, int32(((1.0-raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadPs3AxisL2))/2.0)*70), raylib.Red)
raylib.DrawRectangle(611, 48, 15, int32(((1.0-raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, raylib.GamepadPs3AxisR2))/2.0)*70), raylib.Red)
} else {
raylib.DrawText("- GENERIC GAMEPAD -", 280, 180, 20, raylib.Gray)
// TODO: Draw generic gamepad
}
raylib.DrawText(fmt.Sprintf("DETECTED AXIS [%d]:", raylib.GetGamepadAxisCount(raylib.GamepadPlayer1)), 10, 50, 10, raylib.Maroon)
for i := int32(0); i < raylib.GetGamepadAxisCount(raylib.GamepadPlayer1); i++ {
raylib.DrawText(fmt.Sprintf("AXIS %d: %.02f", i, raylib.GetGamepadAxisMovement(raylib.GamepadPlayer1, i)), 20, 70+20*i, 10, raylib.DarkGray)
}
if raylib.GetGamepadButtonPressed() != -1 {
raylib.DrawText(fmt.Sprintf("DETECTED BUTTON: %d", raylib.GetGamepadButtonPressed()), 10, 430, 10, raylib.Red)
} else {
raylib.DrawText("DETECTED BUTTON: NONE", 10, 430, 10, raylib.Gray)
}
} else {
raylib.DrawText("GP1: NOT DETECTED", 10, 10, 10, raylib.Gray)
raylib.DrawTexture(texXboxPad, 0, 0, raylib.LightGray)
}
raylib.EndDrawing()
}
raylib.UnloadTexture(texPs3Pad)
raylib.UnloadTexture(texXboxPad)
raylib.CloseWindow()
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,41 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - keyboard input")
ballPosition := raylib.NewVector2(float32(screenWidth)/2, float32(screenHeight)/2)
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
if raylib.IsKeyDown(raylib.KeyRight) {
ballPosition.X += 0.8
}
if raylib.IsKeyDown(raylib.KeyLeft) {
ballPosition.X -= 0.8
}
if raylib.IsKeyDown(raylib.KeyUp) {
ballPosition.Y -= 0.8
}
if raylib.IsKeyDown(raylib.KeyDown) {
ballPosition.Y += 0.8
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawText("move the ball with arrow keys", 10, 10, 20, raylib.DarkGray)
raylib.DrawCircleV(ballPosition, 50, raylib.Maroon)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,35 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - mouse input")
raylib.SetTargetFPS(60)
ballColor := raylib.DarkBlue
for !raylib.WindowShouldClose() {
ballPosition := raylib.GetMousePosition()
if raylib.IsMouseButtonPressed(raylib.MouseLeftButton) {
ballColor = raylib.Maroon
} else if raylib.IsMouseButtonPressed(raylib.MouseMiddleButton) {
ballColor = raylib.Lime
} else if raylib.IsMouseButtonPressed(raylib.MouseRightButton) {
ballColor = raylib.DarkBlue
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawCircleV(ballPosition, 40, ballColor)
raylib.DrawText("move ball with mouse and click mouse button to change color", 10, 10, 20, raylib.DarkGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,40 @@
package main
import (
"fmt"
"github.com/gen2brain/raylib-go/raylib"
)
var (
MaxBuildings int = 100
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - mouse wheel")
boxPositionY := screenHeight/2 - 40
scrollSpeed := int32(4) // Scrolling speed in pixels
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
boxPositionY -= raylib.GetMouseWheelMove() * scrollSpeed
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawRectangle(screenWidth/2-40, boxPositionY, 80, 80, raylib.Maroon)
raylib.DrawText("Use mouse wheel to move the cube up and down!", 10, 10, 20, raylib.Gray)
raylib.DrawText(fmt.Sprintf("Box position Y: %d", boxPositionY), 10, 40, 20, raylib.LightGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,62 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
screenWidth := int32(1080)
screenHeight := int32(600)
// NOTE: screenWidth/screenHeight should match VR device aspect ratio
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - oculus rift")
// NOTE: If device is not available, it fallbacks to default device (simulator)
raylib.InitVrDevice(raylib.HmdOculusRiftCv1) // Init VR device (Oculus Rift CV1)
camera := raylib.Camera{}
camera.Position = raylib.NewVector3(5.0, 2.0, 5.0) // Camera position
camera.Target = raylib.NewVector3(0.0, 2.0, 0.0) // Camera looking at point
camera.Up = raylib.NewVector3(0.0, 1.0, 0.0) // Camera up vector (rotation towards target)
camera.Fovy = 60.0 // Camera field-of-view Y
cubePosition := raylib.NewVector3(0.0, 0.0, 0.0)
raylib.SetCameraMode(camera, raylib.CameraFirstPerson) // Set first person camera mode
raylib.SetTargetFPS(90)
for !raylib.WindowShouldClose() {
if raylib.IsVrSimulator() {
raylib.UpdateCamera(&camera) // Update camera (simulator mode)
} else if raylib.IsVrDeviceReady() {
raylib.UpdateVrTracking(&camera) // Update camera with device tracking data
}
if raylib.IsKeyPressed(raylib.KeySpace) {
raylib.ToggleVrMode() // Toggle VR mode
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin3dMode(camera)
raylib.DrawCube(cubePosition, 2.0, 2.0, 2.0, raylib.Red)
raylib.DrawCubeWires(cubePosition, 2.0, 2.0, 2.0, raylib.Maroon)
raylib.DrawGrid(40, 1.0)
raylib.End3dMode()
raylib.DrawFPS(10, 10)
raylib.EndDrawing()
}
raylib.CloseVrDevice() // Close VR device
raylib.CloseWindow()
}

View file

@ -0,0 +1,38 @@
package main
import (
"fmt"
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - generate random values")
framesCounter := 0 // Variable used to count frames
randValue := raylib.GetRandomValue(-8, 5) // Get a random integer number between -8 and 5 (both included)
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
framesCounter++
// Every two seconds (120 frames) a new random value is generated
if ((framesCounter / 120) % 2) == 1 {
randValue = raylib.GetRandomValue(-8, 5)
framesCounter = 0
}
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawText("Every 2 seconds a new random value is generated:", 130, 100, 20, raylib.Maroon)
raylib.DrawText(fmt.Sprintf("%d", randValue), 360, 180, 80, raylib.LightGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,58 @@
package main
import (
"fmt"
"github.com/gen2brain/raylib-go/raylib"
)
const (
StorageScore = 0
StorageHiscore = 1
)
func main() {
raylib.InitWindow(800, 450, "raylib [core] example - storage save/load values")
score := int32(0)
hiscore := int32(0)
framesCounter := 0
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
if raylib.IsKeyPressed(raylib.KeyR) {
score = raylib.GetRandomValue(1000, 2000)
hiscore = raylib.GetRandomValue(2000, 4000)
}
if raylib.IsKeyPressed(raylib.KeyEnter) {
raylib.StorageSaveValue(StorageScore, score)
raylib.StorageSaveValue(StorageHiscore, hiscore)
} else if raylib.IsKeyPressed(raylib.KeySpace) {
// NOTE: If requested position could not be found, value 0 is returned
score = raylib.StorageLoadValue(StorageScore)
hiscore = raylib.StorageLoadValue(StorageHiscore)
}
framesCounter++
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.DrawText(fmt.Sprintf("SCORE: %d", score), 280, 130, 40, raylib.Maroon)
raylib.DrawText(fmt.Sprintf("HI-SCORE: %d", hiscore), 210, 200, 50, raylib.Black)
raylib.DrawText(fmt.Sprintf("frames: %d", framesCounter), 10, 10, 20, raylib.Lime)
raylib.DrawText("Press R to generate random numbers", 220, 40, 20, raylib.LightGray)
raylib.DrawText("Press ENTER to SAVE values", 250, 310, 20, raylib.LightGray)
raylib.DrawText("Press SPACE to LOAD values", 252, 350, 20, raylib.LightGray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}

View file

@ -0,0 +1,52 @@
package main
import (
"github.com/gen2brain/raylib-go/raylib"
)
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
raylib.InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free")
camera := raylib.Camera{}
camera.Position = raylib.NewVector3(10.0, 10.0, 10.0) // Camera position
camera.Target = raylib.NewVector3(0.0, 0.0, 0.0) // Camera looking at point
camera.Up = raylib.NewVector3(0.0, 1.0, 0.0) // Camera up vector (rotation towards target)
camera.Fovy = 45.0 // Camera field-of-view Y
cubePosition := raylib.NewVector3(0.0, 0.0, 0.0)
cubeScreenPosition := raylib.Vector2{}
raylib.SetCameraMode(camera, raylib.CameraFree) // Set a free camera mode
raylib.SetTargetFPS(60)
for !raylib.WindowShouldClose() {
raylib.UpdateCamera(&camera) // Update camera
// Calculate cube screen space position (with a little offset to be in top)
cubeScreenPosition = raylib.GetWorldToScreen(raylib.NewVector3(cubePosition.X, cubePosition.Y+2.5, cubePosition.Z), camera)
raylib.BeginDrawing()
raylib.ClearBackground(raylib.RayWhite)
raylib.Begin3dMode(camera)
raylib.DrawCube(cubePosition, 2.0, 2.0, 2.0, raylib.Red)
raylib.DrawCubeWires(cubePosition, 2.0, 2.0, 2.0, raylib.Maroon)
raylib.DrawGrid(10, 1.0)
raylib.End3dMode()
raylib.DrawText("Enemy: 100 / 100", int32(cubeScreenPosition.X)-raylib.MeasureText("Enemy: 100 / 100", 20)/2, int32(cubeScreenPosition.Y), 20, raylib.Black)
raylib.DrawText("Text is always on top of the cube", (screenWidth-raylib.MeasureText("Text is always on top of the cube", 20))/2, 25, 20, raylib.Gray)
raylib.EndDrawing()
}
raylib.CloseWindow()
}