From 6b32d0f0c4714fec4bb481948ff4b18539450239 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 20 Feb 2022 14:33:35 +0700 Subject: [PATCH] Rename Body to B2Body and Fixture to B2Fixture --- .../ru/dbotthepony/kbox2d/api/Contact.kt | 4 +- .../ru/dbotthepony/kbox2d/api/Fixture.kt | 5 +- .../kotlin/ru/dbotthepony/kbox2d/api/Joint.kt | 100 +++++++++--------- .../dbotthepony/kbox2d/api/WorldCallbacks.kt | 10 +- .../kbox2d/dynamics/{Body.kt => B2Body.kt} | 42 ++++---- .../dynamics/{Fixture.kt => B2Fixture.kt} | 9 +- .../ru/dbotthepony/kbox2d/dynamics/B2World.kt | 26 ++--- .../kbox2d/dynamics/ContactManager.kt | 12 +-- .../dynamics/contact/AbstractContact.kt | 37 ++++--- .../dynamics/contact/ChainCircleContact.kt | 6 +- .../dynamics/contact/ChainPolygonContact.kt | 6 +- .../kbox2d/dynamics/contact/CircleContact.kt | 6 +- .../dynamics/contact/EdgeCircleContact.kt | 6 +- .../dynamics/contact/EdgePolygonContact.kt | 6 +- .../dynamics/contact/PolygonCircleContact.kt | 6 +- .../kbox2d/dynamics/contact/PolygonContact.kt | 6 +- .../kbox2d/dynamics/internal/ContactSolver.kt | 6 +- .../kbox2d/dynamics/internal/Island.kt | 8 +- .../kbox2d/dynamics/joint/AbstractJoint.kt | 10 +- .../kbox2d/dynamics/joint/GearJoint.kt | 10 +- .../kotlin/ru/dbotthepony/kstarbound/Main.kt | 4 +- 21 files changed, 161 insertions(+), 164 deletions(-) rename src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/{Body.kt => B2Body.kt} (95%) rename src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/{Fixture.kt => B2Fixture.kt} (98%) diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Contact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Contact.kt index 5b675a13..d7076a93 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Contact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Contact.kt @@ -1,6 +1,6 @@ package ru.dbotthepony.kbox2d.api -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kbox2d.dynamics.contact.AbstractContact import kotlin.math.sqrt @@ -33,7 +33,7 @@ data class ContactRegister( * nodes, one for each attached body. */ data class ContactEdge( - val other: Body, ///< provides quick access to the other body attached. + val other: B2Body, ///< provides quick access to the other body attached. val contact: AbstractContact, ///< the contact var prev: ContactEdge? = null, ///< the previous contact edge in the body's contact list var next: ContactEdge? = null, ///< the next contact edge in the body's contact list diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Fixture.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Fixture.kt index faec56a4..0dc7fc40 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Fixture.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Fixture.kt @@ -1,9 +1,8 @@ package ru.dbotthepony.kbox2d.api import ru.dbotthepony.kbox2d.collision.e_nullProxy -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture import ru.dbotthepony.kvector.util2d.AABB -import ru.dbotthepony.kvector.vector.ndouble.Vector2d sealed interface IFilter { /** @@ -81,7 +80,7 @@ data class FixtureDef( data class FixtureProxy( var aabb: AABB, - val fixture: Fixture, + val fixture: B2Fixture, val childIndex: Int, ) { private var setProxyID = false diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Joint.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Joint.kt index 18e8dd28..52e862a5 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Joint.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/Joint.kt @@ -1,6 +1,6 @@ package ru.dbotthepony.kbox2d.api -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kbox2d.dynamics.joint.AbstractJoint import ru.dbotthepony.kvector.vector.ndouble.Vector2d import kotlin.math.PI @@ -13,8 +13,8 @@ data class StiffnessResult(val stiffness: Double, val damping: Double) fun b2LinearStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body?, - bodyB: Body?, + bodyA: B2Body?, + bodyB: B2Body?, ): StiffnessResult { val massA = bodyA?.mass ?: 0.0 val massB = bodyB?.mass ?: 0.0 @@ -42,8 +42,8 @@ fun b2LinearStiffness( fun b2AngularStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body?, - bodyB: Body?, + bodyA: B2Body?, + bodyB: B2Body?, ): StiffnessResult { val inertiaA = bodyA?.inertia ?: 0.0 val inertiaB = bodyB?.inertia ?: 0.0 @@ -92,13 +92,13 @@ data class Jacobian( * nodes, one for each attached body. */ class JointEdge( - other: Body?, ///< provides quick access to the other body attached. + other: B2Body?, ///< provides quick access to the other body attached. val joint: AbstractJoint, ///< the joint var prev: JointEdge? = null, ///< the previous joint edge in the body's joint list var next: JointEdge? = null ///< the next joint edge in the body's joint list ) { - val otherNullable: Body? = other - val other: Body get() = checkNotNull(otherNullable) { "Other body is not present" } + val otherNullable: B2Body? = other + val other: B2Body get() = checkNotNull(otherNullable) { "Other body is not present" } } sealed interface IJointDef { @@ -110,12 +110,12 @@ sealed interface IJointDef { /** * The first attached body. */ - val bodyA: Body? + val bodyA: B2Body? /** * The second attached body. */ - val bodyB: Body? + val bodyB: B2Body? /** * Set this flag to true if the attached bodies should collide. @@ -129,8 +129,8 @@ sealed interface IJointDef { } class DistanceJointDef( - b1: Body, - b2: Body, + b1: B2Body, + b2: B2Body, anchor1: Vector2d, anchor2: Vector2d ) : IJointDef { @@ -161,8 +161,8 @@ class DistanceJointDef( */ val damping: Double = 0.0 - override var bodyA: Body = b1 - override var bodyB: Body = b2 + override var bodyA: B2Body = b1 + override var bodyB: B2Body = b2 override var collideConnected: Boolean = false override var userData: Any? = null @@ -186,13 +186,13 @@ class DistanceJointDef( } class RevoluteJointDef( - b1: Body, - b2: Body, + b1: B2Body, + b2: B2Body, anchor: Vector2d, ) : IJointDef { override val type: JointType = JointType.REVOLUTE - override var bodyA: Body = b1 - override var bodyB: Body = b2 + override var bodyA: B2Body = b1 + override var bodyB: B2Body = b2 override var collideConnected: Boolean = false override var userData: Any? = null @@ -245,14 +245,14 @@ class RevoluteJointDef( } class PrismaticJointDef( - b1: Body, - b2: Body, + b1: B2Body, + b2: B2Body, anchor: Vector2d, axis: Vector2d, ) : IJointDef { override val type: JointType = JointType.PRISMATIC - override var bodyA: Body = b1 - override var bodyB: Body = b2 + override var bodyA: B2Body = b1 + override var bodyB: B2Body = b2 override var collideConnected: Boolean = false override var userData: Any? = null @@ -312,8 +312,8 @@ class PrismaticJointDef( * two dynamic body anchor points, and a pulley ratio. */ class PulleyJointDef( - b1: Body, - b2: Body, + b1: B2Body, + b2: B2Body, /** * The first ground anchor in world coordinates. This point never moves. @@ -330,8 +330,8 @@ class PulleyJointDef( ratio: Double, ) : IJointDef { override val type: JointType = JointType.PULLEY - override var bodyA: Body = b1 - override var bodyB: Body = b2 + override var bodyA: B2Body = b1 + override var bodyB: B2Body = b2 override var collideConnected: Boolean = false override var userData: Any? = null @@ -376,8 +376,8 @@ class PulleyJointDef( * @warning bodyB on the input joints must both be dynamic */ class GearJointDef( - override var bodyA: Body, - override var bodyB: Body, + override var bodyA: B2Body, + override var bodyB: B2Body, /** * The first revolute/prismatic joint attached to the gear joint. @@ -417,8 +417,8 @@ class MouseJointDef( */ var target: Vector2d, - override var bodyB: Body, - override val bodyA: Body? = null, + override var bodyB: B2Body, + override val bodyA: B2Body? = null, /** * The maximum constraint force that can be exerted @@ -437,8 +437,8 @@ class MouseJointDef( fun linearStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body?, - bodyB: Body? + bodyA: B2Body?, + bodyB: B2Body? ): MouseJointDef { val (stiffness, damping) = b2LinearStiffness(frequencyHertz, dampingRatio, bodyA, bodyB) this.stiffness = stiffness @@ -449,8 +449,8 @@ class MouseJointDef( fun angularStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body?, - bodyB: Body? + bodyA: B2Body?, + bodyB: B2Body? ): MouseJointDef { val (stiffness, damping) = b2AngularStiffness(frequencyHertz, dampingRatio, bodyA, bodyB) this.stiffness = stiffness @@ -468,8 +468,8 @@ class MouseJointDef( * anchors and a local axis helps when saving and loading a game. */ class WheelJointDef( - override var bodyA: Body, - override var bodyB: Body, + override var bodyA: B2Body, + override var bodyB: B2Body, anchor: Vector2d, axis: Vector2d, @@ -535,8 +535,8 @@ class WheelJointDef( fun linearStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body = this.bodyA, - bodyB: Body = this.bodyB + bodyA: B2Body = this.bodyA, + bodyB: B2Body = this.bodyB ): WheelJointDef { val (stiffness, damping) = b2LinearStiffness(frequencyHertz, dampingRatio, bodyA, bodyB) this.stiffness = stiffness @@ -547,8 +547,8 @@ class WheelJointDef( fun angularStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body = this.bodyA, - bodyB: Body = this.bodyB + bodyA: B2Body = this.bodyA, + bodyB: B2Body = this.bodyB ): WheelJointDef { val (stiffness, damping) = b2AngularStiffness(frequencyHertz, dampingRatio, bodyA, bodyB) this.stiffness = stiffness @@ -563,8 +563,8 @@ class WheelJointDef( * of the anchor points is important for computing the reaction torque. */ class WeldJointDef( - override var bodyA: Body, - override var bodyB: Body, + override var bodyA: B2Body, + override var bodyB: B2Body, anchor: Vector2d, /** @@ -599,8 +599,8 @@ class WeldJointDef( fun linearStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body = this.bodyA, - bodyB: Body = this.bodyB + bodyA: B2Body = this.bodyA, + bodyB: B2Body = this.bodyB ): WeldJointDef { val (stiffness, damping) = b2LinearStiffness(frequencyHertz, dampingRatio, bodyA, bodyB) this.stiffness = stiffness @@ -611,8 +611,8 @@ class WeldJointDef( fun angularStiffness( frequencyHertz: Double, dampingRatio: Double, - bodyA: Body = this.bodyA, - bodyB: Body = this.bodyB + bodyA: B2Body = this.bodyA, + bodyB: B2Body = this.bodyB ): WeldJointDef { val (stiffness, damping) = b2AngularStiffness(frequencyHertz, dampingRatio, bodyA, bodyB) this.stiffness = stiffness @@ -625,8 +625,8 @@ class WeldJointDef( * Friction joint definition. */ class FrictionJointDef( - override var bodyA: Body, - override var bodyB: Body, + override var bodyA: B2Body, + override var bodyB: B2Body, anchor: Vector2d, /** @@ -656,8 +656,8 @@ class FrictionJointDef( } class MotorJointDef( - override var bodyA: Body, - override var bodyB: Body, + override var bodyA: B2Body, + override var bodyB: B2Body, /** * The maximum motor force in N. diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/WorldCallbacks.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/WorldCallbacks.kt index 14434025..a0bfc0d4 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/WorldCallbacks.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/api/WorldCallbacks.kt @@ -1,6 +1,6 @@ package ru.dbotthepony.kbox2d.api -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture import ru.dbotthepony.kbox2d.dynamics.contact.AbstractContact import ru.dbotthepony.kbox2d.dynamics.joint.AbstractJoint import ru.dbotthepony.kvector.vector.ndouble.Vector2d @@ -14,7 +14,7 @@ interface IContactFilter { * Return true if contact calculations should be performed between these two shapes. * @warning for performance reasons this is only called when the AABBs begin to overlap. */ - fun shouldCollide(fixtureA: Fixture, fixtureB: Fixture): Boolean + fun shouldCollide(fixtureA: B2Fixture, fixtureB: B2Fixture): Boolean } /** @@ -33,7 +33,7 @@ interface IDestructionListener { * Called when any fixture is about to be destroyed due * to the destruction of its parent body. */ - fun sayGoodbye(fixture: Fixture) + fun sayGoodbye(fixture: B2Fixture) } /** @@ -111,7 +111,7 @@ fun interface IQueryCallback { * Called for each fixture found in the query AABB. * @return false to terminate the query. */ - fun reportFixture(fixture: Fixture): Boolean + fun reportFixture(fixture: B2Fixture): Boolean } /** @@ -138,5 +138,5 @@ fun interface IRayCastCallback { * @return -1 to filter, 0 to terminate, fraction to clip the ray for * closest hit, 1 to continue */ - fun reportFixture(fixture: Fixture, point: Vector2d, normal: Vector2d, fraction: Double): Double + fun reportFixture(fixture: B2Fixture, point: Vector2d, normal: Vector2d, fraction: Double): Double } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/Body.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2Body.kt similarity index 95% rename from src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/Body.kt rename to src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2Body.kt index 0aaf3c35..9ab5d1be 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/Body.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2Body.kt @@ -3,7 +3,7 @@ package ru.dbotthepony.kbox2d.dynamics import ru.dbotthepony.kbox2d.api.* import ru.dbotthepony.kvector.vector.ndouble.Vector2d -class Body(def: BodyDef, world: B2World) { +class B2Body(def: BodyDef, world: B2World) { private var _world: B2World? = world /** @@ -101,7 +101,7 @@ class Body(def: BodyDef, world: B2World) { field = value } - var fixtureList: Fixture? = null + var fixtureList: B2Fixture? = null protected set var fixtureCount: Int = 0 @@ -159,20 +159,20 @@ class Body(def: BodyDef, world: B2World) { } } - var next: Body? = null + var next: B2Body? = null internal set - var prev: Body? = null + var prev: B2Body? = null internal set - val fixtureIterator: Iterator get() { - return object : Iterator { + val fixtureIterator: Iterator get() { + return object : Iterator { private var node = fixtureList override fun hasNext(): Boolean { return node != null } - override fun next(): Fixture { + override fun next(): B2Fixture { val old = node!! node = old.next return old @@ -273,7 +273,7 @@ class Body(def: BodyDef, world: B2World) { val broadPhase = world.contactManager.broadPhase for (fixture in fixtureIterator) { - (fixture as Fixture).createProxies(broadPhase, transform) + (fixture as B2Fixture).createProxies(broadPhase, transform) } world.notifyNewContacts() @@ -284,7 +284,7 @@ class Body(def: BodyDef, world: B2World) { val broadPhase = world.contactManager.broadPhase for (fixture in fixtureIterator) { - (fixture as Fixture).destroyProxies(broadPhase) + (fixture as B2Fixture).destroyProxies(broadPhase) } // Destroy the attached contacts. @@ -362,7 +362,7 @@ class Body(def: BodyDef, world: B2World) { contactEdge = null val broadPhase = world.contactManager.broadPhase - var f: Fixture? = fixtureList + var f: B2Fixture? = fixtureList while (f != null) { for (proxy in f.proxies) { @@ -381,11 +381,11 @@ class Body(def: BodyDef, world: B2World) { * @param def the fixture definition. * @warning This function is locked during callbacks. */ - fun createFixture(def: FixtureDef): Fixture { + fun createFixture(def: FixtureDef): B2Fixture { if (world.isLocked) throw ConcurrentModificationException() - val fixture = Fixture(this, def) + val fixture = B2Fixture(this, def) if (isEnabled) { fixture.createProxies(world.contactManager.broadPhase, transform) @@ -416,7 +416,7 @@ class Body(def: BodyDef, world: B2World) { * @param density the shape density (set to zero for static bodies). * @warning This function is locked during callbacks. */ - fun createFixture(shape: IShape<*>, density: Double): Fixture { + fun createFixture(shape: IShape<*>, density: Double): B2Fixture { return createFixture( FixtureDef( shape = shape, @@ -434,16 +434,16 @@ class Body(def: BodyDef, world: B2World) { * @param fixture the fixture to be removed. * @warning This function is locked during callbacks. */ - fun destroyFixture(fixture: Fixture) { + fun destroyFixture(fixture: B2Fixture) { if (world.isLocked) throw ConcurrentModificationException() require(fixture.body == this) { "$fixture does not belong to $this (belongs to ${fixture.body})" } check(fixtureCount > 0) { "Having no tracked fixtures, but $fixture belongs to us" } - var node: Fixture? = fixtureList + var node: B2Fixture? = fixtureList var found = false - var previous: Fixture? = null + var previous: B2Fixture? = null while (node != null) { if (node == fixture) { @@ -478,7 +478,7 @@ class Body(def: BodyDef, world: B2World) { } } - fixture as Fixture + fixture as B2Fixture if (isEnabled) { fixture.destroyProxies(world.contactManager.broadPhase) @@ -605,7 +605,7 @@ class Body(def: BodyDef, world: B2World) { linearVelocity += b2Cross(angularVelocity, sweep.c - oldCenter) } - internal fun shouldCollide(other: Body): Boolean { + internal fun shouldCollide(other: B2Body): Boolean { // At least one body should be dynamic. if (type != BodyType.DYNAMIC && other.type != BodyType.DYNAMIC) return false @@ -654,7 +654,7 @@ class Body(def: BodyDef, world: B2World) { val broadPhase = world.contactManager.broadPhase for (fixture in fixtureIterator) { - (fixture as Fixture?)?.synchronize(broadPhase, transform, transform) + (fixture as B2Fixture?)?.synchronize(broadPhase, transform, transform) } // Check for new contacts the next step @@ -868,11 +868,11 @@ class Body(def: BodyDef, world: B2World) { transform1.position = sweep.c0 - transform1.rotation.times(sweep.localCenter) for (fixture in fixtureIterator) { - (fixture as Fixture).synchronize(broadPhase, transform1, transform) + (fixture as B2Fixture).synchronize(broadPhase, transform1, transform) } } else { for (fixture in fixtureIterator) { - (fixture as Fixture).synchronize(broadPhase, transform, transform) + (fixture as B2Fixture).synchronize(broadPhase, transform, transform) } } } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/Fixture.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2Fixture.kt similarity index 98% rename from src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/Fixture.kt rename to src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2Fixture.kt index 47d476b1..4571737a 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/Fixture.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2Fixture.kt @@ -2,7 +2,6 @@ package ru.dbotthepony.kbox2d.dynamics import ru.dbotthepony.kbox2d.api.* import ru.dbotthepony.kbox2d.collision.BroadPhase -import ru.dbotthepony.kbox2d.collision.shapes.ChainShape import ru.dbotthepony.kbox2d.collision.shapes.PolygonShape import ru.dbotthepony.kvector.util2d.AABB import ru.dbotthepony.kvector.vector.ndouble.Vector2d @@ -16,22 +15,22 @@ import kotlin.collections.ArrayList * Fixtures are created via b2Body::CreateFixture. * @warning you cannot reuse fixtures. */ -class Fixture( - body: Body, +class B2Fixture( + body: B2Body, def: FixtureDef ) { /** * Get the parent body of this fixture. This is nullptr if the fixture is not attached. * @return the parent body. */ - var body: Body? = body + var body: B2Body? = body private set /** * Get the next fixture in the parent body's fixture list. * @return the next shape. */ - var next: Fixture? = null + var next: B2Fixture? = null /** * Get the user data that was assigned in the fixture definition. Use this to diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2World.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2World.kt index 4ae417ee..f4a70c71 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2World.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/B2World.kt @@ -78,7 +78,7 @@ class B2World( * the next body in the world list. A nullptr body indicates the end of the list. * @return the head of the world body list. */ - var bodyList: Body? = null + var bodyList: B2Body? = null private set /** @@ -89,15 +89,15 @@ class B2World( var jointList: AbstractJoint? = null private set - val bodyListIterator: Iterator get() { - return object : Iterator { + val bodyListIterator: Iterator get() { + return object : Iterator { private var node = bodyList override fun hasNext(): Boolean { return node != null } - override fun next(): Body { + override fun next(): B2Body { val old = node!! node = old.next check(node != old) { "Hard loop detected at $old" } @@ -191,11 +191,11 @@ class B2World( * is retained. * @warning This function is locked during callbacks. */ - fun createBody(bodyDef: BodyDef): Body { + fun createBody(bodyDef: BodyDef): B2Body { if (isLocked) throw ConcurrentModificationException() - val body = Body(bodyDef, this) + val body = B2Body(bodyDef, this) body.next = bodyList bodyList?.prev = body @@ -211,7 +211,7 @@ class B2World( * @warning This automatically deletes all associated shapes and joints. * @warning This function is locked during callbacks. */ - fun destroyBody(body: Body) { + fun destroyBody(body: B2Body) { if (isLocked) throw ConcurrentModificationException() @@ -400,7 +400,7 @@ class B2World( // Reset island and stack. island.clear() - val stack = ArrayDeque(32) + val stack = ArrayDeque(32) stack.add(seed) seed.isOnIsland = true @@ -554,8 +554,8 @@ class B2World( continue } - val bA = fA.body as Body - val bB = fB.body as Body + val bA = fA.body as B2Body + val bB = fB.body as B2Body val typeA = bA.type val typeB = bB.type @@ -633,8 +633,8 @@ class B2World( // Advance the bodies to the TOI. val fA = minContact.fixtureA val fB = minContact.fixtureB - val bA = fA.body as Body - val bB = fB.body as Body + val bA = fA.body as B2Body + val bB = fB.body as B2Body val backup1 = bA.sweep.copy() val backup2 = bB.sweep.copy() @@ -911,7 +911,7 @@ class B2World( }) } - private fun drawShape(fixture: Fixture, xf: Transform, color: Color) { + private fun drawShape(fixture: B2Fixture, xf: Transform, color: Color) { when (fixture.type) { IShape.Type.CIRCLE -> { val circle = fixture.shape as CircleShape diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/ContactManager.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/ContactManager.kt index 8c7970c1..47a209fe 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/ContactManager.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/ContactManager.kt @@ -35,8 +35,8 @@ class ContactManager { fun destroy(contact: AbstractContact) { val fixtureA = contact.fixtureA val fixtureB = contact.fixtureB - val bodyA = fixtureA.body as Body - val bodyB = fixtureB.body as Body + val bodyA = fixtureA.body as B2Body + val bodyB = fixtureB.body as B2Body if (contact.isTouching) { contactListener?.endContact(contact) @@ -98,8 +98,8 @@ class ContactManager { val fixtureB = c.fixtureB val indexA = c.childIndexA val indexB = c.childIndexB - val bodyA = fixtureA.body as Body - val bodyB = fixtureB.body as Body + val bodyA = fixtureA.body as B2Body + val bodyB = fixtureB.body as B2Body // Is this contact flagged for filtering? if (c.isFlaggedForFiltering) { @@ -154,8 +154,8 @@ class ContactManager { val indexA = proxyA.childIndex val indexB = proxyB.childIndex - val bodyA = fixtureA.body as Body - val bodyB = fixtureB.body as Body + val bodyA = fixtureA.body as B2Body + val bodyB = fixtureB.body as B2Body // Are the fixtures on the same body? if (bodyA === bodyB) { diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/AbstractContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/AbstractContact.kt index 08208904..36a932ea 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/AbstractContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/AbstractContact.kt @@ -3,13 +3,12 @@ package ru.dbotthepony.kbox2d.dynamics.contact import ru.dbotthepony.kbox2d.api.* import ru.dbotthepony.kbox2d.collision.WorldManifold import ru.dbotthepony.kbox2d.collision.b2TestOverlap -import ru.dbotthepony.kbox2d.dynamics.Body -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Body +import ru.dbotthepony.kbox2d.dynamics.B2Fixture import java.util.* -import kotlin.collections.HashMap fun interface ContactFactory { - fun factorize(fixtureA: Fixture, childIndexA: Int, fixtureB: Fixture, childIndexB: Int): AbstractContact + fun factorize(fixtureA: B2Fixture, childIndexA: Int, fixtureB: B2Fixture, childIndexB: Int): AbstractContact } /** @@ -21,7 +20,7 @@ sealed class AbstractContact( /** * Get fixture A in this contact. */ - val fixtureA: Fixture, + val fixtureA: B2Fixture, /** * Get the child primitive index for fixture A. @@ -31,7 +30,7 @@ sealed class AbstractContact( /** * Get fixture B in this contact. */ - val fixtureB: Fixture, + val fixtureB: B2Fixture, /** * Get the child primitive index for fixture B. @@ -69,8 +68,8 @@ sealed class AbstractContact( internal val nodeB: ContactEdge = ContactEdge(contact = this, other = fixtureA.body!!) init { - val bodyA = fixtureA.body as Body - val bodyB = fixtureB.body as Body + val bodyA = fixtureA.body as B2Body + val bodyB = fixtureB.body as B2Body nodeA.next = bodyA.contactEdge nodeB.next = bodyB.contactEdge @@ -174,8 +173,8 @@ sealed class AbstractContact( val sensor = fixtureA.isSensor || fixtureB.isSensor - val bodyA = fixtureA.body as Body - val bodyB = fixtureB.body as Body + val bodyA = fixtureA.body as B2Body + val bodyB = fixtureB.body as B2Body val xfA = bodyA.transform val xfB = bodyB.transform @@ -257,9 +256,9 @@ sealed class AbstractContact( } internal fun create( - fixtureA: Fixture, + fixtureA: B2Fixture, indexA: Int, - fixtureB: Fixture, + fixtureB: B2Fixture, indexB: Int, ): AbstractContact { val type1 = fixtureA.type @@ -271,31 +270,31 @@ sealed class AbstractContact( } init { - register(IShape.Type.POLYGON, IShape.Type.POLYGON) { fixtureA: Fixture, _: Int, fixtureB: Fixture, _: Int -> + register(IShape.Type.POLYGON, IShape.Type.POLYGON) { fixtureA: B2Fixture, _: Int, fixtureB: B2Fixture, _: Int -> return@register PolygonContact(fixtureA, fixtureB) } - register(IShape.Type.POLYGON, IShape.Type.CIRCLE) { fixtureA: Fixture, _: Int, fixtureB: Fixture, _: Int -> + register(IShape.Type.POLYGON, IShape.Type.CIRCLE) { fixtureA: B2Fixture, _: Int, fixtureB: B2Fixture, _: Int -> return@register PolygonCircleContact(fixtureA, fixtureB) } - register(IShape.Type.CIRCLE, IShape.Type.CIRCLE) { fixtureA: Fixture, _: Int, fixtureB: Fixture, _: Int -> + register(IShape.Type.CIRCLE, IShape.Type.CIRCLE) { fixtureA: B2Fixture, _: Int, fixtureB: B2Fixture, _: Int -> return@register CircleContact(fixtureA, fixtureB) } - register(IShape.Type.EDGE, IShape.Type.CIRCLE) { fixtureA: Fixture, _: Int, fixtureB: Fixture, _: Int -> + register(IShape.Type.EDGE, IShape.Type.CIRCLE) { fixtureA: B2Fixture, _: Int, fixtureB: B2Fixture, _: Int -> return@register EdgeCircleContact(fixtureA, fixtureB) } - register(IShape.Type.EDGE, IShape.Type.POLYGON) { fixtureA: Fixture, _: Int, fixtureB: Fixture, _: Int -> + register(IShape.Type.EDGE, IShape.Type.POLYGON) { fixtureA: B2Fixture, _: Int, fixtureB: B2Fixture, _: Int -> return@register EdgePolygonContact(fixtureA, fixtureB) } - register(IShape.Type.CHAIN, IShape.Type.POLYGON) { fixtureA: Fixture, indexA: Int, fixtureB: Fixture, indexB: Int -> + register(IShape.Type.CHAIN, IShape.Type.POLYGON) { fixtureA: B2Fixture, indexA: Int, fixtureB: B2Fixture, indexB: Int -> return@register ChainPolygonContact(fixtureA, indexA, fixtureB, indexB) } - register(IShape.Type.CHAIN, IShape.Type.CIRCLE) { fixtureA: Fixture, indexA: Int, fixtureB: Fixture, indexB: Int -> + register(IShape.Type.CHAIN, IShape.Type.CIRCLE) { fixtureA: B2Fixture, indexA: Int, fixtureB: B2Fixture, indexB: Int -> return@register ChainCircleContact(fixtureA, indexA, fixtureB, indexB) } } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainCircleContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainCircleContact.kt index 4423c369..2fd686e4 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainCircleContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainCircleContact.kt @@ -6,12 +6,12 @@ import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollideEdgeAndCircle import ru.dbotthepony.kbox2d.collision.shapes.ChainShape import ru.dbotthepony.kbox2d.collision.shapes.CircleShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class ChainCircleContact( - fixtureA: Fixture, + fixtureA: B2Fixture, childIndexA: Int, - fixtureB: Fixture, + fixtureB: B2Fixture, childIndexB: Int, ) : AbstractContact(fixtureA, childIndexA, fixtureB, childIndexB) { init { diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainPolygonContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainPolygonContact.kt index f13a6e91..1177f53b 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainPolygonContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/ChainPolygonContact.kt @@ -6,12 +6,12 @@ import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollideEdgeAndPolygon import ru.dbotthepony.kbox2d.collision.shapes.ChainShape import ru.dbotthepony.kbox2d.collision.shapes.PolygonShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class ChainPolygonContact( - fixtureA: Fixture, + fixtureA: B2Fixture, childIndexA: Int, - fixtureB: Fixture, + fixtureB: B2Fixture, childIndexB: Int, ) : AbstractContact(fixtureA, childIndexA, fixtureB, childIndexB) { init { diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/CircleContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/CircleContact.kt index b859be7f..25828d14 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/CircleContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/CircleContact.kt @@ -5,11 +5,11 @@ import ru.dbotthepony.kbox2d.api.Manifold import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollideCircles import ru.dbotthepony.kbox2d.collision.shapes.CircleShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class CircleContact( - fixtureA: Fixture, - fixtureB: Fixture, + fixtureA: B2Fixture, + fixtureB: B2Fixture, ) : AbstractContact(fixtureA, 0, fixtureB, 0) { init { require(fixtureA.type == IShape.Type.CIRCLE) { "Fixture A is of type ${fixtureA.type}" } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgeCircleContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgeCircleContact.kt index 6b8f4b79..1b1005fd 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgeCircleContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgeCircleContact.kt @@ -6,11 +6,11 @@ import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollideEdgeAndCircle import ru.dbotthepony.kbox2d.collision.shapes.CircleShape import ru.dbotthepony.kbox2d.collision.shapes.EdgeShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class EdgeCircleContact( - fixtureA: Fixture, - fixtureB: Fixture, + fixtureA: B2Fixture, + fixtureB: B2Fixture, ) : AbstractContact(fixtureA, 0, fixtureB, 0) { init { require(fixtureA.type == IShape.Type.EDGE) { "Fixture A is of type ${fixtureA.type}, expected EDGE" } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgePolygonContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgePolygonContact.kt index 4dbc4803..e6fa032d 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgePolygonContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/EdgePolygonContact.kt @@ -6,11 +6,11 @@ import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollideEdgeAndPolygon import ru.dbotthepony.kbox2d.collision.shapes.EdgeShape import ru.dbotthepony.kbox2d.collision.shapes.PolygonShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class EdgePolygonContact( - fixtureA: Fixture, - fixtureB: Fixture, + fixtureA: B2Fixture, + fixtureB: B2Fixture, ) : AbstractContact(fixtureA, 0, fixtureB, 0) { init { require(fixtureA.type == IShape.Type.EDGE) { "Fixture A is of type ${fixtureA.type}, expected EDGE" } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonCircleContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonCircleContact.kt index 7eae5684..0b1c4c32 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonCircleContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonCircleContact.kt @@ -6,11 +6,11 @@ import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollidePolygonAndCircle import ru.dbotthepony.kbox2d.collision.shapes.CircleShape import ru.dbotthepony.kbox2d.collision.shapes.PolygonShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class PolygonCircleContact( - fixtureA: Fixture, - fixtureB: Fixture, + fixtureA: B2Fixture, + fixtureB: B2Fixture, ) : AbstractContact(fixtureA, 0, fixtureB, 0) { init { require(fixtureA.type == IShape.Type.POLYGON) { "Fixture A is of type ${fixtureA.type}, expected POLYGON" } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonContact.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonContact.kt index 12d46eaa..4c9cdba7 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonContact.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/contact/PolygonContact.kt @@ -5,11 +5,11 @@ import ru.dbotthepony.kbox2d.api.Manifold import ru.dbotthepony.kbox2d.api.Transform import ru.dbotthepony.kbox2d.collision.handler.b2CollidePolygons import ru.dbotthepony.kbox2d.collision.shapes.PolygonShape -import ru.dbotthepony.kbox2d.dynamics.Fixture +import ru.dbotthepony.kbox2d.dynamics.B2Fixture class PolygonContact( - fixtureA: Fixture, - fixtureB: Fixture, + fixtureA: B2Fixture, + fixtureB: B2Fixture, ) : AbstractContact(fixtureA, 0, fixtureB, 0) { init { require(fixtureA.type == IShape.Type.POLYGON) { "Fixture A has type of ${fixtureA.type}" } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/ContactSolver.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/ContactSolver.kt index 2352f7a4..bab600d4 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/ContactSolver.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/ContactSolver.kt @@ -3,7 +3,7 @@ package ru.dbotthepony.kbox2d.dynamics.internal import ru.dbotthepony.kbox2d.api.* import ru.dbotthepony.kbox2d.collision.WorldManifold import ru.dbotthepony.kbox2d.dynamics.contact.AbstractContact -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kvector.matrix.ndouble.Matrix2d import ru.dbotthepony.kvector.matrix.ndouble.MutableMatrix2d import ru.dbotthepony.kvector.vector.ndouble.Vector2d @@ -144,8 +144,8 @@ internal class ContactSolver( val shapeB = fixtureB.shape val radiusA = shapeA.radius val radiusB = shapeB.radius - val bodyA = fixtureA.body as Body - val bodyB = fixtureB.body as Body + val bodyA = fixtureA.body as B2Body + val bodyB = fixtureB.body as B2Body val manifold = contact.manifold check(manifold.points.isNotEmpty()) { "Manifold points at $i are empty" } diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/Island.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/Island.kt index 9ed5c1b2..ea85b155 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/Island.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/internal/Island.kt @@ -5,7 +5,7 @@ import ru.dbotthepony.kbox2d.collision.DistanceProxy import ru.dbotthepony.kbox2d.collision.b2Distance import ru.dbotthepony.kbox2d.dynamics.contact.AbstractContact import ru.dbotthepony.kbox2d.dynamics.joint.AbstractJoint -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kvector.vector.ndouble.Vector2d import ru.dbotthepony.kvector.vector.ndouble.times import java.util.* @@ -144,14 +144,14 @@ internal class Island( initialJointCapacity: Int = 0, val listener: IContactListener? = null ) { - private val bodies = ArrayList(initialBodyCapacity) + private val bodies = ArrayList(initialBodyCapacity) private val contacts = ArrayList(initialContactCapacity) private val joints = ArrayList(initialJointCapacity) private val velocities = ArrayList(initialBodyCapacity) private val positions = ArrayList(initialBodyCapacity) - val bodiesAccess: List = Collections.unmodifiableList(bodies) + val bodiesAccess: List = Collections.unmodifiableList(bodies) fun clear() { bodies.clear() @@ -162,7 +162,7 @@ internal class Island( positions.clear() } - fun add(body: Body) { + fun add(body: B2Body) { body.islandIndex = bodies.size bodies.add(body) velocities.add(ru.dbotthepony.kbox2d.api.B2Velocity()) diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/AbstractJoint.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/AbstractJoint.kt index 2e899a86..1d5e8c4a 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/AbstractJoint.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/AbstractJoint.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.kbox2d.dynamics.joint import ru.dbotthepony.kbox2d.api.* -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kvector.vector.ndouble.Vector2d import java.util.EnumMap @@ -47,18 +47,18 @@ sealed class AbstractJoint(def: IJointDef) : IMovable { // joint have only one body, and to avoid null assertions in all places // possible, bodyA and bodyB getters assert for null by themselves // However, there is nullable getter for bodies: nullableBodyA and nullableBodyB - protected var _bodyA: Body? = def.bodyA as Body? - protected var _bodyB: Body? = def.bodyB as Body? + protected var _bodyA: B2Body? = def.bodyA as B2Body? + protected var _bodyB: B2Body? = def.bodyB as B2Body? /** * Get the first body attached to this joint. */ - val bodyA: Body get() = checkNotNull(_bodyA) { "Body A is not present" } + val bodyA: B2Body get() = checkNotNull(_bodyA) { "Body A is not present" } /** * Get the second body attached to this joint. */ - val bodyB: Body get() = checkNotNull(_bodyB) { "Body B is not present" } + val bodyB: B2Body get() = checkNotNull(_bodyB) { "Body B is not present" } /** * Get the anchor point on bodyA in world coordinates. diff --git a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/GearJoint.kt b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/GearJoint.kt index 7eaa836c..8c112534 100644 --- a/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/GearJoint.kt +++ b/src/kbox2d/kotlin/ru/dbotthepony/kbox2d/dynamics/joint/GearJoint.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.kbox2d.dynamics.joint import ru.dbotthepony.kbox2d.api.* -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kvector.vector.ndouble.Vector2d import ru.dbotthepony.kvector.vector.ndouble.times @@ -126,8 +126,8 @@ class GearJoint(def: GearJointDef) : AbstractJoint(def) { // Body A is connected to body C // Body B is connected to body D - private var _bodyC: Body? = joint1.bodyA - private var _bodyD: Body? + private var _bodyC: B2Body? = joint1.bodyA + private var _bodyD: B2Body? override fun unlink() { super.unlink() @@ -135,8 +135,8 @@ class GearJoint(def: GearJointDef) : AbstractJoint(def) { _bodyD = null } - val bodyC: Body get() = checkNotNull(_bodyC) { "Body C is not present" } - val bodyD: Body get() = checkNotNull(_bodyD) { "Body D is not present" } + val bodyC: B2Body get() = checkNotNull(_bodyC) { "Body C is not present" } + val bodyD: B2Body get() = checkNotNull(_bodyD) { "Body D is not present" } init { _bodyA = joint1.bodyB diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/Main.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/Main.kt index c4e42667..dee34393 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/Main.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/Main.kt @@ -8,7 +8,7 @@ import ru.dbotthepony.kbox2d.collision.shapes.ChainShape import ru.dbotthepony.kbox2d.collision.shapes.CircleShape import ru.dbotthepony.kbox2d.collision.shapes.PolygonShape import ru.dbotthepony.kbox2d.dynamics.B2World -import ru.dbotthepony.kbox2d.dynamics.Body +import ru.dbotthepony.kbox2d.dynamics.B2Body import ru.dbotthepony.kbox2d.dynamics.joint.MouseJoint import ru.dbotthepony.kstarbound.client.StarboundClient import ru.dbotthepony.kstarbound.world.Chunk @@ -54,7 +54,7 @@ fun main() { ground.createFixture(groundPoly, 0.0) - val boxes = ArrayList() + val boxes = ArrayList() /*run { val movingDef = BodyDef(