classpublicabstractPriority 3
MotionTimer
com.hypixel.hytale.server.npc.corecomponents.timer.MotionTimer
extends MotionBase
8
Methods
8
Public Methods
5
Fields
1
Constructors
Constructors
public
MotionTimer(BuilderMotionTimer<T> builder, BuilderSupport builderSupport, T motion)Methods
Public Methods (8)
public
void activate(Ref<EntityStore> ref, Role role, ComponentAccessor<EntityStore> componentAccessor)@Override
public
void deactivate(Ref<EntityStore> ref, Role role, ComponentAccessor<EntityStore> componentAccessor)@Override
public
void loaded(Role role)@Override
public
void registerWithSupport(Role role)@Override
public
void removed(Role role)@Override
public
void spawned(Role role)@Override
public
void teleported(Role role, World from, World to)@Override
public
void unloaded(Role role)@Override
Fields
Protected Fields (5)
protected
double activeTimeprotected
double atLeastSecondsprotected
double atMostSecondsprotected
T motionprotected
double timeToLiveInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.server.npc.corecomponents.timer;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.random.RandomExtra;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
import com.hypixel.hytale.server.npc.corecomponents.MotionBase;
import com.hypixel.hytale.server.npc.corecomponents.timer.builders.BuilderMotionTimer;
import com.hypixel.hytale.server.npc.entities.NPCEntity;
import com.hypixel.hytale.server.npc.instructions.Motion;
import com.hypixel.hytale.server.npc.movement.Steering;
import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
import com.hypixel.hytale.server.npc.role.Role;
import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class MotionTimer<T extends Motion> extends MotionBase {
protected final T motion;
protected final double atLeastSeconds;
protected final double atMostSeconds;
protected double activeTime;
protected double timeToLive;
public MotionTimer(@Nonnull BuilderMotionTimer<T> builder, @Nonnull BuilderSupport builderSupport, T motion) {
double[] timerRange = builder.getTimerRange(builderSupport);
this.atLeastSeconds = timerRange[0];
this.atMostSeconds = timerRange[1];
this.motion = motion;
}
@Override
public void activate(@Nonnull Ref<EntityStore> ref, @Nonnull Role role, @Nonnull ComponentAccessor<EntityStore> componentAccessor) {
this.activeTime = 0.0;
this.timeToLive = RandomExtra.randomRange(this.atLeastSeconds, this.atMostSeconds);
this.motion.activate(ref, role, componentAccessor);
}
@Override
public void deactivate(@Nonnull Ref<EntityStore> ref, @Nonnull Role role, @Nonnull ComponentAccessor<EntityStore> componentAccessor) {
this.motion.deactivate(ref, role, componentAccessor);
}
@Override
public boolean computeSteering(
@Nonnull Ref<EntityStore> ref,
@Nonnull Role support,
@Nullable InfoProvider sensorInfo,
double dt,
@Nonnull Steering desiredSteering,
@Nonnull ComponentAccessor<EntityStore> componentAccessor
) {
if (this.activeTime >= this.timeToLive) {
return false;
} else {
this.activeTime += dt;
if (!this.motion.computeSteering(ref, support, sensorInfo, dt, desiredSteering, componentAccessor)) {
this.activeTime = this.timeToLive;
return false;
} else {
return true;
}
}
}
@Override
public void registerWithSupport(Role role) {
this.motion.registerWithSupport(role);
}
@Override
public void motionControllerChanged(
@Nullable Ref<EntityStore> ref,
@Nonnull NPCEntity npcComponent,
MotionController motionController,
@Nullable ComponentAccessor<EntityStore> componentAccessor
) {
this.motion.motionControllerChanged(ref, npcComponent, motionController, componentAccessor);
}
@Override
public void loaded(Role role) {
this.motion.loaded(role);
}
@Override
public void spawned(Role role) {
this.motion.spawned(role);
}
@Override
public void unloaded(Role role) {
this.motion.unloaded(role);
}
@Override
public void removed(Role role) {
this.motion.removed(role);
}
@Override
public void teleported(Role role, World from, World to) {
this.motion.teleported(role, from, to);
}
}