func onStart(glctx gl.Context) { var err error program, err = glutil.CreateProgram(glctx, vertexShader, fragmentShader) if err != nil { log.Printf("error creating GL program: %v", err) return } glctx.Enable(gl.DEPTH_TEST) triBuf = glctx.CreateBuffer() glctx.BindBuffer(gl.ARRAY_BUFFER, triBuf) glctx.BufferData(gl.ARRAY_BUFFER, triangleData, gl.STATIC_DRAW) position = glctx.GetAttribLocation(program, "vPos") color = glctx.GetAttribLocation(program, "vCol") normals = glctx.GetAttribLocation(program, "vNorm") projection = glctx.GetUniformLocation(program, "proj") view = glctx.GetUniformLocation(program, "view") model = glctx.GetUniformLocation(program, "model") tint = glctx.GetUniformLocation(program, "tint") normalMatrix = glctx.GetUniformLocation(program, "normalMatrix") lightIntensity = glctx.GetUniformLocation(program, "light.intensities") lightPos = glctx.GetUniformLocation(program, "light.position") arcball = NewArcBall(mgl32.Vec3{0, 0, 0}, mgl32.Vec3{0, 10, 10}, mgl32.Vec3{0, 1, 0}) white = mgl32.Vec4{1.0, 1.0, 1.0, 1.0} red = mgl32.Vec4{1.0, 0.0, 0.0, 1.0} lastUpdate = time.Now() images = glutil.NewImages(glctx) fps = debug.NewFPS(images) err = al.OpenDevice() if err != nil { log.Printf("Err: %+v", err) } al.SetListenerPosition(al.Vector{0, 0, 0}) al.SetListenerGain(1.0) piano = NewPiano() }
func (as *AudioSystem) New(*ecs.World) { as.System = ecs.NewSystem() if as.HeightModifier == 0 { as.HeightModifier = defaultHeightModifier } if err := al.OpenDevice(); err != nil { log.Println("Error initializing AudioSystem:", err) return } Mailbox.Listen("CameraMessage", func(msg Message) { _, ok := msg.(CameraMessage) if !ok { return } // Hopefully not that much of an issue, when we receive it before the CameraSystem does // TODO: but it is when the CameraMessage is not Incremental (i.e. the changes are big) al.SetListenerPosition(al.Vector{cam.X() / Width(), cam.Y() / Height(), cam.Z() * as.HeightModifier}) }) }