Renderer/src/main/java/electrosphere/entity/EntityUtils.java
austin ccaaa47127
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
voxel selection item
2024-09-20 20:59:23 -04:00

76 lines
2.3 KiB
Java

package electrosphere.entity;
import electrosphere.engine.Globals;
import electrosphere.renderer.actor.Actor;
import electrosphere.server.datacell.Realm;
import electrosphere.server.datacell.ServerDataCell;
import electrosphere.server.datacell.utils.EntityLookupUtils;
import electrosphere.server.poseactor.PoseActor;
import org.joml.Quaterniond;
import org.joml.Vector3d;
import org.joml.Vector3f;
/**
* Utilties for dealing with entities
*/
public class EntityUtils {
public static Vector3d getPosition(Entity e){
return (Vector3d)e.getData(EntityDataStrings.DATA_STRING_POSITION);
}
public static Quaterniond getRotation(Entity e){
return (Quaterniond)e.getData(EntityDataStrings.DATA_STRING_ROTATION);
}
public static Vector3f getScale(Entity e){
return (Vector3f)e.getData(EntityDataStrings.DATA_STRING_SCALE);
}
/**
* Cleans up the entity and deregisters it from all tracking datastructures
* @param e The entity to clean up
*/
protected static void cleanUpEntity(Entity e){
//remove from client
if(Globals.clientSceneWrapper != null){
Globals.clientSceneWrapper.getScene().deregisterEntity(e);
Globals.clientSceneWrapper.deregisterTranslationMapping(e);
}
//remove from all server classes
if(Globals.realmManager != null){
Realm realm = Globals.realmManager.getEntityRealm(e);
if(realm != null){
//get data cell
ServerDataCell dataCell = realm.getEntityDataCellMapper().getEntityDataCell(e);
if(dataCell != null){
dataCell.getScene().deregisterEntity(e);
}
realm.getEntityDataCellMapper().ejectEntity(e);
}
Globals.realmManager.removeEntity(e);
}
EntityLookupUtils.removeEntity(e);
}
/**
* Gets the actor on the entity
* @param e The entity
* @return The actor
*/
public static Actor getActor(Entity e){
return (Actor)e.getData(EntityDataStrings.DATA_STRING_ACTOR);
}
/**
* Gets the pose actor on the entity
* @param e The entity
* @return the pose actor
*/
public static PoseActor getPoseActor(Entity e){
return (PoseActor)e.getData(EntityDataStrings.POSE_ACTOR);
}
}