Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
github.com/melonFunction/ebiten-camera
A simple camera implementation based on vrld's hump for LÖVE
📖 Docs
Look at the examples to see how to use the library.
Here is a stripped-down version of the example code, highlighting the most important functions.
It won't run, so please don't bother trying it 😄
var (
cam *ebitenCamera.Camera
// other vars excluded, such as tiles, PlayerX etc
)
func main() {
w,h := 640, 480
// excluding normal ebiten setup
cam = camera.NewCamera(w, h, 0, 0, 0, 1)
}
func (g *Game) Update() error {
// Follows the player
cam.SetPosition(PlayerX+float64(PlayerSize)/2, PlayerY+float64(PlayerSize)/2)
return nil
}
func (g *Game) Draw(screen *ebiten.Image) {
// Clear camera surface
cam.Surface.Clear()
cam.Surface.Fill(color.RGBA{255, 128, 128, 255})
// Draw tiles
tileOps := &ebiten.DrawImageOptions{}
cam.Surface.DrawImage(tiles, cam.GetTranslation(tileOps, 0, 0))
// Draw the player
playerOps := &ebiten.DrawImageOptions{}
playerOps = cam.GetRotation(playerOps, PlayerRot, -float64(PlayerSize)/2, -float64(PlayerSize)/2)
playerOps = cam.GetScale(playerOps, 0.5, 0.5)
playerOps = cam.GetSkew(playerOps, 0, -0.5)
playerOps = cam.GetTranslation(playerOps, PlayerX, PlayerY)
cam.Surface.DrawImage(player, playerOps)
// Draw to screen and zoom
cam.Blit(screen)
}
When setting the *ebiten.DrawImageOptions
in the ebitenCamera.Surface.DrawImage
function, the order of operation is
important!
Rotate, Scale, Skew and then Translate!
My example doesn't include a range for the camera's zoom to highlight what happens if you zoom too far in either direction. This is because I use a render texture to draw everything to, and I simply resize this when zooming in or out. This texture has a max size, causing the positioning logic to stop centering it. I'll probably change this at some point (unless you beat me to it with a PR, of course 😆)
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.