summaryrefslogtreecommitdiff
path: root/frontend/_shared/math/rectangle.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/_shared/math/rectangle.js')
-rw-r--r--frontend/_shared/math/rectangle.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/frontend/_shared/math/rectangle.js b/frontend/_shared/math/rectangle.js
new file mode 100644
index 0000000..c24fa12
--- /dev/null
+++ b/frontend/_shared/math/rectangle.js
@@ -0,0 +1,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);
+} \ No newline at end of file