HyCodeYourTale
classpublicPriority 3

OffsetPositionProvider

com.hypixel.hytale.builtin.hytalegenerator.positionproviders.OffsetPositionProvider

extends PositionProvider

1

Methods

1

Public Methods

3

Fields

2

Constructors

Constructors

public
OffsetPositionProvider(Vector3i offset, PositionProvider positionProvider)
public
OffsetPositionProvider(Vector3d offset, PositionProvider positionProvider)

Methods

Public Methods (1)

public
void positionsIn(PositionProvider.Context context)
@Override

Fields

Private/Package Fields (3)

privateVector3d offset3d
privateVector3i offset3i
privatePositionProvider positionProvider

Inheritance

Parent
Current
Interface
Child

Use mouse wheel to zoom, drag to pan. Click nodes to navigate.

Related Classes

Source Code

package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;

import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3i;
import javax.annotation.Nonnull;

public class OffsetPositionProvider extends PositionProvider {
   @Nonnull
   private final Vector3i offset3i;
   @Nonnull
   private final Vector3d offset3d;
   @Nonnull
   private final PositionProvider positionProvider;

   public OffsetPositionProvider(@Nonnull Vector3i offset, @Nonnull PositionProvider positionProvider) {
      this.offset3i = offset.clone();
      this.positionProvider = positionProvider;
      this.offset3d = this.offset3i.toVector3d();
   }

   public OffsetPositionProvider(@Nonnull Vector3d offset, @Nonnull PositionProvider positionProvider) {
      this.offset3d = offset.clone();
      this.positionProvider = positionProvider;
      this.offset3i = this.offset3d.toVector3i();
   }

   @Override
   public void positionsIn(@Nonnull PositionProvider.Context context) {
      Vector3d windowMin = context.minInclusive.clone();
      Vector3d windowMax = context.maxExclusive.clone();
      windowMin.subtract(this.offset3d);
      windowMax.subtract(this.offset3d);
      PositionProvider.Context childContext = new PositionProvider.Context();
      childContext.minInclusive = windowMin;
      childContext.maxExclusive = windowMax;
      childContext.consumer = p -> {
         Vector3d offsetP = p.clone();
         offsetP.add(this.offset3d);
         context.consumer.accept(offsetP);
      };
      childContext.workerId = context.workerId;
      this.positionProvider.positionsIn(childContext);
   }
}