RotationEntityFunnel class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.engine.entityfunnel
Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/entityfunnel/RotationEntityFunnel.java
implements: EntityFunnel
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Vector3dc |
BLOCK_CENTER |
|
Vector3i |
var2 |
|
TransformComponent |
var3 |
|
Vector3d |
var4 |
|
Rotation3f |
var5 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var3 != null) |
public |
void |
setSourcevoid setSource(@Nonnull EntityFunnel var1, @Nonnull Vector3ic var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.entityfunnel;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.EntityPlacementData;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;
class="kw">public class RotationEntityFunnel class="kw">implements EntityFunnel {
class="kw">private class="kw">static class="kw">final Vector3dc BLOCK_CENTER = new Vector3d(0.5, 0.5, 0.5);
@Nonnull
class="kw">private class="kw">final RotationTuple rotation_fromViewToSource;
@Nonnull
class="kw">private Bounds3i viewBounds;
@Nonnull
class="kw">private EntityFunnel source;
@Nonnull
class="kw">private class="kw">final Vector3i anchor;
@Nonnull
class="kw">private class="kw">final Vector3d rPosition;
class="kw">public RotationEntityFunnel(@Nonnull RotationTuple var1) {
this.rotation_fromViewToSource = var1;
this.anchor = new Vector3i();
this.rPosition = new Vector3d();
this.setSource(EntityFunnel.NULL, Vector3iUtil.ZERO);
}
class="kw">public void setSource(@Nonnull EntityFunnel var1, @Nonnull Vector3ic var2) {
this.source = var1;
this.anchor.set(var2);
this.viewBounds = var1.getBounds().clone();
this.viewBounds.undoRotationAroundVoxel(this.rotation_fromViewToSource, var2);
}
@Override
class="kw">public void addEntity(@Nonnull EntityPlacementData var1) {
Vector3i var2 = var1.getOffset();
var2.sub(this.anchor);
this.rotation_fromViewToSource.applyRotationTo(var2);
var2.add(this.anchor);
this.rPosition.set(var2);
TransformComponent var3 = var1.getEntityHolder().getComponent(TransformComponent.getComponentType());
if (var3 != null) {
Vector3d var4 = var3.getPosition();
Rotation3f var5 = var3.getRotation();
var4.sub(BLOCK_CENTER);
this.rotation_fromViewToSource.applyRotationTo(var4);
var4.add(BLOCK_CENTER);
this.rotation_fromViewToSource.applyRotationTo(var5);
this.rPosition.add(var4);
}
if (this.source.getBounds().contains(this.rPosition)) {
this.source.addEntity(var1);
}
}
@Nonnull
@Override
class="kw">public Bounds3i getBounds() {
class="kw">return this.viewBounds;
}
}