"atomic component"; // Rope Vine var component = function (self) { var NUM_OBJECTS = 10; var node = self.node; //set current node position to 0, 0, 0 node.position = [0, 0, 0]; self.start = function() { var x = self.startPosition[0]; var y = self.startPosition[1]; // create the node body var groundBody = node.createComponent("RigidBody2D"); //do not cast shadows groundBody.castShadows = false; var prevBody = groundBody; for (var i = 0; i < NUM_OBJECTS; i++) { //create a new vine node var vnode = node.scene.createChild("RigidBody"); //add StaticSprite2D to the created node var sprite2D = vnode.createComponent("StaticSprite2D"); //set its sprite sprite2D.sprite = Atomic.cache.getResource("Sprite2D", "Sprites/vine.png"); //create rigid body component var vbody = vnode.createComponent("RigidBody2D"); //do not cast shadows vbody.castShadows = false; //set body type to Dynamic vbody.bodyType = Atomic.BodyType2D.BT_DYNAMIC; // Create box var vbox = vnode.createComponent("CollisionBox2D"); // Set friction vbox.friction = .2; // Set mask bits. vbox.maskBits = 0xFFFF & ~0x0002; //set vine node position vnode.position = [x + 0.5 + 1.0 * i, y, 0.0]; //set box collision size vbox.size = [1.0, 0.1]; //set density vbox.density = 5.0; //set category bits vbox.categoryBits = 0x0001; if (i == NUM_OBJECTS - 1) vbody.angularDamping = 0.4; //create joint component var joint = vnode.createComponent("ConstraintRevolute2D"); //join it to the previous body joint.otherBody = prevBody; //set ancor joint.anchor = [x + i, y]; joint.collideConnected = false; prevBody = vbody; } //create ConstraintRope2D component var constraintRope = node.createComponent("ConstraintRope2D"); //set other body to the previous body constraintRope.otherBody = prevBody; constraintRope.ownerBodyAnchor = [x, y]; constraintRope.maxLength = (NUM_OBJECTS + 0.01); }; }; exports.component = component;