summaryrefslogtreecommitdiff
path: root/frontend/_shared/math/rectangle.js
blob: c24fa121ec35f7f776f9d057a111b6096d413ece (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/// <reference path="rigidbody2.js" />

function rectangle(pGl, pData) {
    var lBuffer = pGl.createBuffer(),
        lColor = pData.color || { x: 1, y: 0, z: 0, w: 1 };

    pGl.bindBuffer(pGl.ARRAY_BUFFER, lBuffer);

    var lBufferedData = [
        0,              0,              lColor.x, lColor.y, lColor.z, lColor.w,
        0,              pData.height,   lColor.x, lColor.y, lColor.z, lColor.w,
        pData.width,    pData.height,   lColor.x, lColor.y, lColor.z, lColor.w,
        pData.width,    pData.height,   lColor.x, lColor.y, lColor.z, lColor.w,
        pData.width,    0,              lColor.x, lColor.y, lColor.z, lColor.w,
        0,              0,              lColor.x, lColor.y, lColor.z, lColor.w
    ];

    pGl.bufferData(pGl.ARRAY_BUFFER, new Float32Array(lBufferedData), pGl.STATIC_DRAW)
    pGl.bindBuffer(pGl.ARRAY_BUFFER, undefined);

    pData.getMomentOfInertia = function() {
        return Math.pow(pData.width * pData.height, 3.0) / 12.0;
    };
        
    return makeRigidBody2({
        vertexCount:    6,
        buffer:         lBuffer, 
        width:          pData.width,
        height:         pData.height,
        model:          translateMatrix(mat4(), pData.position ? pData.position.x : 0, pData.position ? pData.position.y : 0, 0),
    }, pData);
}