diff --git a/examples/models/animation/guy.iqm b/examples/models/animation/guy.iqm new file mode 100644 index 0000000..36bed5e Binary files /dev/null and b/examples/models/animation/guy.iqm differ diff --git a/examples/models/animation/guyanim.iqm b/examples/models/animation/guyanim.iqm new file mode 100644 index 0000000..824a68a Binary files /dev/null and b/examples/models/animation/guyanim.iqm differ diff --git a/examples/models/animation/guytex.png b/examples/models/animation/guytex.png new file mode 100644 index 0000000..05a58ee Binary files /dev/null and b/examples/models/animation/guytex.png differ diff --git a/examples/models/animation/main.go b/examples/models/animation/main.go new file mode 100644 index 0000000..07ac866 --- /dev/null +++ b/examples/models/animation/main.go @@ -0,0 +1,71 @@ +package main + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +func main() { + screenWidth := int32(1280) + screenHeight := int32(800) + + rl.InitWindow(screenWidth, screenHeight, "raylib [models] example - model animation") + + camera := rl.Camera{} + camera.Position = rl.NewVector3(10.0, 15.0, 10.0) + camera.Target = rl.NewVector3(0.0, 0.0, 0.0) + camera.Up = rl.NewVector3(0.0, 1.0, 0.0) + camera.Fovy = 75.0 + camera.Projection = rl.CameraPerspective + + model := rl.LoadModel("guy.iqm") + texture := rl.LoadTexture("guytex.png") + rl.SetMaterialTexture(model.Materials, rl.MapDiffuse, texture) + + position := rl.NewVector3(0, 0, 0) + + anims := rl.LoadModelAnimations("guyanim.iqm") + animFrameCount := 0 + + rl.DisableCursor() + + rl.SetTargetFPS(60) + + for !rl.WindowShouldClose() { + + rl.UpdateCamera(&camera, rl.CameraOrbital) + + if rl.IsKeyDown(rl.KeySpace) { + animFrameCount++ + animCurrent := anims[0] + animFrameNum := animCurrent.FrameCount + + rl.UpdateModelAnimation(model, anims[0], int32(animFrameCount)) + if animFrameCount >= int(animFrameNum) { + animFrameCount = 0 + } + + } + + rl.BeginDrawing() + + rl.ClearBackground(rl.RayWhite) + + rl.BeginMode3D(camera) + + rl.DrawModelEx(model, position, rl.NewVector3(1, 0, 0), -90, rl.NewVector3(1, 1, 1), rl.White) + + rl.DrawGrid(10, 1) + + rl.EndMode3D() + + rl.DrawText("PRESS SPACE to PLAY MODEL ANIMATION", 10, 10, 20, rl.Black) + rl.DrawText("(c) Guy IQM 3D model by @culacant", 10, 30, 10, rl.Black) + + rl.EndDrawing() + } + + rl.UnloadModel(model) + rl.UnloadTexture(texture) + + rl.CloseWindow() +} diff --git a/examples/models/orthographic/main.go b/examples/models/orthographic/main.go new file mode 100644 index 0000000..882821b --- /dev/null +++ b/examples/models/orthographic/main.go @@ -0,0 +1,80 @@ +package main + +import ( + rl "github.com/gen2brain/raylib-go/raylib" +) + +func main() { + + fovyPerspective := float32(45) + widthOrthographic := float32(10) + + screenWidth := int32(1280) + screenHeight := int32(800) + + rl.InitWindow(screenWidth, screenHeight, "raylib [models] example - orthographic") + + camera := rl.Camera{} + camera.Position = rl.NewVector3(0.0, 10.0, 10.0) + camera.Target = rl.NewVector3(0.0, 0.0, 0.0) + camera.Up = rl.NewVector3(0.0, 1.0, 0.0) + camera.Fovy = fovyPerspective + camera.Projection = rl.CameraPerspective + + rl.SetTargetFPS(60) + + for !rl.WindowShouldClose() { + + rl.UpdateCamera(&camera, rl.CameraOrbital) + + if rl.IsKeyPressed(rl.KeySpace) { + + if camera.Projection == rl.CameraPerspective { + camera.Fovy = widthOrthographic + camera.Projection = rl.CameraOrthographic + } else { + camera.Fovy = fovyPerspective + camera.Projection = rl.CameraPerspective + } + + } + + rl.BeginDrawing() + + rl.ClearBackground(rl.RayWhite) + + rl.BeginMode3D(camera) + + rl.DrawCube(rl.NewVector3(-4, 0, 2), 2, 5, 2, rl.Red) + rl.DrawCubeWires(rl.NewVector3(-4, 0, 2), 2, 5, 2, rl.Gold) + rl.DrawCubeWires(rl.NewVector3(-4, 0, -2), 3, 6, 2, rl.Maroon) + + rl.DrawSphere(rl.NewVector3(-1, 0, -2), 1, rl.Green) + rl.DrawSphereWires(rl.NewVector3(1, 0, 2), 2, 16, 16, rl.Lime) + + rl.DrawCylinder(rl.NewVector3(4, 0, -2), 1, 2, 3, 4, rl.SkyBlue) + rl.DrawCylinderWires(rl.NewVector3(4, 0, -2), 1, 2, 3, 4, rl.DarkBlue) + rl.DrawCylinderWires(rl.NewVector3(4.5, -1, 2), 1, 1, 2, 6, rl.Brown) + + rl.DrawCylinder(rl.NewVector3(1, 0, -4), 0, 1.5, 3, 8, rl.Gold) + rl.DrawCylinderWires(rl.NewVector3(1, 0, -4), 0, 1.5, 3, 8, rl.Pink) + + rl.DrawGrid(10, 1) + + rl.EndMode3D() + + rl.DrawText("PRESS SPACE TO CHANGE CAMERA PROJECTION", 10, 10, 20, rl.Black) + + if camera.Projection == rl.CameraPerspective { + rl.DrawText("CURRENT CAMERA PROJECTION IS PERSPECTIVE", 10, 30, 20, rl.Black) + } else { + rl.DrawText("CURRENT CAMERA PROJECTION IS ORTHOGRAPHIC", 10, 30, 20, rl.Black) + } + + rl.DrawFPS(screenWidth-100, 10) + + rl.EndDrawing() + } + + rl.CloseWindow() +}