76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
rl "github.com/gen2brain/raylib-go/raylib"
|
|
)
|
|
|
|
const MAXPOINTS = 100
|
|
|
|
func spawnParticlesAsGrid(particleWidth float32, particleHeight float32, particleColumnCount int, particleRowCount int, particleList *[MAXPOINTS]rl.Vector2) {
|
|
var particleLeftCornerPos rl.Vector2 = rl.Vector2{500, 300}
|
|
|
|
for y := 0; y < (particleColumnCount); y++ {
|
|
for x := 0; x < particleRowCount; x++ {
|
|
newParticle := rl.NewVector2(particleWidth*(float32(x)/float32(particleRowCount))+particleLeftCornerPos.X, particleHeight*(float32(y)/float32(particleColumnCount))+particleLeftCornerPos.Y)
|
|
particleList[y*particleRowCount+x] = newParticle
|
|
}
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
rl.InitWindow(1200, 800, "raylib [core] example - basic window")
|
|
defer rl.CloseWindow()
|
|
|
|
rl.SetTargetFPS(60)
|
|
|
|
rl.BeginDrawing()
|
|
rl.WaitTime(1)
|
|
rl.ClearBackground(rl.RayWhite)
|
|
rl.DrawText("Congrats! You created your first window!", 190, 200, 20, rl.LightGray)
|
|
|
|
rl.EndDrawing()
|
|
|
|
var particleWidth float32 = 200
|
|
var particleHeight float32 = 200
|
|
var particleColumnCount int = 10
|
|
var particleRowCount int = 10
|
|
var particleCount int = particleRowCount * particleColumnCount
|
|
var particleRadius float32 = 5
|
|
var particleColor rl.Color = rl.Black
|
|
var gravity rl.Vector2 = rl.Vector2{0, 10}
|
|
//var stepSize float32 = 10
|
|
var particleSpeed rl.Vector2 = rl.Vector2{0, -100} //pixel pro zeitinkrement
|
|
var timeIncrement float32 = 0.01
|
|
var particleList = [MAXPOINTS]rl.Vector2{}
|
|
|
|
spawnParticlesAsGrid(particleWidth, particleHeight, particleColumnCount, particleRowCount, &particleList)
|
|
|
|
for j := float32(0); j < 20; {
|
|
rl.BeginDrawing()
|
|
var startTime time.Time = time.Now()
|
|
for i := 0; i < particleCount; i++ {
|
|
rl.DrawCircleV(particleList[i], particleRadius, particleColor)
|
|
particleList[i] =
|
|
rl.Vector2Add(
|
|
particleList[i],
|
|
rl.Vector2Scale(particleSpeed, timeIncrement))
|
|
}
|
|
rl.EndDrawing()
|
|
|
|
//fmt.Println(particleList)
|
|
particleSpeed =
|
|
rl.Vector2Add(
|
|
particleSpeed,
|
|
rl.Vector2Scale(gravity, timeIncrement))
|
|
j += timeIncrement
|
|
var endTime time.Time = time.Now()
|
|
var elapsed time.Duration = endTime.Sub(startTime)
|
|
var waitTime float64 = float64(timeIncrement) - float64(elapsed*time.Second)
|
|
rl.WaitTime(waitTime)
|
|
rl.ClearBackground(rl.RayWhite)
|
|
}
|
|
|
|
}
|