mirror of
https://github.com/yeslayla/golang-game-framework.git
synced 2025-12-06 17:23:25 +01:00
Initial commit
This commit is contained in:
48
node/camera2d.go
Normal file
48
node/camera2d.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package node
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/manleydev/golang-game-framework/rendering"
|
||||
)
|
||||
|
||||
type Camera2D struct {
|
||||
Node2D
|
||||
Zoom float64
|
||||
camera *rendering.Camera2D
|
||||
renderer *rendering.Renderer2D
|
||||
}
|
||||
|
||||
func (camera *Camera2D) Update() error {
|
||||
if err := camera.Node2D.Update(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
camRef := *(camera.camera)
|
||||
camRef.SetOffset(camera.GetGlobalPosition())
|
||||
camRef.SetZoom(camera.Zoom)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (camera *Camera2D) Enable() error {
|
||||
if camera.camera == nil {
|
||||
return errors.New("camera is nil")
|
||||
}
|
||||
return (*camera.renderer).SetCamera(camera.camera)
|
||||
}
|
||||
|
||||
func (node *Camera2D) AddChild(child INode) {
|
||||
node.internalAddChild(node, child)
|
||||
}
|
||||
|
||||
func NewCamera2D(renderer *rendering.Renderer2D, cam *rendering.Camera2D) *Camera2D {
|
||||
camera := Camera2D{
|
||||
Node2D: NewNode2D(),
|
||||
camera: cam,
|
||||
renderer: renderer,
|
||||
Zoom: 1.0,
|
||||
}
|
||||
|
||||
return &camera
|
||||
}
|
||||
Reference in New Issue
Block a user