JSFiddle - React, Tailwind, and code Playground

by Ilya Karpuk

JavaScript

var Aiord = { REVISION : '0.1 Beta' }

Aiord.World = function ( params ){
	var bodies = [];
  var map = params.map || [[]];
  var tileSize = params.tileSize || 50;
  
  this.addBody = function ( a ){ bodies.push( a ); }
  this.getBodies = function (){ return bodies; }
  
  this.setMap = function ( a ){ map = a; }
  this.getMap = function (){ return map; }
}

Aiord.Body = function ( params ){
	var scope = this;
	var colliders = [];
  var isStatic = ( params.static == undefined )?false:params.static;
  var pivot = params.pivot || [ 0.5, 0.5 ];
  
  this.addCollider = function ( a ){ colliders.push( a ); return scope; }
  this.rotate = function ( angle ){
  	angle = angle * Math.PI / 180.0;
  	for ( var i = 0; i < cooliders.length; i++ ){
    	for ( var j = 0; j < colliders[0].length; j += 2 ){
      	colliders[i][j] = Math.cos(angle) * (colliders[i][j]-pivot[0]) - Math.sin(angle) * (colliders[i][j+1]-pivot[1]) + pivot[0];
        colliders[i][j+1] = Math.sin(angle) * (colliders[i][j]-pivot[0]) - Math.cos(angle) * (colliders[i][j+1]-pivot[1]) + pivot[1];
      }
    }
  };
  this.copy = function (){ return scope; }
}

Aiord.Map = function (){
	var tiles = [];
	this.setTile = function ( index, body ){
  	tiles.push( { index: ''+index, body: body } );
  }
}

Aiord.Collider = function ( verticles ){
	var verts = verticles;
}

var world = new Aiord.World( {
	tileSize: 50;
} );

var LEFT_TOP_CORNER = new Aiord.Body( { 
	static: true;
} )
.addCollider( new Aiord.Collider( [ 0.1, 1, 0.1, 0.1, 1, 0.1 ] ) )
.addCollider( new Aiord.Collider( [ 0.9, 1, 0.9, 0.9, 1, 0.9 ] ) );

var RIGHT_TOP_CORNER = LEFT_TOP_CORNER.copy().rotate( 90 );
var RIGHT_TOP_CORNER = LEFT_TOP_CORNER.copy().rotate( 90 );
var RIGHT_TOP_CORNER = LEFT_TOP_CORNER.copy().rotate( 90 );