Browse Source

NPC rotations inherit building rotation.

master
MagicBot 2 years ago
parent
commit
82aeba3a05
  1. 2
      src/engine/objects/Mob.java
  2. 7
      src/engine/objects/NPC.java

2
src/engine/objects/Mob.java

@ -929,7 +929,7 @@ public class Mob extends AbstractIntelligenceAgent {
this.loc = new Vector3fImmutable(bindLoc); this.loc = new Vector3fImmutable(bindLoc);
this.endLoc = new Vector3fImmutable(bindLoc); this.endLoc = new Vector3fImmutable(bindLoc);
// Rotate mobile's rotation by the building's rotation // Rotate mobile rotation by the building's rotation
slotRotation = new Quaternion().fromAngles(0, acos(this.getRot().y) * 2, 0); slotRotation = new Quaternion().fromAngles(0, acos(this.getRot().y) * 2, 0);
slotRotation = slotRotation.mult(building.getBounds().getQuaternion()); slotRotation = slotRotation.mult(building.getBounds().getQuaternion());

7
src/engine/objects/NPC.java

@ -38,6 +38,7 @@ import java.util.HashSet;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import static engine.math.FastMath.acos;
import static engine.net.client.msg.ErrorPopupMsg.sendErrorPopup; import static engine.net.client.msg.ErrorPopupMsg.sendErrorPopup;
import static engine.objects.MobBase.loadEquipmentSet; import static engine.objects.MobBase.loadEquipmentSet;
@ -375,6 +376,12 @@ public class NPC extends AbstractCharacter {
slotRotation = BuildingManager.getSlotLocation(building, slot).getRotation(); slotRotation = BuildingManager.getSlotLocation(building, slot).getRotation();
this.setRot(new Vector3f(0, slotRotation.y, 0)); this.setRot(new Vector3f(0, slotRotation.y, 0));
// Rotate NPC rotation by the building's rotation
slotRotation = new Quaternion().fromAngles(0, acos(this.getRot().y) * 2, 0);
slotRotation = slotRotation.mult(building.getBounds().getQuaternion());
this.setRot(new Vector3f(0, slotRotation.y, 0));
// Configure region and floor/level for this NPC // Configure region and floor/level for this NPC
this.region = BuildingManager.GetRegion(this.building, bindLoc.x, bindLoc.y, bindLoc.z); this.region = BuildingManager.GetRegion(this.building, bindLoc.x, bindLoc.y, bindLoc.z);

Loading…
Cancel
Save