public float getAngularVelocity() { updateStatistics(); return m_angularVelocity; }
private 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;
private 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 float getMass() { updateStatistics(); return m_mass; }
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;
public float getInertia() { updateStatistics(); return m_inertia; }
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;
public float getInertia() { updateStatistics(); return m_inertia; }
for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { m_allGroupFlags |= group.m_groupFlags;
public Vec2 getCenter() { updateStatistics(); return m_center; }
for (ParticleGroup group = m_groupList; group != null; group = group.getNext()) { m_allGroupFlags |= group.m_groupFlags;
public Vec2 getLinearVelocity() { updateStatistics(); return m_linearVelocity; }
public Vec2 getCenter() { updateStatistics(); return m_center; }
public float getMass() { updateStatistics(); return m_mass; }