}
}
@ReceiveEvent
public void onBlockItemDropped(ItemDroppedEvent event, EntityRef itemEntity, BlockItemComponent blockItemComponent) {
EntityBuilder builder = event.getPickup();
BlockFamily blockFamily = blockItemComponent.blockFamily;
if (builder.hasComponent(MeshComponent.class)) {
MeshComponent mesh = builder.getComponent(MeshComponent.class);
mesh.mesh = blockFamily.getArchetypeBlock().getMesh();
mesh.material = Assets.getMaterial("engine:terrain");
}
if (blockFamily.getArchetypeBlock().getCollisionShape() instanceof BoxShape && builder.hasComponent(BoxShapeComponent.class)) {
Vector3f extents = ((BoxShape) blockFamily.getArchetypeBlock().getCollisionShape()).getHalfExtentsWithoutMargin(new Vector3f());
extents.scale(2.0f);
extents.clampMin(0.5f);
builder.getComponent(BoxShapeComponent.class).extents.set(extents);
}
if (blockFamily.getArchetypeBlock().getLuminance() > 0 && !builder.hasComponent(LightComponent.class)) {
LightComponent lightComponent = builder.addComponent(new LightComponent());
Vector3f randColor = new Vector3f(rand.nextFloat(), rand.nextFloat(), rand.nextFloat());
lightComponent.lightColorDiffuse.set(randColor);
lightComponent.lightColorAmbient.set(randColor);
}
if (builder.hasComponent(RigidBodyComponent.class)) {
builder.getComponent(RigidBodyComponent.class).mass = blockItemComponent.blockFamily.getArchetypeBlock().getMass();
}
}