AnchorPositionProvider class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.positionproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/AnchorPositionProvider.java
extends: PositionProvider
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2) |
|
|
if if(AnchorPositionProvider.this.isReversed) |
|
|
if if(var1.anchor == null) |
|
|
if if(this.isReversed) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class AnchorPositionProvider class="kw">extends PositionProvider {
@Nonnull
class="kw">private class="kw">final PositionProvider positionProvider;
class="kw">private class="kw">final boolean isReversed;
@Nonnull
class="kw">private class="kw">final Bounds3d rOffsetBounds;
@Nonnull
class="kw">private class="kw">final PositionProvider.Context rChildContext;
@Nonnull
class="kw">private class="kw">final Vector3d rNewPosition;
@Nonnull
class="kw">private class="kw">final Vector3d rAnchor;
@Nonnull
class="kw">private PositionProvider.Context rContext;
@Nonnull
class="kw">private class="kw">final Pipe.One<Vector3d> rChildPipe = new Pipe.One<Vector3d>() {
class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
AnchorPositionProvider.this.rNewPosition.set(var1);
if (AnchorPositionProvider.this.isReversed) {
AnchorPositionProvider.this.rNewPosition.sub(AnchorPositionProvider.this.rAnchor);
} else {
AnchorPositionProvider.this.rNewPosition.add(AnchorPositionProvider.this.rAnchor);
}
if (AnchorPositionProvider.this.rContext.bounds.contains(AnchorPositionProvider.this.rNewPosition)) {
AnchorPositionProvider.this.rContext.pipe.accept(AnchorPositionProvider.this.rNewPosition, var2);
}
}
};
class="kw">public AnchorPositionProvider(@Nonnull PositionProvider var1, boolean var2) {
this.positionProvider = var1;
this.isReversed = var2;
this.rOffsetBounds = new Bounds3d();
this.rChildContext = new PositionProvider.Context();
this.rNewPosition = new Vector3d();
this.rAnchor = new Vector3d();
this.rContext = new PositionProvider.Context();
}
@Override
class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
if (var1.anchor == null) {
this.positionProvider.generate(var1);
} else {
this.rContext = var1;
this.rAnchor.set(var1.anchor);
this.rOffsetBounds.assign(var1.bounds);
if (this.isReversed) {
this.rOffsetBounds.offset(this.rAnchor);
} else {
this.rOffsetBounds.offsetOpposite(this.rAnchor);
}
this.rChildContext.assign(var1);
this.rChildContext.bounds = this.rOffsetBounds;
this.rChildContext.pipe = this.rChildPipe;
this.positionProvider.generate(this.rChildContext);
this.rChildContext.clearReferences();
this.rContext = PositionProvider.Context.DEFAULT_INSTANCE;
}
}
}