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); } }