| OLD | NEW |
| 1 /******************************************************************************* | 1 /******************************************************************************* |
| 2 * Copyright (c) 2015, Daniel Murphy, Google | 2 * Copyright (c) 2015, Daniel Murphy, Google |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without modificati
on, | 5 * Redistribution and use in source and binary forms, with or without modificati
on, |
| 6 * are permitted provided that the following conditions are met: | 6 * are permitted provided that the following conditions are met: |
| 7 * * Redistributions of source code must retain the above copyright notice, | 7 * * Redistributions of source code must retain the above copyright notice, |
| 8 * this list of conditions and the following disclaimer. | 8 * this list of conditions and the following disclaimer. |
| 9 * * Redistributions in binary form must reproduce the above copyright notice, | 9 * * Redistributions in binary form must reproduce the above copyright notice, |
| 10 * this list of conditions and the following disclaimer in the documentation | 10 * this list of conditions and the following disclaimer in the documentation |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 } | 180 } |
| 181 } | 181 } |
| 182 | 182 |
| 183 void _initializeRegisters() { | 183 void _initializeRegisters() { |
| 184 _addType(_pool.getCircleContactStack(), ShapeType.CIRCLE, ShapeType.CIRCLE); | 184 _addType(_pool.getCircleContactStack(), ShapeType.CIRCLE, ShapeType.CIRCLE); |
| 185 _addType( | 185 _addType( |
| 186 _pool.getPolyCircleContactStack(), ShapeType.POLYGON, ShapeType.CIRCLE); | 186 _pool.getPolyCircleContactStack(), ShapeType.POLYGON, ShapeType.CIRCLE); |
| 187 _addType(_pool.getPolyContactStack(), ShapeType.POLYGON, ShapeType.POLYGON); | 187 _addType(_pool.getPolyContactStack(), ShapeType.POLYGON, ShapeType.POLYGON); |
| 188 _addType( | 188 _addType( |
| 189 _pool.getEdgeCircleContactStack(), ShapeType.EDGE, ShapeType.CIRCLE); | 189 _pool.getEdgeCircleContactStack(), ShapeType.EDGE, ShapeType.CIRCLE); |
| 190 _addType(_pool.getEdgePolyContactStack(), ShapeType.EDGE, ShapeType.POLYGON)
; | 190 _addType( |
| 191 _pool.getEdgePolyContactStack(), ShapeType.EDGE, ShapeType.POLYGON); |
| 191 _addType( | 192 _addType( |
| 192 _pool.getChainCircleContactStack(), ShapeType.CHAIN, ShapeType.CIRCLE); | 193 _pool.getChainCircleContactStack(), ShapeType.CHAIN, ShapeType.CIRCLE); |
| 193 _addType( | 194 _addType( |
| 194 _pool.getChainPolyContactStack(), ShapeType.CHAIN, ShapeType.POLYGON); | 195 _pool.getChainPolyContactStack(), ShapeType.CHAIN, ShapeType.POLYGON); |
| 195 } | 196 } |
| 196 | 197 |
| 197 DestructionListener getDestructionListener() { | 198 DestructionListener getDestructionListener() { |
| 198 return _destructionListener; | 199 return _destructionListener; |
| 199 } | 200 } |
| 200 | 201 |
| (...skipping 913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1114 void solveTOI(final TimeStep step) { | 1115 void solveTOI(final TimeStep step) { |
| 1115 final Island island = toiIsland; | 1116 final Island island = toiIsland; |
| 1116 island.init(2 * Settings.maxTOIContacts, Settings.maxTOIContacts, 0, | 1117 island.init(2 * Settings.maxTOIContacts, Settings.maxTOIContacts, 0, |
| 1117 _contactManager.contactListener); | 1118 _contactManager.contactListener); |
| 1118 if (_stepComplete) { | 1119 if (_stepComplete) { |
| 1119 for (Body b = bodyList; b != null; b = b._next) { | 1120 for (Body b = bodyList; b != null; b = b._next) { |
| 1120 b._flags &= ~Body.ISLAND_FLAG; | 1121 b._flags &= ~Body.ISLAND_FLAG; |
| 1121 b._sweep.alpha0 = 0.0; | 1122 b._sweep.alpha0 = 0.0; |
| 1122 } | 1123 } |
| 1123 | 1124 |
| 1124 for (Contact c = _contactManager.contactList; | 1125 for (Contact c = _contactManager.contactList; c != null; c = c._next) { |
| 1125 c != null; | |
| 1126 c = c._next) { | |
| 1127 // Invalidate TOI | 1126 // Invalidate TOI |
| 1128 c._flags &= ~(Contact.TOI_FLAG | Contact.ISLAND_FLAG); | 1127 c._flags &= ~(Contact.TOI_FLAG | Contact.ISLAND_FLAG); |
| 1129 c._toiCount = 0; | 1128 c._toiCount = 0; |
| 1130 c._toi = 1.0; | 1129 c._toi = 1.0; |
| 1131 } | 1130 } |
| 1132 } | 1131 } |
| 1133 | 1132 |
| 1134 // Find TOI events and solve them. | 1133 // Find TOI events and solve them. |
| 1135 for (;;) { | 1134 for (;;) { |
| 1136 // Find the first TOI. | 1135 // Find the first TOI. |
| 1137 Contact minContact = null; | 1136 Contact minContact = null; |
| 1138 double minAlpha = 1.0; | 1137 double minAlpha = 1.0; |
| 1139 | 1138 |
| 1140 for (Contact c = _contactManager.contactList; | 1139 for (Contact c = _contactManager.contactList; c != null; c = c._next) { |
| 1141 c != null; | |
| 1142 c = c._next) { | |
| 1143 // Is this contact disabled? | 1140 // Is this contact disabled? |
| 1144 if (c.isEnabled() == false) { | 1141 if (c.isEnabled() == false) { |
| 1145 continue; | 1142 continue; |
| 1146 } | 1143 } |
| 1147 | 1144 |
| 1148 // Prevent excessive sub-stepping. | 1145 // Prevent excessive sub-stepping. |
| 1149 if (c._toiCount > Settings.maxSubSteps) { | 1146 if (c._toiCount > Settings.maxSubSteps) { |
| 1150 continue; | 1147 continue; |
| 1151 } | 1148 } |
| 1152 | 1149 |
| (...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1939 _point.setFrom(input.p1).scale(1 - fraction).add(_temp); | 1936 _point.setFrom(input.p1).scale(1 - fraction).add(_temp); |
| 1940 return callback.reportFixture(fixture, _point, _output.normal, fraction); | 1937 return callback.reportFixture(fixture, _point, _output.normal, fraction); |
| 1941 } | 1938 } |
| 1942 | 1939 |
| 1943 return input.maxFraction; | 1940 return input.maxFraction; |
| 1944 } | 1941 } |
| 1945 | 1942 |
| 1946 BroadPhase broadPhase; | 1943 BroadPhase broadPhase; |
| 1947 RayCastCallback callback; | 1944 RayCastCallback callback; |
| 1948 } | 1945 } |
| OLD | NEW |