Skip to content
A little 2d game engine for nativescript.
TypeScript Shell JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
demo
docs
publish
src
.gitignore
.travis.yml
LICENSE
README.md
tslint.json

README.md

Tiny Engine

npm npm license

A little 2d game engine for nativescript.

Installation

tns plugin add nativescript-tinyengine

Screenshots

Screenshot

Usage

First in your XML you need to add a GridLayout

<GridLayout id="container" width="300" height="300" backgroundColor="lightgreen">
        
</GridLayout>

then in your typescript file import everything required

import { World, Entity, Vector2, OBB, CollisionResponse, Shape, Component, CircleShape, CubeShape, ImageShape } from 'nativescript-tinyengine';

now you just need to instantiate a World object on your GridLayout and start using this library. Here is a basic code.

let container: LayoutBase = page.getViewById("container");

let world: World = new World(container, 300, 300);

let cubeEntity: Entity = new Entity(new Vector2(0, 50), new Vector2(0, 0), 45, new CubeShape(20, 20, '#FFFFFF'));
world.addEntity(cubeEntity);

setInterval(function () { world.tick(); }, 20);

Documentation

You can find the documentation of the library here

Components / Collisions

Component is an interface that you can implements. This interface has the following methods:

  • onStart(entity: Entity) Called before the first frame update of the attached entity.
  • onUpdate(entity: Entity, deltatTime: number) Called at each frame update of the attached entity.
  • onCollide(collider: Entity, collided: Entity) Called when the attached entity collide with an other entity.
  • onDestroy(entity: Entity) Called when the attached entity is destroyed.
  • getClassName(): string You need to return your class name in this method.

Components can be attached throught the addComponent<T extends Component>(type: (new () => T)) of the Entity class.

Each entity got a property collisionResponse which can be set to NONE or COLLIDE. That's how are handled collision. If you want to have something custom, put the collision response to NONE and do your custom logic into onCollide(collider: Entity, collided: Entity) of a component.

License

Apache License Version 2.0, May 2019

You can’t perform that action at this time.