mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-07-31 01:15:57 -04:00
Added method to transfer objects(players) to other planets
This commit is contained in:
@@ -50,6 +50,8 @@ import engine.resources.scene.quadtree.QuadTree;
|
||||
import engine.resources.service.INetworkDispatch;
|
||||
import engine.resources.service.INetworkRemoteEvent;
|
||||
|
||||
import protocol.swg.CmdStartScene;
|
||||
import protocol.swg.HeartBeatMessage;
|
||||
import protocol.swg.ObjControllerMessage;
|
||||
import protocol.swg.OpenedContainerMessage;
|
||||
import protocol.swg.UpdateTransformMessage;
|
||||
@@ -401,6 +403,7 @@ public class SimulationService implements INetworkDispatch {
|
||||
observerClient.getParent().makeUnaware(object);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
object.createTransaction(core.getCreatureODB().getEnvironment());
|
||||
core.getCreatureODB().put(object, Long.class, CreatureObject.class, object.getTransaction());
|
||||
@@ -438,6 +441,62 @@ public class SimulationService implements INetworkDispatch {
|
||||
|
||||
}
|
||||
|
||||
public void transferToPlanet(SWGObject object, Planet planet, Point3D newPos, Quaternion newOrientation) {
|
||||
|
||||
Client client = object.getClient();
|
||||
|
||||
if(client == null)
|
||||
return;
|
||||
|
||||
IoSession session = client.getSession();
|
||||
|
||||
if(session == null)
|
||||
return;
|
||||
|
||||
Point3D position = object.getPosition();
|
||||
|
||||
if(object.getParentId() == 0 && object.getContainer() == null) {
|
||||
remove(object, position.x, position.z);
|
||||
} else {
|
||||
object.getContainer().remove(object);
|
||||
}
|
||||
|
||||
HashSet<Client> oldObservers = new HashSet<Client>(object.getObservers());
|
||||
|
||||
for(Client observerClient : oldObservers) {
|
||||
if(observerClient.getParent() != null) {
|
||||
observerClient.getParent().makeUnaware(object);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
synchronized(object.getMutex()) {
|
||||
|
||||
Iterator<SWGObject> it = object.getAwareObjects().iterator();
|
||||
|
||||
while(it.hasNext()) {
|
||||
it.remove();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
object.setPlanet(planet);
|
||||
object.setPlanetId(planet.getID());
|
||||
object.setPosition(newPos);
|
||||
object.setOrientation(newOrientation);
|
||||
|
||||
HeartBeatMessage heartBeat = new HeartBeatMessage();
|
||||
session.write(heartBeat.serialize());
|
||||
|
||||
CmdStartScene startScene = new CmdStartScene((byte) 0, object.getObjectID(), object.getPlanet().getPath(), object.getTemplate(), newPos.x, newPos.y, newPos.z, System.currentTimeMillis() / 1000, object.getRadians());
|
||||
session.write(startScene.serialize());
|
||||
|
||||
core.simulationService.handleZoneIn(client);
|
||||
object.makeAware(object);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void openContainer(SWGObject requester, SWGObject container) {
|
||||
|
||||
if(container.getPermissions().canView(requester, container)) {
|
||||
|
||||
Reference in New Issue
Block a user