Assigned missiles a physics body (see #113)

This commit is contained in:
Collin Smith 2020-09-10 23:46:27 -07:00
parent 63bfa85173
commit 6cc41eb633
3 changed files with 24 additions and 5 deletions

View File

@ -1,11 +1,12 @@
package com.riiablo.engine.client;
import com.artemis.ComponentMapper;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.IntIntMap;
import com.riiablo.save.CharData;
import com.riiablo.Riiablo;
import com.riiablo.ai.AI;
import com.riiablo.ai.Npc;
@ -30,6 +31,7 @@ import com.riiablo.engine.server.component.SoundEmitter;
import com.riiablo.engine.server.component.Warp;
import com.riiablo.map.DT1;
import com.riiablo.map.Map;
import com.riiablo.save.CharData;
public class ClientEntityFactory extends ServerEntityFactory {
private static final String TAG = "ClientEntityFactory";
@ -202,6 +204,7 @@ public class ClientEntityFactory extends ServerEntityFactory {
int id = super.createMissile(missileId, angle, position);
Missile missileWrapper = mMissile.get(id);
Riiablo.assets.load(missileWrapper.missileDescriptor);
mBox2DBody.create(id);
Missiles.Entry missile = mMissile.get(id).missile;
if (!missile.TravelSound.isEmpty()) {

View File

@ -247,6 +247,7 @@ public class ServerEntityFactory extends EntityFactory {
mPosition.create(id).position.set(position);
mVelocity.create(id).velocity.set(angle).setLength(missile.Vel);
mAngle.create(id).set(angle);
mSize.create(id).size = Size.SMALL;
return id;
}
}

View File

@ -1,11 +1,15 @@
package com.riiablo.map;
import java.util.Arrays;
import org.apache.commons.lang3.Validate;
import com.artemis.Aspect;
import com.artemis.ComponentMapper;
import com.artemis.annotations.All;
import com.artemis.annotations.Wire;
import com.artemis.systems.IntervalSystem;
import com.artemis.utils.IntBag;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
@ -18,6 +22,7 @@ import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.IntMap;
import com.riiablo.camera.IsometricCamera;
import com.riiablo.codec.excel.Objects;
import com.riiablo.engine.server.component.Box2DBody;
@ -27,10 +32,6 @@ import com.riiablo.engine.server.component.Object;
import com.riiablo.engine.server.component.Position;
import com.riiablo.engine.server.component.Size;
import org.apache.commons.lang3.Validate;
import java.util.Arrays;
@All({Class.class, Position.class, Size.class, Box2DBody.class})
public class Box2DPhysics extends IntervalSystem {
private static final String TAG = "Box2DPhysicsSystem";
@ -67,6 +68,10 @@ public class Box2DPhysics extends IntervalSystem {
type = BodyDef.BodyType.DynamicBody;
fixedRotation = true;
}};
private final BodyDef missileBodyDef = new BodyDef() {{
type = BodyDef.BodyType.DynamicBody;
fixedRotation = true;
}};
private final BodyDef playerBodyDef = monsterBodyDef;
public Box2DPhysics(float interval) {
@ -150,6 +155,16 @@ public class Box2DPhysics extends IntervalSystem {
} shape.dispose();
}
break;
case MIS: {
missileBodyDef.position.set(position);
body = box2d.createBody(missileBodyDef);
CircleShape shape = new CircleShape(); {
shape.setRadius(size / 2f);
Fixture fixture = body.createFixture(shape, 1f);
//fixture.setSensor(true);
} shape.dispose();
}
break;
case PLR: {
playerBodyDef.position.set(position);
body = box2d.createBody(playerBodyDef);