Logo

0x5a.live

for different kinds of informations and explorations.

GitHub - Ayfri/PIXI-Kotlin: Kotlin/JS bindings for PIXI.js library.

Kotlin/JS bindings for PIXI.js library. Contribute to Ayfri/PIXI-Kotlin development by creating an account on GitHub.

Visit SiteGitHub - Ayfri/PIXI-Kotlin: Kotlin/JS bindings for PIXI.js library.

GitHub - Ayfri/PIXI-Kotlin: Kotlin/JS bindings for PIXI.js library.

Kotlin/JS bindings for PIXI.js library. Contribute to Ayfri/PIXI-Kotlin development by creating an account on GitHub.

Powered by 0x5a.live ๐Ÿ’—

GitHub Workflow Status Sonatype Nexus (Releases) PIXI.js Version

PIXI-Kotlin

This is a simple example of what a PIXI.js transcription in Kotlin could look like.

For now, there are all the classes, interfaces, enums, functions, type aliases, and objects. The private members are not present.

The types are from PIXI 6.5.2.

Usage

To use it in a project, just add this to your dependencies:

repositories {
	...
	mavenLocal()
}

dependencies {
	implementation("io.github.ayfri:PIXI-Kotlin:VERSION")
}

If you want to add optional PIXI modules, you have to implement them in your project.

const val PIXI_KOTLIN_VERSION = "VERSION"

dependencies {
	implementation("io.github.ayfri:PIXI-Kotlin:PIXI_KOTLIN_VERSION")
	implementation("io.github.ayfri:PIXI-Kotlin-unsafe-eval:PIXI_KOTLIN_VERSION")
}

Example

Simple application with a sprite, size change when clicking.

fun main() {
	val app = application {
		backgroundColor = Color(120, 200, 230)
		resizeTo = window
	}
	app.addToBody()
	
	val bunny = sprite("bunny.png") {
		setPositionFromWindow(0.5, 0.5)
		anchor.set(0.5)
		interactive = true
		addToApplication(app)
	}
	
	bunny.on(DisplayObjectEvents.mousedown) {
		bunny.scale.set(1.1)
	}
	
	bunny.on(DisplayObjectEvents.mouseup) {
		bunny.scale.set(1.0)
	}
}

Application with keymap and test if sprite sticks out of area.

fun main() {
	val app = application {
		resizeTo = window
	}
	app.addToBody()
	
	val speed = 10.0
	val sprite = sprite(generateBlankTexture(app) {
		width = 300.0
		height = 300.0
		color = Color(255, 0, 0)
	}) {
		addToApplication(app)
		anchor.set(0.5)
		setPositionFromApplication(app, 0.5, 0.5)
		window["sprite"] = this
	}
	
	val area = Rectangle(0.0, 0.0, app.screen.width, app.screen.height)
	
	app.renderer.on(AbstractRendererEvents.resize) {
		area.setSize(app.screen.width, app.screen.height)
	}
	
	
	val english = "en" in window.navigator.languages.elementAtOrElse(0) { window.navigator.language }
	KeyMap(
		mapOf(
			"forward" to setOf(if (english) "W" else "Z", "ArrowUp"),
			"backward" to setOf("S", "ArrowDown"),
			"left" to setOf(if (english) "A" else "Q", "ArrowLeft"),
			"right" to setOf("D", "ArrowRight"),
			"power" to setOf(" ")
		),
		ignoreCase = true
	).apply {
		onKeep("forward") {
			if ((sprite.hitBox.top + speed * 2) > area.top) sprite.y -= speed
		}
		onKeep("backward") {
			if ((sprite.hitBox.bottom - speed * 2) < area.bottom) sprite.y += speed
		}
		onKeep("left") {
			if ((sprite.hitBox.left + speed * 2) > area.left) sprite.x -= speed
		}
		onKeep("right") {
			if ((sprite.hitBox.right - speed * 2) < area.right) sprite.x += speed
		}
		
		onPress("power") {
			sprite.alpha = if (sprite.alpha == 0.1) 1.0 else 0.1
		}
	}
}

Kotlin Resources

are all listed below.

Resources

listed to get explored on!!

Made with โค๏ธ

to provide different kinds of informations and resources.