71 lines
2.2 KiB
Java
71 lines
2.2 KiB
Java
package electrosphere.entity.state.ironsight;
|
|
|
|
import org.joml.Vector3f;
|
|
|
|
import electrosphere.engine.Globals;
|
|
import electrosphere.entity.Entity;
|
|
import electrosphere.entity.EntityDataStrings;
|
|
import electrosphere.entity.btree.BehaviorTree;
|
|
import electrosphere.entity.types.camera.CameraEntityUtils;
|
|
|
|
public class IronSightTree implements BehaviorTree {
|
|
|
|
static enum IronSightTreeState {
|
|
ACTIVE,
|
|
INACTIVE,
|
|
}
|
|
|
|
IronSightTreeState state = IronSightTreeState.INACTIVE;
|
|
boolean cameraZoomedIn = false;
|
|
|
|
float regularRadius = 1.0f;
|
|
float zoomedInRadius = 0.1f;
|
|
Vector3f offcenterOffset = new Vector3f(-0.1f,1,0);
|
|
|
|
|
|
public void start(){
|
|
state = IronSightTreeState.ACTIVE;
|
|
}
|
|
|
|
public void release(){
|
|
state = IronSightTreeState.INACTIVE;
|
|
}
|
|
|
|
@Override
|
|
public void simulate(float deltaTime) {
|
|
switch(state){
|
|
case ACTIVE:
|
|
if(!cameraZoomedIn){
|
|
cameraZoomedIn = true;
|
|
CameraEntityUtils.setOrbitalCameraDistance(Globals.playerCamera, zoomedInRadius);
|
|
Globals.cameraHandler.updateRadialOffset(new Vector3f(0,1,0.5f));
|
|
Globals.cameraHandler.updateGlobalCamera();
|
|
}
|
|
break;
|
|
case INACTIVE:
|
|
if(cameraZoomedIn){
|
|
cameraZoomedIn = false;
|
|
CameraEntityUtils.setOrbitalCameraDistance(Globals.playerCamera, regularRadius);
|
|
Globals.cameraHandler.updateRadialOffset(new Vector3f(0,1,0));
|
|
Globals.cameraHandler.updateGlobalCamera();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static IronSightTree getIronSightTree(Entity creature){
|
|
Object rVal;
|
|
if((rVal = creature.getData(EntityDataStrings.IRON_SIGHT_TREE)) != null && rVal instanceof IronSightTree){
|
|
return (IronSightTree) rVal;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static void attachIronSightTree(Entity player){
|
|
IronSightTree ironSightTree = new IronSightTree();
|
|
player.putData(EntityDataStrings.IRON_SIGHT_TREE, ironSightTree);
|
|
Globals.clientSceneWrapper.getScene().registerBehaviorTree(ironSightTree);
|
|
}
|
|
|
|
}
|