package NET.worlds.scape; import java.io.IOException; public class CameraHeightAction extends Action { public float newEyeHeight = 0.0F; private static Object classCookie = new Object(); @Override public Persister trigger(Event e, Persister seqID) { Object owner = this.getOwner(); if (owner != null && owner instanceof WObject) { WObject o = (WObject)owner; Pilot pilot = Pilot.getActive(); if (pilot == null) { return null; } else if (pilot.getRoom() != o.getRoom()) { return null; } else { if (pilot instanceof HoloPilot) { HoloPilot hp = (HoloPilot)pilot; hp.setEyeHeight(this.newEyeHeight); } return null; } } else { return null; } } @Override public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { Object ret = null; switch (index - offset) { case 0: if (mode == 0) { ret = FloatPropertyEditor.make(new Property(this, index, "New Eye Height")); } else if (mode == 1) { ret = new Float(this.newEyeHeight); } else if (mode == 2) { this.newEyeHeight = (Float)value; } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public String toString() { return super.toString() + "[New Eye Height: " + this.newEyeHeight + "]"; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); s.saveFloat(this.newEyeHeight); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); this.newEyeHeight = r.restoreFloat(); return; default: throw new TooNewException(); } } }