/* */ package NET.worlds.scape; /* */ /* */ import java.io.IOException; /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public class ProximitySensor /* */ extends Sensor /* */ implements FrameHandler /* */ { /* */ public ProximitySensor(Action a) /* */ { /* 34 */ if (a != null) { /* 35 */ addAction(a); /* */ } /* */ } /* */ /* */ /* 40 */ private boolean _wasin = false; /* 41 */ private Point3 _start = new Point3(0.0F, 0.0F, 0.0F); /* 42 */ private Point3 _end = new Point3(1.0F, 1.0F, 1.0F); /* 43 */ private boolean _triggerin = true; /* 44 */ private boolean _triggerout = false; /* 45 */ private boolean _silentTeleport = false; /* */ private Room _lastRoom; /* */ /* */ public ProximitySensor() {} /* */ /* 50 */ public boolean handle(FrameEvent e) { SuperRoot owner = getOwner(); /* 51 */ if (!(owner instanceof WObject)) /* 52 */ return true; /* 53 */ WObject wo = (WObject)owner; /* 54 */ Pilot pilot = Pilot.getActive(); /* 55 */ Room room = pilot.getRoom(); /* 56 */ boolean teleport = room != this._lastRoom; /* 57 */ this._lastRoom = room; /* */ /* 59 */ Point3Temp pos = pilot.getPosition(); /* */ /* 61 */ BoundBoxTemp bbt = BoundBoxTemp.make(Point3Temp.make(this._start).times(wo), /* 62 */ Point3Temp.make(this._end).times(wo)); /* */ /* */ /* */ /* */ /* */ /* 68 */ if ((pilot.getRoom() == wo.getRoom()) && (bbt.contains(pos))) /* */ { /* 70 */ if (!this._wasin) { /* 71 */ this._wasin = true; /* */ /* 73 */ if ((this._triggerin) && ((!teleport) || (!this._silentTeleport))) { /* 74 */ trigger(e); /* */ } /* */ /* */ } /* */ } /* 79 */ else if (this._wasin) { /* 80 */ this._wasin = false; /* */ /* 82 */ if ((this._triggerout) && ((!teleport) || (!this._silentTeleport))) { /* 83 */ trigger(e); /* */ } /* */ } /* 86 */ return true; /* */ } /* */ /* */ /* */ /* */ /* */ public Object properties(int index, int offset, int mode, Object value) /* */ throws NoSuchPropertyException /* */ { /* 95 */ Object ret = null; /* 96 */ switch (index - offset) { /* */ case 0: /* 98 */ if (mode == 0) { /* 99 */ ret = Point3PropertyEditor.make(new Property(this, index, /* 100 */ "Start")); /* */ } /* 102 */ else if (mode == 1) { /* 103 */ ret = new Point3(this._start); /* 104 */ } else if (mode == 2) /* 105 */ this._start = ((Point3)value); /* 106 */ break; /* */ case 1: /* 108 */ if (mode == 0) { /* 109 */ ret = Point3PropertyEditor.make(new Property(this, index, /* 110 */ "End")); /* */ } /* 112 */ else if (mode == 1) { /* 113 */ ret = new Point3(this._end); /* 114 */ } else if (mode == 2) /* 115 */ this._end = ((Point3)value); /* 116 */ break; /* */ case 2: /* 118 */ if (mode == 0) { /* 119 */ ret = BooleanPropertyEditor.make(new Property(this, index, /* 120 */ "Trigger on entry"), "Don't trigger when entered", /* 121 */ "Trigger when entered"); /* */ } /* 123 */ else if (mode == 1) { /* 124 */ ret = new Boolean(this._triggerin); /* 125 */ } else if (mode == 2) /* 126 */ this._triggerin = ((Boolean)value).booleanValue(); /* 127 */ break; /* */ case 3: /* 129 */ if (mode == 0) { /* 130 */ ret = BooleanPropertyEditor.make(new Property(this, index, /* 131 */ "Trigger on exit"), "Don't trigger when exited", /* 132 */ "Trigger when exited"); /* */ } /* 134 */ else if (mode == 1) { /* 135 */ ret = new Boolean(this._triggerout); /* 136 */ } else if (mode == 2) /* 137 */ this._triggerout = ((Boolean)value).booleanValue(); /* 138 */ break; /* */ case 4: /* 140 */ if (mode == 0) { /* 141 */ ret = BooleanPropertyEditor.make(new Property(this, index, /* 142 */ "Teleport trigger"), "Don't trigger on teleports", /* 143 */ "Trigger on teleports"); /* */ } /* 145 */ else if (mode == 1) { /* 146 */ ret = new Boolean(!this._silentTeleport); /* 147 */ } else if (mode == 2) /* 148 */ this._silentTeleport = (!((Boolean)value).booleanValue()); /* 149 */ break; /* */ default: /* 151 */ ret = super.properties(index, offset + 5, mode, value); /* */ } /* */ /* 154 */ return ret; /* */ } /* */ /* */ /* */ /* */ /* */ /* 161 */ private static Object classCookie = new Object(); /* */ /* */ public void saveState(Saver s) throws IOException /* */ { /* 165 */ s.saveVersion(2, classCookie); /* 166 */ super.saveState(s); /* 167 */ s.saveBoolean(this._triggerin); /* 168 */ s.saveBoolean(this._triggerout); /* 169 */ s.saveBoolean(this._silentTeleport); /* 170 */ s.save(this._start); /* 171 */ s.save(this._end); /* */ } /* */ /* */ public void restoreState(Restorer r) throws IOException, TooNewException /* */ { /* 176 */ switch (r.restoreVersion(classCookie)) { /* */ case 2: /* 178 */ super.restoreState(r); /* 179 */ this._triggerin = r.restoreBoolean(); /* 180 */ this._triggerout = r.restoreBoolean(); /* 181 */ this._silentTeleport = r.restoreBoolean(); /* 182 */ this._start = ((Point3)r.restore()); /* 183 */ this._end = ((Point3)r.restore()); /* 184 */ break; /* */ case 1: /* 186 */ super.restoreState(r); /* 187 */ this._triggerin = r.restoreBoolean(); /* 188 */ this._triggerout = r.restoreBoolean(); /* 189 */ this._start = ((Point3)r.restore()); /* 190 */ this._end = ((Point3)r.restore()); /* 191 */ break; /* */ default: /* 193 */ throw new TooNewException(); /* */ } /* */ /* */ } /* */ /* */ /* */ /* */ /* */ public String toString() /* */ { /* 203 */ return /* 204 */ super.toString() + "[" + (this._triggerin ? "I" : " ") + (this._triggerout ? "O" : " ") + this._start + " to " + this._end + "]"; /* */ } /* */ } /* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\scape\ProximitySensor.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */