| 8 | namespace Star { |
| 9 | |
| 10 | PhysicsObject::PhysicsObject(ObjectConfigConstPtr config, Json const& parameters) : Object(std::move(config), parameters) { |
| 11 | for (auto const& p : configValue("physicsForces", JsonObject()).iterateObject()) { |
| 12 | auto& forceConfig = m_physicsForces[p.first]; |
| 13 | |
| 14 | forceConfig.forceRegion = jsonToPhysicsForceRegion(p.second); |
| 15 | forceConfig.enabled.set(p.second.getBool("enabled", true)); |
| 16 | } |
| 17 | |
| 18 | for (auto const& p : configValue("physicsCollisions", JsonObject()).iterateObject()) { |
| 19 | auto& collisionConfig = m_physicsCollisions[p.first]; |
| 20 | collisionConfig.movingCollision = PhysicsMovingCollision::fromJson(p.second); |
| 21 | collisionConfig.xPosition.set(take(collisionConfig.movingCollision.position[0])); |
| 22 | collisionConfig.yPosition.set(take(collisionConfig.movingCollision.position[1])); |
| 23 | collisionConfig.enabled.set(p.second.getBool("enabled", true)); |
| 24 | } |
| 25 | |
| 26 | m_physicsForces.sortByKey(); |
| 27 | for (auto& p : m_physicsForces) |
| 28 | m_netGroup.addNetElement(&p.second.enabled); |
| 29 | |
| 30 | m_physicsCollisions.sortByKey(); |
| 31 | for (auto& p : m_physicsCollisions) { |
| 32 | m_netGroup.addNetElement(&p.second.xPosition); |
| 33 | m_netGroup.addNetElement(&p.second.yPosition); |
| 34 | p.second.xPosition.setInterpolator(lerp<float, float>); |
| 35 | p.second.yPosition.setInterpolator(lerp<float, float>); |
| 36 | m_netGroup.addNetElement(&p.second.enabled); |
| 37 | } |
| 38 | } |
| 39 | |
| 40 | void PhysicsObject::enableInterpolation(float extrapolationHint) { |
| 41 | m_netGroup.enableNetInterpolation(extrapolationHint); |
nothing calls this directly
no test coverage detected