diff options
Diffstat (limited to 'NET/worlds/scape/ProximitySensor.java')
| -rw-r--r-- | NET/worlds/scape/ProximitySensor.java | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/NET/worlds/scape/ProximitySensor.java b/NET/worlds/scape/ProximitySensor.java new file mode 100644 index 0000000..956d926 --- /dev/null +++ b/NET/worlds/scape/ProximitySensor.java @@ -0,0 +1,212 @@ +/* */ 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 + */
\ No newline at end of file |