m_depthBuffer[i] = w < 0.8f ? 0 : Float.MAX_VALUE; int interationCount = group.getParticleCount(); for (int t = 0; t < interationCount; t++) { boolean updated = false;
public float getMass() { updateStatistics(); return m_mass; }
void solveRigid(final TimeStep step) { for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { if ((group.m_groupFlags & ParticleGroupType.b2_rigidParticleGroup) != 0) { group.updateStatistics(); Vec2 temp = tempVec; Vec2 cross = tempVec2; Rot rotation = tempRot; rotation.set(step.dt * group.m_angularVelocity); Rot.mulToOutUnsafe(rotation, group.m_center, cross); temp.set(group.m_linearVelocity).mulLocal(step.dt).addLocal(group.m_center).subLocal(cross); tempXf.p.set(temp); tempXf.q.set(rotation); Transform.mulToOut(tempXf, group.m_transform, group.m_transform); final Transform velocityTransform = tempXf2; velocityTransform.p.x = step.inv_dt * tempXf.p.x; velocityTransform.p.y = step.inv_dt * tempXf.p.y; velocityTransform.q.s = step.inv_dt * tempXf.q.s; velocityTransform.q.c = step.inv_dt * (tempXf.q.c - 1); for (int i = group.m_firstIndex; i < group.m_lastIndex; i++) { Transform.mulToOutUnsafe(velocityTransform, m_positionBuffer.data[i], m_velocityBuffer.data[i]); } } } }
ParticleGroup group = new ParticleGroup(); group.m_system = this; group.m_firstIndex = firstIndex;
@Override public void mouseDrag(Vec2 p, int button) { super.mouseDrag(p, button); if (m_drawing) { pshape.m_p.set(p); pshape.m_radius = 2.0f; pxf.setIdentity(); m_world.destroyParticlesInShape(pshape, pxf); ppd.shape = pshape; ppd.color = color; ppd.flags = m_particleFlags; ppd.groupFlags = m_groupFlags; ParticleGroup group = m_world.createParticleGroup(ppd); if (m_lastGroup != null && group.getGroupFlags() == m_lastGroup.getGroupFlags()) { m_world.joinParticleGroups(m_lastGroup, group); } else { m_lastGroup = group; } mouseTracing = false; } }
void solveRigid(final TimeStep step) { for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { if ((group.m_groupFlags & ParticleGroupType.b2_rigidParticleGroup) != 0) { group.updateStatistics(); Vec2 temp = tempVec; Vec2 cross = tempVec2; Rot rotation = tempRot; rotation.set(step.dt * group.m_angularVelocity); Rot.mulToOutUnsafe(rotation, group.m_center, cross); temp.set(group.m_linearVelocity).mulLocal(step.dt).addLocal(group.m_center).subLocal(cross); tempXf.p.set(temp); tempXf.q.set(rotation); Transform.mulToOut(tempXf, group.m_transform, group.m_transform); final Transform velocityTransform = tempXf2; velocityTransform.p.x = step.inv_dt * tempXf.p.x; velocityTransform.p.y = step.inv_dt * tempXf.p.y; velocityTransform.q.s = step.inv_dt * tempXf.q.s; velocityTransform.q.c = step.inv_dt * (tempXf.q.c - 1); for (int i = group.m_firstIndex; i < group.m_lastIndex; i++) { Transform.mulToOutUnsafe(velocityTransform, m_positionBuffer.data[i], m_velocityBuffer.data[i]); } } } }
for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { group.m_firstIndex = newIndices.getIndex(group.m_firstIndex); group.m_lastIndex = newIndices.getIndex(group.m_lastIndex - 1) + 1;
ParticleGroup group = new ParticleGroup(); group.m_system = this; group.m_firstIndex = firstIndex;
public Vec2 getCenter() { updateStatistics(); return m_center; }
void solveRigid(final TimeStep step) { for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { if ((group.m_groupFlags & ParticleGroupType.b2_rigidParticleGroup) != 0) { group.updateStatistics(); Vec2 temp = tempVec; Vec2 cross = tempVec2; Rot rotation = tempRot; rotation.set(step.dt * group.m_angularVelocity); Rot.mulToOutUnsafe(rotation, group.m_center, cross); temp.set(group.m_linearVelocity).mulLocal(step.dt).addLocal(group.m_center).subLocal(cross); tempXf.p.set(temp); tempXf.q.set(rotation); Transform.mulToOut(tempXf, group.m_transform, group.m_transform); final Transform velocityTransform = tempXf2; velocityTransform.p.x = step.inv_dt * tempXf.p.x; velocityTransform.p.y = step.inv_dt * tempXf.p.y; velocityTransform.q.s = step.inv_dt * tempXf.q.s; velocityTransform.q.c = step.inv_dt * (tempXf.q.c - 1); for (int i = group.m_firstIndex; i < group.m_lastIndex; i++) { Transform.mulToOutUnsafe(velocityTransform, m_positionBuffer.data[i], m_velocityBuffer.data[i]); } } } }
for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { m_allGroupFlags |= group.m_groupFlags;
m_depthBuffer[i] = w < 0.8f ? 0 : Float.MAX_VALUE; int interationCount = group.getParticleCount(); for (int t = 0; t < interationCount; t++) { boolean updated = false;
ParticleGroup group = new ParticleGroup(); group.m_system = this; group.m_firstIndex = firstIndex;
public float getInertia() { updateStatistics(); return m_inertia; }
void solveRigid(final TimeStep step) { for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { if ((group.m_groupFlags & ParticleGroupType.b2_rigidParticleGroup) != 0) { group.updateStatistics(); Vec2 temp = tempVec; Vec2 cross = tempVec2; Rotation rotation = tempRotation; rotation.set(step.dt * group.m_angularVelocity); Rotation.mulToOutUnsafe(rotation, group.m_center, cross); temp.set(group.m_linearVelocity).mulLocal(step.dt).addLocal(group.m_center).subLocal(cross); tempXf.p.set(temp); tempXf.q.set(rotation); Transform.mulToOut(tempXf, group.m_transform, group.m_transform); final Transform velocityTransform = tempXf2; velocityTransform.p.x = step.inv_dt * tempXf.p.x; velocityTransform.p.y = step.inv_dt * tempXf.p.y; velocityTransform.q.s = step.inv_dt * tempXf.q.s; velocityTransform.q.c = step.inv_dt * (tempXf.q.c - 1); for (int i = group.m_firstIndex; i < group.m_lastIndex; i++) { Transform.mulToOutUnsafe(velocityTransform, m_positionBuffer.data[i], m_velocityBuffer.data[i]); } } } }
m_depthBuffer[i] = w < 0.8f ? 0 : Float.MAX_VALUE; int interationCount = group.getParticleCount(); for (int t = 0; t < interationCount; t++) { boolean updated = false;
ParticleGroup group = new ParticleGroup(); group.m_system = this; group.m_firstIndex = firstIndex;
public Vec2 getLinearVelocity() { updateStatistics(); return m_linearVelocity; }