diff options
Diffstat (limited to 'NET/worlds/scape/WObject.java')
| -rw-r--r-- | NET/worlds/scape/WObject.java | 3633 |
1 files changed, 3633 insertions, 0 deletions
diff --git a/NET/worlds/scape/WObject.java b/NET/worlds/scape/WObject.java new file mode 100644 index 0000000..7e29700 --- /dev/null +++ b/NET/worlds/scape/WObject.java @@ -0,0 +1,3633 @@ +/* */ package NET.worlds.scape; +/* */ +/* */ import NET.worlds.console.Console; +/* */ import NET.worlds.console.Gamma; +/* */ import NET.worlds.console.GammaFrame; +/* */ import NET.worlds.console.RightMenu; +/* */ import NET.worlds.core.Debug; +/* */ import NET.worlds.core.IniFile; +/* */ import NET.worlds.network.NetworkObject; +/* */ import NET.worlds.network.URL; +/* */ import NET.worlds.network.WorldServer; +/* */ import java.io.DataInputStream; +/* */ import java.io.IOException; +/* */ import java.lang.reflect.Field; +/* */ import java.util.Enumeration; +/* */ import java.util.Vector; +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public class WObject +/* */ extends Transform +/* */ implements Prerenderable +/* */ { +/* 231 */ private boolean mouseOver = false; +/* */ private String _toolTipText; +/* */ +/* */ public boolean getMouseOver() { +/* 235 */ if (this.mouseOver) { +/* 236 */ return true; +/* */ } +/* */ try +/* */ { +/* 240 */ obj = (WObject)getOwner(); +/* */ } catch (ClassCastException c) { WObject obj; +/* 242 */ return false; +/* */ } +/* */ WObject obj; +/* 245 */ if (obj == null) { +/* 246 */ return false; +/* */ } +/* 248 */ return obj.getMouseOver(); +/* */ } +/* */ +/* */ +/* */ public void setMouseOver(boolean m) +/* */ { +/* 254 */ this.mouseOver = m; +/* */ } +/* */ +/* */ +/* */ public String getToolTipText() +/* */ { +/* 260 */ if (this._toolTipText != null) { +/* 261 */ return this._toolTipText; +/* */ } +/* */ try +/* */ { +/* 265 */ obj = (WObject)getOwner(); +/* */ } catch (ClassCastException c) { WObject obj; +/* 267 */ return null; +/* */ } +/* */ WObject obj; +/* 270 */ if (obj == null) { +/* 271 */ return null; +/* */ } +/* 273 */ return obj.getToolTipText(); +/* */ } +/* */ +/* */ +/* */ public void setToolTipText(String newText) +/* */ { +/* 279 */ this._toolTipText = newText; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void setName(String v) +/* */ { +/* 289 */ super.setName(getBangName(v)); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ private String getBangName(String s) +/* */ { +/* 298 */ boolean hasBang = s.startsWith("!"); +/* */ +/* 300 */ if (hasBang != isDynamic()) { +/* 301 */ if (hasBang) { +/* 302 */ return s.substring(1); +/* */ } +/* 304 */ return "!" + s; +/* */ } +/* */ +/* 307 */ return s; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void markEdited() +/* */ { +/* 316 */ if (!isDynamic()) { +/* 317 */ super.markEdited(); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void getChildren(DeepEnumeration d) +/* */ { +/* 328 */ if (this.contents != null) +/* 329 */ d.addChildVector(this.contents); +/* 330 */ if (this.eventHandlers != null) +/* 331 */ d.addChildVector(this.eventHandlers); +/* 332 */ if (this.actions != null) +/* 333 */ d.addChildVectorAction(this.actions); +/* 334 */ if (this._sharer != null) { +/* 335 */ d.addChildElement(this._sharer); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 354 */ private Vector<WObject> contents = null; +/* */ private Shadow shadow; +/* */ public static boolean shadowsOn; +/* */ +/* */ public void add(WObject child) +/* */ { +/* 360 */ super.add(child); +/* */ +/* */ +/* 363 */ if (hasClump()) { +/* 364 */ child.recursiveAddRwChildren(this); +/* */ } +/* 366 */ if (child._sharer != null) { +/* 367 */ child._sharer.adjustShare(); +/* */ } +/* 369 */ if (this.contents == null) +/* 370 */ this.contents = new Vector(); +/* 371 */ this.contents.addElement(child); +/* */ } +/* */ +/* */ +/* */ +/* */ public Enumeration<WObject> getContents() +/* */ { +/* 378 */ if (this.contents == null) { +/* 379 */ return new Vector().elements(); +/* */ } +/* 381 */ return this.contents.elements(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public boolean hasContents() +/* */ { +/* 389 */ return this.contents != null; +/* */ } +/* */ +/* */ +/* */ +/* */ public boolean contentsContain(WObject w) +/* */ { +/* 396 */ if (this.contents == null) { +/* 397 */ return false; +/* */ } +/* 399 */ return this.contents.contains(w); +/* */ } +/* */ +/* */ +/* */ protected void noteUnadding(SuperRoot child) +/* */ { +/* 405 */ if ((this.contents != null) && (this.contents.removeElement(child)) && +/* 406 */ (this.contents.size() == 0)) { +/* 407 */ this.contents = null; +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void makeShadow() +/* */ { +/* 425 */ assert (this.shadow == null); +/* 426 */ this.shadow = new DiskShadow(this); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void detach() +/* */ { +/* 440 */ if (this.clumpID != 0) { +/* 441 */ markVoid(); +/* */ } +/* 443 */ super.detach(); +/* */ +/* 445 */ if (this._sharer != null) { +/* 446 */ this._sharer.adjustShare(); +/* */ } +/* 448 */ if (this.shadow != null) { +/* 449 */ this.shadow.adjustShadow(this); +/* 450 */ this.shadow = null; +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* 457 */ protected boolean discarded = false; +/* */ protected int clumpID; +/* */ +/* */ public void discard() { +/* 461 */ super.discard(); +/* */ +/* 463 */ this.discarded = true; +/* */ +/* 465 */ if (this.contents != null) { +/* 466 */ int i = this.contents.size(); +/* 467 */ do { ((WObject)this.contents.elementAt(i)).discard();i--; +/* 466 */ } while (i >= 0); +/* */ } +/* */ +/* 469 */ if (this.eventHandlers != null) { +/* 470 */ int i = this.eventHandlers.size(); +/* 471 */ do { removeHandler((SuperRoot)this.eventHandlers.elementAt(i));i--; +/* 470 */ } while (i >= 0); +/* */ } +/* */ +/* 473 */ if (this.actions != null) { +/* 474 */ int i = this.actions.size(); +/* 475 */ do { removeAction((Action)this.actions.elementAt(i));i--; +/* 474 */ } while (i >= 0); +/* */ } +/* */ +/* 477 */ releaseAuxilaryData(); +/* */ } +/* */ +/* */ protected void finalize() +/* */ { +/* 482 */ if (!this.discarded) { +/* 483 */ releaseAuxilaryData(); +/* */ } +/* */ +/* 486 */ super.finalize(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void reclump() +/* */ { +/* 505 */ if (this.clumpID != 0) { +/* 506 */ assert ((this.flags & 0x200000) == 0); +/* 507 */ this.flags |= 0x200000; +/* */ +/* 509 */ markVoid(); +/* */ +/* */ +/* */ +/* */ +/* */ +/* 515 */ recursiveAddRwChildren((WObject)getOwner()); +/* */ +/* 517 */ assert ((this.flags & 0x200000) != 0); +/* 518 */ this.flags &= 0xFFDFFFFF; +/* */ } +/* */ } +/* */ +/* */ public boolean isReclumping() { +/* 523 */ return (this.flags & 0x200000) != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected void noteTransformChange() +/* */ { +/* 542 */ setClumpMatrix(); +/* 543 */ updateHighlight(); +/* */ +/* 545 */ if (this.shadow != null) { +/* 546 */ this.shadow.adjustShadow(this); +/* */ } +/* 548 */ if (this._transformAttribute != null) { +/* 549 */ this._transformAttribute.noteChange(); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected void markVoid() +/* */ { +/* 559 */ if (this.contents != null) { +/* 560 */ int i = this.contents.size(); +/* 561 */ do { ((WObject)this.contents.elementAt(i)).markVoid();i--; +/* 560 */ } while (i >= 0); +/* */ } +/* */ +/* */ +/* 564 */ Room r = getRoomFromClump(); +/* */ +/* 566 */ if ((this instanceof FrameHandler)) { +/* 567 */ r.removeFrameHandler((FrameHandler)this, this); +/* */ } +/* 569 */ if (this.eventHandlers != null) { +/* 570 */ int i = this.eventHandlers.size(); +/* 571 */ do { Object f = this.eventHandlers.elementAt(i); +/* 572 */ if ((f instanceof FrameHandler)) { +/* 573 */ r.removeFrameHandler((FrameHandler)f, this); +/* */ } +/* 570 */ i--; } while (i >= 0); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* 576 */ voidClump(); +/* */ +/* 578 */ if (this.shadow != null) { +/* 579 */ this.shadow.adjustShadow(this); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected void addRwChildren(WObject parent) +/* */ { +/* 597 */ addNewRwChild(parent); +/* */ } +/* */ +/* */ public void recursiveAddRwChildren(WObject parent) { +/* 601 */ addRwChildren(parent); +/* */ +/* 603 */ if (this.contents != null) { +/* 604 */ int end = this.contents.size(); +/* 605 */ for (int i = 0; i < end; i++) { +/* 606 */ ((WObject)this.contents.elementAt(i)).recursiveAddRwChildren(this); +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected final void addNewRwChild(WObject container) +/* */ { +/* 621 */ assert (this.clumpID == 0); +/* */ +/* 623 */ createClump(); +/* */ +/* 625 */ newRwClumpChildHelper(container); +/* */ } +/* */ +/* */ +/* */ +/* */ protected void newRwClumpChildHelper(WObject container) +/* */ { +/* 632 */ assert (container != null); +/* */ +/* */ +/* 635 */ addChildToClump(container); +/* */ +/* */ +/* 638 */ newRwChildHelper(); +/* */ +/* */ +/* */ +/* */ +/* 643 */ if (!getVisible()) { +/* 644 */ updateVisible(); +/* */ } +/* */ +/* 647 */ if (this.shadow != null) { +/* 648 */ this.shadow.adjustShadow(this); +/* */ } +/* */ else { +/* 651 */ if (getShadowedLocally() ? !getLocalShadowed() : !shadowsOn) { +/* 652 */ return; +/* */ } +/* */ +/* 655 */ if (inRoomContents()) +/* */ { +/* 657 */ if ((getOwner() instanceof Room)) { +/* 658 */ makeShadow(); +/* */ } +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ protected void newRwChildHelper() +/* */ { +/* 669 */ initClumpData(); +/* */ +/* 671 */ setClumpMatrix(); +/* */ +/* */ +/* 674 */ Room r = getRoom(); +/* */ +/* 676 */ if ((this instanceof FrameHandler)) { +/* 677 */ r.addFrameHandler((FrameHandler)this, this); +/* */ } +/* 679 */ if (this.eventHandlers != null) { +/* 680 */ for (int i = 0; i < this.eventHandlers.size(); i++) { +/* 681 */ Object f = this.eventHandlers.elementAt(i); +/* 682 */ if ((f instanceof FrameHandler)) { +/* 683 */ r.addFrameHandler((FrameHandler)f, this); +/* */ } +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public final boolean hasClump() +/* */ { +/* 700 */ return this.clumpID != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ public final int getID() +/* */ { +/* 707 */ return this.clumpID; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Point3Temp inCamSpace(Camera cam) +/* */ { +/* 724 */ Point3Temp p = Point3Temp.make(); +/* 725 */ return nativeInCamSpace(cam, p) ? p : null; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Transform getObjectToWorldMatrix() +/* */ { +/* 776 */ if (hasClump()) { +/* 777 */ return getObjectToWorldMatrix(Transform.make()); +/* */ } +/* 779 */ Transform t = getTransform(); +/* */ +/* 781 */ SuperRoot o = getOwner(); +/* 782 */ if ((o instanceof WObject)) { +/* 783 */ Transform ot = ((WObject)o).getObjectToWorldMatrix(); +/* 784 */ t.post(ot); +/* 785 */ ot.recycle(); +/* */ } +/* */ +/* 788 */ return t; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Point3Temp getWorldPosition() +/* */ { +/* 805 */ Transform t = getObjectToWorldMatrix(); +/* 806 */ Point3Temp ret = t.getPosition(); +/* 807 */ t.recycle(); +/* 808 */ return ret; +/* */ } +/* */ +/* 811 */ protected int highlightID = 0; +/* */ protected static final int isVisibleMask = 1; +/* */ protected static final int isBumpableMask = 2; +/* */ protected static final int isHologramRoughCutMask = 4; +/* */ protected static final int isMirrored = 4; +/* */ protected static final int isOptimizableMask = 8; +/* */ protected static final int isDrawFirstOnIntersectionMask = 16; +/* */ protected static final int isDrawOrderUnimportantMask = 32; +/* */ protected static final int isMaterialVisible = 64; +/* */ protected static final int isHighlitMask = 128; +/* */ protected static final int isAutoGapMask = 256; +/* */ protected static final int isAutoGapFromLocalMask = 512; +/* */ protected static final int isDisablePixelDoublingMask = 1024; +/* */ +/* */ public BoundBoxTemp getClumpBBox() { +/* 826 */ Point3Temp start = Point3Temp.make(); +/* 827 */ Point3Temp right = Point3Temp.make(); +/* */ +/* 829 */ getClumpBBox(start, right); +/* */ +/* 831 */ return BoundBoxTemp.make(start, right); +/* */ } +/* */ +/* */ +/* */ +/* */ protected static final int isSharerMode0 = 2048; +/* */ +/* */ +/* */ protected static final int isSharerMode1 = 4096; +/* */ +/* */ +/* */ protected static final int isSharerMode2 = 8192; +/* */ +/* */ +/* */ protected static final int duringRestore = 16384; +/* */ +/* */ +/* */ protected static final int isShadowedLocally = 32768; +/* */ +/* */ protected static final int isShadowed = 65536; +/* */ +/* */ protected static final int isAutobuiltMask = 131072; +/* */ +/* */ protected static final int isHologramViewplaneAlignedMask = 262144; +/* */ +/* */ protected static final int isDontConnect = 262144; +/* */ +/* */ protected static final int isSurfaceUFlippedMask = 524288; +/* */ +/* */ protected static final int isSurfaceVFlippedMask = 1048576; +/* */ +/* */ protected static final int isReclumpingMask = 2097152; +/* */ +/* */ protected static final int isHologramAutosize = 4194304; +/* */ +/* 866 */ protected int flags = 3; +/* */ Vector<Object> eventHandlers; +/* */ +/* */ public WObject setHighlit(boolean b) { +/* 870 */ if (b) { +/* 871 */ this.flags |= 0x80; +/* */ } else { +/* 873 */ this.flags &= 0xFF7F; +/* */ } +/* 875 */ updateHighlight(); +/* 876 */ return this; +/* */ } +/* */ +/* */ public final boolean getHighlit() { +/* 880 */ return (this.flags & 0x80) != 0; +/* */ } +/* */ +/* */ public void setAutobuilt(boolean b) { +/* 884 */ if (b) { +/* 885 */ this.flags |= 0x20000; +/* */ } else { +/* 887 */ this.flags &= 0xFFFDFFFF; +/* */ } +/* */ } +/* */ +/* */ public final boolean getAutobuilt() +/* */ { +/* 893 */ return (this.flags & 0x20000) != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public WObject setOptimizable(boolean b) +/* */ { +/* 901 */ if (b) { +/* 902 */ this.flags |= 0x8; +/* */ } else { +/* 904 */ this.flags &= 0xFFFFFFF7; +/* */ } +/* 906 */ return this; +/* */ } +/* */ +/* */ public final boolean getOptimizable() { +/* 910 */ return (this.flags & 0x8) != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ final void setSharerMode(int mode) +/* */ { +/* 920 */ assert ((mode >= 0) && (mode < 8)); +/* */ +/* 922 */ this.flags &= 0xC7FF; +/* 923 */ this.flags |= mode << 11; +/* */ +/* */ +/* 926 */ setName(getName()); +/* */ } +/* */ +/* */ final int getSharerMode() { +/* 930 */ return this.flags >>> 11 & 0x7; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public final boolean isDynamic() +/* */ { +/* 938 */ return (getSharerMode() & 0x4) != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public WObject setLocalAutoGap(boolean b) +/* */ { +/* 947 */ if (b) { +/* 948 */ this.flags |= 0x100; +/* */ } else { +/* 950 */ this.flags &= 0xFEFF; +/* */ } +/* */ +/* */ +/* 954 */ if ((this instanceof Room)) { +/* 955 */ for (Enumeration<Object> e = getDeepOwned(); e.hasMoreElements();) { +/* 956 */ Object o = e.nextElement(); +/* 957 */ if ((o instanceof WObject)) { +/* 958 */ ((WObject)o).noteTransformChange(); +/* */ } +/* */ } +/* */ } +/* 962 */ return this; +/* */ } +/* */ +/* */ public final boolean getLocalAutoGap() { +/* 966 */ return (this.flags & 0x100) != 0; +/* */ } +/* */ +/* */ public WObject setAutoGapFromRoom(boolean b) { +/* 970 */ if (b) { +/* 971 */ this.flags &= 0xFDFF; +/* */ } else { +/* 973 */ this.flags |= 0x200; +/* */ } +/* 975 */ noteTransformChange(); +/* 976 */ return this; +/* */ } +/* */ +/* */ public final boolean getAutoGapFromRoom() { +/* 980 */ return (this.flags & 0x200) == 0; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public boolean getAutoGap() +/* */ { +/* 989 */ return (getAutoGapFromRoom() ? getRoom() : this).getLocalAutoGap(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void setVisible(boolean b) +/* */ { +/* 998 */ if (b != getVisible()) { +/* 999 */ if (b) { +/* 1000 */ this.flags |= 0x1; +/* */ } else { +/* 1002 */ this.flags &= 0xFFFFFFFE; +/* */ } +/* 1004 */ updateVisible(); +/* */ +/* 1006 */ if (this.shadow != null) { +/* 1007 */ this.shadow.adjustShadow(this); +/* */ } +/* 1009 */ if (this._visibilityAttribute != null) { +/* 1010 */ this._visibilityAttribute.noteChange(); +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* */ public boolean getLocalShadowed() +/* */ { +/* 1018 */ return (this.flags & 0x10000) != 0; +/* */ } +/* */ +/* */ public void setLocalShadowed(boolean b) { +/* 1022 */ if (b) { +/* 1023 */ this.flags |= 0x10000; +/* */ } else { +/* 1025 */ this.flags &= 0xFFFEFFFF; +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ public boolean getShadowedLocally() +/* */ { +/* 1033 */ return (this.flags & 0x8000) != 0; +/* */ } +/* */ +/* */ public void setShadowedLocally(boolean b) { +/* 1037 */ if (b) { +/* 1038 */ this.flags |= 0x8000; +/* */ } else { +/* 1040 */ this.flags &= 0xFFFF7FFF; +/* */ } +/* */ } +/* */ +/* */ +/* */ public final boolean getVisible() +/* */ { +/* 1047 */ return (this.flags & 0x1) != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ public WObject setBumpable(boolean b) +/* */ { +/* 1054 */ if (b) { +/* 1055 */ this.flags |= 0x2; +/* */ } else { +/* 1057 */ this.flags &= 0xFFFFFFFD; +/* */ } +/* 1059 */ if (this._bumpableAttribute != null) { +/* 1060 */ this._bumpableAttribute.noteChange(); +/* */ } +/* 1062 */ return this; +/* */ } +/* */ +/* */ public final boolean getBumpable() { +/* 1066 */ return (this.flags & 0x2) != 0; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public boolean deliver(Event event) +/* */ { +/* 1085 */ event.receiver = this; +/* 1086 */ boolean delivered = event.deliver(this); +/* */ +/* 1088 */ if (this.eventHandlers != null) { +/* 1089 */ for (Enumeration<Object> e = this.eventHandlers.elements(); e.hasMoreElements();) { +/* 1090 */ event.receiver = this; +/* 1091 */ if (event.deliver(e.nextElement())) +/* 1092 */ delivered = true; +/* */ } +/* */ } +/* 1095 */ if (delivered) { +/* 1096 */ return true; +/* */ } +/* 1098 */ if ((event instanceof UserEvent)) { +/* 1099 */ Object o = getOwner(); +/* 1100 */ if ((o instanceof WObject)) { +/* 1101 */ return ((WObject)o).deliver(event); +/* */ } +/* */ } +/* 1104 */ return false; +/* */ } +/* */ +/* */ public Enumeration<Object> getHandlers() +/* */ { +/* 1109 */ if (this.eventHandlers == null) { +/* 1110 */ return new Vector().elements(); +/* */ } +/* 1112 */ return this.eventHandlers.elements(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public boolean hasHandler(SuperRoot h) +/* */ { +/* 1121 */ return (this.eventHandlers != null) && (this.eventHandlers.indexOf(h) != -1); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public WObject addHandler(SuperRoot h) +/* */ { +/* 1130 */ if (this.eventHandlers == null) +/* 1131 */ this.eventHandlers = new Vector(); +/* 1132 */ this.eventHandlers.addElement(h); +/* */ +/* */ +/* 1135 */ if ((this.clumpID != 0) && ((h instanceof FrameHandler))) { +/* 1136 */ getRoomFromClump().addFrameHandler((FrameHandler)h, this); +/* */ } +/* 1138 */ super.add(h); +/* 1139 */ return this; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public Room getRoom() +/* */ { +/* 1147 */ return this.clumpID != 0 ? getRoomFromClump() : getRoomNotFromClump(); +/* */ } +/* */ +/* */ +/* */ +/* */ public Room getRoomNotFromClump() +/* */ { +/* 1154 */ SuperRoot o = getOwner(); +/* 1155 */ if ((o instanceof WObject)) { +/* 1156 */ return ((WObject)o).getRoomNotFromClump(); +/* */ } +/* 1158 */ return null; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public World getWorld() +/* */ { +/* 1180 */ if (this.clumpID != 0) { +/* 1181 */ return getRoomFromClump().getWorld(); +/* */ } +/* 1183 */ Room r = getRoomNotFromClump(); +/* 1184 */ return r == null ? null : r.getWorld(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public boolean isActive() +/* */ { +/* 1193 */ if (this.clumpID != 0) { +/* 1194 */ return true; +/* */ } +/* 1196 */ return super.isActive(); +/* */ } +/* */ +/* */ +/* */ +/* */ public void removeHandler(SuperRoot h) +/* */ { +/* 1203 */ if (this.eventHandlers.contains(h)) { +/* 1204 */ h.detach(); +/* */ +/* 1206 */ this.eventHandlers.removeElement(h); +/* 1207 */ if (this.eventHandlers.size() == 0) { +/* 1208 */ this.eventHandlers = null; +/* */ } +/* 1210 */ if ((this.clumpID != 0) && ((h instanceof FrameHandler))) { +/* 1211 */ getRoomFromClump().removeFrameHandler((FrameHandler)h, this); +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* 1218 */ protected Vector<Action> actions = null; +/* */ +/* */ +/* */ +/* */ public Enumeration<Action> getActions() +/* */ { +/* 1224 */ if (this.actions == null) +/* 1225 */ return new Vector().elements(); +/* 1226 */ return this.actions.elements(); +/* */ } +/* */ +/* */ +/* */ +/* */ public boolean hasActions() +/* */ { +/* 1233 */ return this.actions != null; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public WObject addAction(Action a) +/* */ { +/* 1242 */ if (this.actions == null) { +/* 1243 */ this.actions = new Vector(); +/* */ } +/* 1245 */ this.actions.addElement(a); +/* */ +/* 1247 */ super.add(a); +/* 1248 */ return this; +/* */ } +/* */ +/* */ +/* */ +/* */ public void removeAction(Action a) +/* */ { +/* 1255 */ assert (a.getOwner() == this); +/* */ +/* 1257 */ a.detach(); +/* */ +/* 1259 */ this.actions.removeElement(a); +/* 1260 */ if (this.actions.size() == 0) { +/* 1261 */ this.actions = null; +/* */ } +/* */ } +/* */ +/* */ +/* */ public void rightMenu() +/* */ { +/* 1268 */ RightMenu rm = new RightMenu(this, getActions()); +/* */ } +/* */ +/* */ +/* */ public void doAction(String actionLabel, Event evt) +/* */ { +/* 1274 */ if ((actionLabel == null) || (actionLabel.equals(""))) { +/* 1275 */ return; +/* */ } +/* 1277 */ if ((Gamma.getShaper() != null) && +/* 1278 */ (actionLabel.equals("Edit Properties..."))) { +/* 1279 */ Console.getFrame().getEditTile().viewProperties(this); +/* 1280 */ } else if (this.actions != null) { +/* 1281 */ int i = 0; +/* 1282 */ while (i < this.actions.size()) { +/* 1283 */ Action candidate = (Action)this.actions.elementAt(i); +/* 1284 */ i++; +/* 1285 */ if (actionLabel.equals(candidate.rightMenuLabel)) { +/* 1286 */ RunningActionHandler.trigger(candidate, getWorld(), evt); +/* */ } +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* 1293 */ protected BumpCalc bumpCalc = null; +/* */ static BumpCalc standardBoxBumpCalc; +/* */ +/* 1296 */ public WObject setBumpCalc(BumpCalc b) { if (this.bumpCalc != null) { +/* 1297 */ this.bumpCalc.detach(); +/* */ } +/* 1299 */ this.bumpCalc = b; +/* 1300 */ if (this.bumpCalc != null) { +/* 1301 */ super.add(this.bumpCalc); +/* */ } +/* 1303 */ return this; +/* */ } +/* */ +/* */ static +/* */ { +/* 227 */ nativeInit(); +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 418 */ shadowsOn = IniFile.gamma().getIniInt("shadows", 0) != 0; +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 1306 */ standardBoxBumpCalc = new BoxBumpCalc(); +/* */ +/* */ +/* 1309 */ standardBoxBumpCalc.setName("defaultBoxBumpCalc"); +/* */ } +/* */ +/* */ +/* */ +/* */ public BumpCalc getBumpCalc(BumpEventTemp b) +/* */ { +/* 1316 */ if (this.bumpCalc == null) +/* 1317 */ return standardBoxBumpCalc; +/* 1318 */ return this.bumpCalc; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Point3Temp getPlaneExtent() +/* */ { +/* 1327 */ return Point3Temp.make(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public BoundBoxTemp getBoundBox() +/* */ { +/* 1337 */ if (getVisible()) { +/* 1338 */ return getClumpBBox(); +/* */ } +/* 1340 */ Transform xfrm = getObjectToWorldMatrix(); +/* */ +/* 1342 */ BoundBoxTemp ret = BoundBoxTemp.make(xfrm.getPosition(), +/* 1343 */ getPlaneExtent().times(xfrm)); +/* 1344 */ xfrm.recycle(); +/* */ +/* 1346 */ return ret; +/* */ } +/* */ +/* */ +/* */ +/* */ public float getMinXYExtent() +/* */ { +/* 1353 */ if (getVisible()) { +/* 1354 */ return getClumpMinXYExtent(); +/* */ } +/* 1356 */ BoundBoxTemp box = getBoundBox(); +/* 1357 */ float x = box.hi.x - box.lo.x; +/* 1358 */ float y = box.hi.y - box.lo.y; +/* */ +/* 1360 */ return x < y ? x : y; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void detectBump(BumpEventTemp b) +/* */ { +/* 1373 */ BoundBoxTemp box = getBoundBox(); +/* 1374 */ if ((!box.isEmpty()) && (b.bound.overlaps(box))) { +/* 1375 */ getBumpCalc(b).detectBump(b, this); +/* */ } +/* 1377 */ if (this.contents != null) { +/* 1378 */ int i = this.contents.size(); +/* 1379 */ do { WObject w = (WObject)this.contents.elementAt(i); +/* 1380 */ if ((w.getBumpable()) && (b.source != w)) { +/* 1381 */ w.detectBump(b); +/* */ } +/* 1378 */ i--; } while (i >= 0); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void premoveThrough(Point3Temp motion) +/* */ { +/* 1390 */ Point3Temp pos = getPosition(); +/* */ +/* 1392 */ moveThrough(Point3Temp.make(motion).times(this).minus(pos)); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected WObject changeRoom(Room newRoom, Transform invPos) +/* */ { +/* 1494 */ detach(); +/* 1495 */ newRoom.add(this); +/* 1496 */ makeIdentity(); +/* 1497 */ pre(invPos); +/* 1498 */ return this; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Object properties(int index, int offset, int mode, Object value) +/* */ throws NoSuchPropertyException +/* */ { +/* 1509 */ Object ret = null; +/* */ +/* 1511 */ switch (index - offset) { +/* */ case 0: +/* 1513 */ if (mode == 0) { +/* 1514 */ ret = +/* 1515 */ PropAdder.make(new VectorProperty(this, index, "Contents")); +/* 1516 */ } else if (mode == 1) { +/* 1517 */ if (this.contents != null) +/* 1518 */ ret = this.contents.clone(); +/* 1519 */ } else if (mode == 4) { +/* 1520 */ ((WObject)value).detach(); +/* 1521 */ } else if (mode == 3) { +/* 1522 */ add((WObject)value); +/* 1523 */ } else if ((mode == 5) && ((value instanceof WObject)) && +/* 1524 */ (!(value instanceof Room))) +/* 1525 */ ret = value; +/* 1526 */ break; +/* */ case 1: +/* 1528 */ if (mode == 0) { +/* 1529 */ ret = PropAdder.make(new VectorProperty(this, index, +/* 1530 */ "Event Handlers")); +/* 1531 */ } else if (mode == 1) { +/* 1532 */ if (this.eventHandlers != null) +/* 1533 */ ret = this.eventHandlers.clone(); +/* 1534 */ } else if (mode == 4) { +/* 1535 */ removeHandler((SuperRoot)value); +/* 1536 */ } else if (mode == 3) { +/* 1537 */ addHandler((SuperRoot)value); +/* 1538 */ } else if ((mode == 5) && ( +/* 1539 */ ((value instanceof SwitchableBehavior)) || ((value instanceof Sensor)))) +/* 1540 */ ret = value; +/* 1541 */ break; +/* */ case 2: +/* 1543 */ if (mode == 0) { +/* 1544 */ ret = +/* 1545 */ PropAdder.make(new VectorProperty(this, index, "Actions")); +/* 1546 */ } else if (mode == 1) { +/* 1547 */ if (this.actions != null) +/* 1548 */ ret = this.actions.clone(); +/* 1549 */ } else if (mode == 4) { +/* 1550 */ removeAction((Action)value); +/* 1551 */ } else if (mode == 3) { +/* 1552 */ addAction((Action)value); +/* 1553 */ } else if ((mode == 5) && ((value instanceof Action))) +/* 1554 */ ret = value; +/* 1555 */ break; +/* */ case 3: +/* 1557 */ if (mode == 0) { +/* 1558 */ ret = BooleanPropertyEditor.make(new Property(this, index, +/* 1559 */ "Bumpable"), "No", "Yes"); +/* 1560 */ } else if (mode == 1) { +/* 1561 */ ret = new Boolean(getBumpable()); +/* 1562 */ } else if (mode == 2) +/* 1563 */ setBumpable(((Boolean)value).booleanValue()); +/* 1564 */ break; +/* */ case 4: +/* 1566 */ if (mode == 0) { +/* 1567 */ ret = BooleanPropertyEditor.make(new Property(this, index, +/* 1568 */ "Visible"), "No", "Yes"); +/* 1569 */ } else if (mode == 1) { +/* 1570 */ ret = new Boolean(getVisible()); +/* 1571 */ } else if (mode == 2) +/* 1572 */ setVisible(((Boolean)value).booleanValue()); +/* 1573 */ break; +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ case 5: +/* 1586 */ if (mode == 0) { +/* 1587 */ ret = IntegerPropertyEditor.make(new Property(this, index, +/* 1588 */ "Sharing Mode (100 for help)", true)); +/* 1589 */ } else if (mode == 1) { +/* 1590 */ ret = new Integer(getSharerMode()); +/* 1591 */ } else if (mode == 2) { +/* 1592 */ int val = ((Integer)value).intValue(); +/* 1593 */ if (((this instanceof Room)) && (val >= 0) && (val <= 5)) { +/* 1594 */ Console.println("A Room's sharing mode\nmust be 2, and is\nautomatically set by the shaper."); +/* */ +/* */ } +/* 1597 */ else if ((val != 0) && (val != 3) && (val != 5)) { +/* 1598 */ Console.println("0 = default (chooses 2 or 3 for you)"); +/* 1599 */ Console.println("2 = static (stored in .world)"); +/* 1600 */ Console.println("3 = forwarded static"); +/* 1601 */ Console.println("4 = dynamic (stored only on server)"); +/* 1602 */ Console.println("5 = forwarded dynamic"); +/* 1603 */ Console.println("Modes 2, and 4, are not generally\nsupported, except that mode 2\nis required for Rooms"); +/* */ +/* */ } +/* 1606 */ else if ((val == 5) && (getSourceURL() == null)) { +/* 1607 */ Console.println("Only WObjects read from files may be forwarded dynamic."); +/* */ } +/* */ else { +/* 1610 */ getSharer().setMode(val); +/* */ } } +/* 1612 */ break; +/* */ +/* */ case 6: +/* 1615 */ if (mode == 0) { +/* 1616 */ ret = PropAdder.make(new VectorProperty(this, index, +/* 1617 */ "Shared Attributes")); +/* 1618 */ } else if (mode == 1) { +/* 1619 */ if (this._sharer != null) { +/* 1620 */ ret = this._sharer.getAttributesList(); +/* */ } else +/* 1622 */ ret = new Vector(); +/* 1623 */ } else if (mode == 4) { +/* 1624 */ removeShareableAttribute((Attribute)value); +/* 1625 */ } else if (mode == 3) { +/* 1626 */ addShareableAttribute((Attribute)value); +/* 1627 */ } else if ((mode == 5) && ((value instanceof Attribute))) +/* 1628 */ ret = value; +/* 1629 */ break; +/* */ case 7: +/* 1631 */ if (mode == 0) { +/* 1632 */ ret = StringPropertyEditor.make(new Property(this, index, +/* 1633 */ "Tool Tip Text")); +/* */ } +/* 1635 */ else if (mode == 1) { +/* 1636 */ ret = getToolTipText(); +/* 1637 */ } else if (mode == 2) { +/* 1638 */ setToolTipText((String)value); +/* */ } +/* 1640 */ break; +/* */ case 8: +/* 1642 */ if (mode == 0) { +/* 1643 */ ret = BooleanPropertyEditor.make(new Property(this, index, +/* 1644 */ "Mouse Change"), "No", "Yes"); +/* 1645 */ } else if (mode == 1) { +/* 1646 */ ret = new Boolean(getMouseOver()); +/* 1647 */ } else if (mode == 2) { +/* 1648 */ setMouseOver(((Boolean)value).booleanValue()); +/* */ } +/* 1650 */ break; +/* */ +/* */ default: +/* 1653 */ ret = super.properties(index, offset + 9, mode, value); +/* */ } +/* */ +/* 1656 */ return ret; +/* */ } +/* */ +/* */ +/* */ +/* 1661 */ private static Object classCookie = new Object(); +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public static void saveUnsharedWObjects(Saver s, Vector<WObject> v) +/* */ throws IOException +/* */ { +/* 1671 */ int length = 0; +/* 1672 */ for (Enumeration<WObject> en = v.elements(); en.hasMoreElements();) { +/* 1673 */ WObject w = (WObject)en.nextElement(); +/* 1674 */ if (((w instanceof Persister)) && (!(w instanceof NonPersister)) && +/* 1675 */ (!w.isDynamic())) { +/* 1676 */ length++; +/* */ } +/* */ } +/* 1679 */ s.saveInt(length); +/* 1680 */ for (Enumeration<WObject> en = v.elements(); en.hasMoreElements();) { +/* 1681 */ WObject w = (WObject)en.nextElement(); +/* 1682 */ if (((w instanceof Persister)) && (!(w instanceof NonPersister)) && +/* 1683 */ (!w.isDynamic())) { +/* 1684 */ s.save(w); +/* */ } +/* */ } +/* */ } +/* */ +/* */ public void saveState(Saver s) throws IOException { +/* 1690 */ s.saveVersion(10, classCookie); +/* 1691 */ super.saveState(s); +/* */ +/* 1693 */ s.saveInt(this.flags & 0xFF7F); +/* */ +/* */ +/* 1696 */ if (this.contents == null) { +/* 1697 */ s.saveBoolean(false); +/* */ } else { +/* 1699 */ s.saveBoolean(true); +/* 1700 */ saveUnsharedWObjects(s, this.contents); +/* */ } +/* */ +/* 1703 */ s.saveVectorMaybeNull(this.eventHandlers); +/* 1704 */ s.saveVectorMaybeNull(this.actions); +/* 1705 */ s.saveMaybeNull(this.bumpCalc); +/* */ +/* */ +/* 1708 */ if ((this._sharer != null) && (this._sharer.isEmpty())) { +/* 1709 */ s.saveMaybeNull(null); +/* */ } else { +/* 1711 */ s.saveMaybeNull(this._sharer); +/* */ } +/* 1713 */ s.saveString(getToolTipText()); +/* 1714 */ s.saveBoolean(getMouseOver()); +/* */ } +/* */ +/* */ public void restoreState(Restorer r) throws IOException, TooNewException +/* */ { +/* 1719 */ restoreWObjectState(r); +/* */ } +/* */ +/* */ public void restoreWObjectState(Restorer r) throws IOException, TooNewException +/* */ { +/* 1724 */ Vector<Object> newContents = null; +/* 1725 */ Vector<Object> newActions = null; +/* 1726 */ Vector<Object> newHandlers = null; +/* */ +/* */ +/* */ +/* 1730 */ int vers = r.restoreVersion(classCookie); +/* 1731 */ switch (vers) { +/* */ case 0: +/* 1733 */ r.setOldFlag(); +/* 1734 */ super.restoreState(r); +/* */ +/* 1736 */ this.flags = r.restoreInt(); +/* 1737 */ r.restoreMaybeNull(); +/* 1738 */ this.flags |= 0x4000; +/* */ +/* 1740 */ newContents = r.restoreVectorMaybeNull(); +/* 1741 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1742 */ newActions = new Vector(); +/* 1743 */ break; +/* */ case 1: +/* 1745 */ r.setOldFlag(); +/* 1746 */ super.restoreState(r); +/* */ +/* 1748 */ this.flags = r.restoreInt(); +/* 1749 */ r.restoreMaybeNull(); +/* 1750 */ this.flags |= 0x4000; +/* */ +/* 1752 */ newContents = r.restoreVectorMaybeNull(); +/* 1753 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1754 */ newActions = r.restoreVectorMaybeNull(); +/* 1755 */ break; +/* */ case 2: +/* 1757 */ r.setOldFlag(); +/* 1758 */ super.restoreState(r); +/* 1759 */ this.flags = (r.restoreInt() | 0x4000); +/* 1760 */ newContents = r.restoreVectorMaybeNull(); +/* 1761 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1762 */ newActions = r.restoreVectorMaybeNull(); +/* 1763 */ break; +/* */ case 3: +/* 1765 */ super.restoreState(r); +/* 1766 */ this.flags = (r.restoreInt() | 0x4000); +/* 1767 */ newContents = r.restoreVectorMaybeNull(); +/* 1768 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1769 */ newActions = r.restoreVectorMaybeNull(); +/* 1770 */ r.restore(); +/* 1771 */ break; +/* */ case 4: +/* 1773 */ super.restoreState(r); +/* 1774 */ this.flags = (r.restoreInt() | 0x4000); +/* 1775 */ newContents = r.restoreVectorMaybeNull(); +/* 1776 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1777 */ newActions = r.restoreVectorMaybeNull(); +/* 1778 */ r.restore(); +/* 1779 */ this._sharer = ((Sharer)r.restoreMaybeNull()); +/* 1780 */ break; +/* */ case 5: +/* */ case 7: +/* */ case 8: +/* 1784 */ super.restoreState(r); +/* 1785 */ this.flags = (r.restoreInt() | 0x4000); +/* 1786 */ newContents = r.restoreVectorMaybeNull(); +/* 1787 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1788 */ newActions = r.restoreVectorMaybeNull(); +/* 1789 */ setBumpCalc((BumpCalc)r.restoreMaybeNull()); +/* 1790 */ this._sharer = ((Sharer)r.restoreMaybeNull()); +/* 1791 */ break; +/* */ case 9: +/* 1793 */ super.restoreState(r); +/* 1794 */ this.flags = (r.restoreInt() | 0x4000); +/* 1795 */ newContents = r.restoreVectorMaybeNull(); +/* 1796 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1797 */ newActions = r.restoreVectorMaybeNull(); +/* 1798 */ setBumpCalc((BumpCalc)r.restoreMaybeNull()); +/* 1799 */ this._sharer = ((Sharer)r.restoreMaybeNull()); +/* 1800 */ setToolTipText(r.restoreString()); +/* 1801 */ break; +/* */ case 10: +/* */ try { +/* 1804 */ super.restoreState(r); +/* 1805 */ this.flags = (r.restoreInt() | 0x4000); +/* 1806 */ newContents = r.restoreVectorMaybeNull(); +/* 1807 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1808 */ newActions = r.restoreVectorMaybeNull(); +/* 1809 */ setBumpCalc((BumpCalc)r.restoreMaybeNull()); +/* 1810 */ this._sharer = ((Sharer)r.restoreMaybeNull()); +/* */ +/* */ +/* 1813 */ setToolTipText(null); +/* 1814 */ if (!r.restoreBoolean()) { +/* 1815 */ short len = r.restoreShort(); +/* 1816 */ for (int i = 0; i < len; i++) { +/* 1817 */ r.restoreByte(); +/* */ } +/* */ } +/* */ +/* 1821 */ setMouseOver(r.restoreBoolean()); +/* */ } catch (Exception ex) { +/* 1823 */ Debug.LogDebug(ex.toString()); +/* 1824 */ Debug.LogDebug(ex.getMessage()); +/* 1825 */ ex.printStackTrace(); +/* */ +/* */ +/* 1828 */ Debug.LogDebug("error: " + toString()); +/* 1829 */ Debug.LogDebug("location: " + ((DataInputStream)r.is).available()); +/* 1830 */ Class<? extends WObject> aClass = getClass(); +/* 1831 */ Field[] fields = aClass.getFields(); +/* */ Field[] arrayOfField1; +/* 1833 */ int j = (arrayOfField1 = fields).length; for (int i = 0; i < j; i++) { Field field = arrayOfField1[i]; +/* */ try { +/* 1835 */ Debug.LogDebug(field.toString()); +/* 1836 */ if (field.get(this) != null) { +/* 1837 */ Debug.LogDebug(" : " + field.get(this).toString()); +/* */ } +/* */ } +/* */ catch (IllegalArgumentException e) { +/* 1841 */ e.printStackTrace(); +/* */ } +/* */ catch (IllegalAccessException e) { +/* 1844 */ e.printStackTrace(); +/* */ } +/* */ } +/* */ +/* */ try +/* */ { +/* 1850 */ throw ex; +/* */ } +/* */ catch (Exception e) { +/* 1853 */ e.printStackTrace(); +/* */ } +/* */ } +/* */ +/* */ case 6: +/* 1858 */ super.restoreState(r); +/* 1859 */ this.flags = (r.restoreInt() | 0x4000); +/* 1860 */ newContents = r.restoreVectorMaybeNull(); +/* 1861 */ newHandlers = r.restoreVectorMaybeNull(); +/* 1862 */ newActions = r.restoreVectorMaybeNull(); +/* 1863 */ setBumpCalc((BumpCalc)r.restoreMaybeNull()); +/* 1864 */ this._sharer = ((Sharer)r.restoreMaybeNull()); +/* 1865 */ r.restoreString(); +/* 1866 */ break; +/* */ default: +/* 1868 */ throw new TooNewException(); +/* */ } +/* */ +/* 1871 */ if (vers < 8) { +/* 1872 */ this.flags &= 0xFFFFFFBF; +/* */ } +/* 1874 */ if (newContents != null) { +/* 1875 */ for (int i = 0; i < newContents.size(); i++) +/* 1876 */ add((WObject)newContents.elementAt(i)); +/* */ } +/* 1878 */ if (newActions != null) { +/* 1879 */ for (int i = 0; i < newActions.size(); i++) +/* 1880 */ addAction((Action)newActions.elementAt(i)); +/* */ } +/* 1882 */ if (newHandlers != null) { +/* 1883 */ for (int i = 0; i < newHandlers.size(); i++) +/* 1884 */ addHandler((SuperRoot)newHandlers.elementAt(i)); +/* */ } +/* 1886 */ if (this._sharer != null) +/* 1887 */ super.add(this._sharer); +/* */ } +/* */ +/* 1890 */ public static boolean replaceWithMontyDoor = IniFile.gamma().getIniInt( +/* 1891 */ "replaceWithMontyDoor", 0) != 0; +/* */ +/* */ public void postRestore(int version) +/* */ { +/* 1895 */ super.postRestore(version); +/* */ +/* */ +/* */ +/* 1899 */ if (version < 7) { +/* 1900 */ for (Enumeration<Object> en = getHandlers(); en.hasMoreElements();) { +/* 1901 */ SuperRoot h = (SuperRoot)en.nextElement(); +/* 1902 */ if (h.getOwner() != this) { +/* 1903 */ SuperRoot newH = (SuperRoot)h.clone(); +/* */ +/* */ +/* 1906 */ this.eventHandlers.removeElement(h); +/* 1907 */ if (this.eventHandlers.size() == 0) +/* 1908 */ this.eventHandlers = null; +/* 1909 */ if ((this.clumpID != 0) && ((h instanceof FrameHandler))) { +/* 1910 */ getRoomFromClump().removeFrameHandler((FrameHandler)h, +/* 1911 */ this); +/* */ } +/* */ +/* 1914 */ addHandler(newH); +/* */ } +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* 1921 */ if ((replaceWithMontyDoor) && (getClass() == WObject.class)) { +/* 1922 */ replaceMonty(); +/* */ } +/* 1924 */ if (this._sharer != null) { +/* 1925 */ this._sharer.ownerPostRestore(); +/* */ } +/* 1927 */ this.flags &= 0xBFFF; +/* 1928 */ if (isDynamic()) { +/* 1929 */ getSharer(); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ private void replaceMonty() +/* */ { +/* 1951 */ if ((this.actions == null) || (this.actions.size() != 3) || +/* 1952 */ (!(getOwner() instanceof WObject))) { +/* 1953 */ return; +/* */ } +/* 1955 */ int stage = 0; +/* */ try { +/* 1957 */ if (!(this.actions.elementAt(0) instanceof SetURLAction)) +/* 1958 */ return; +/* 1959 */ SetURLAction sua = (SetURLAction)this.actions.elementAt(0); +/* 1960 */ if ((!sua._propName.equals("File")) || (sua._roomName == null)) +/* 1961 */ return; +/* 1962 */ stage = 1; +/* */ +/* 1964 */ Object db = this.actions.elementAt(1); +/* 1965 */ Object cancel = this.actions.elementAt(2); +/* 1966 */ if ((!(db instanceof DialogAction)) || +/* 1967 */ (cancel.getClass() != db.getClass()) || +/* 1968 */ (((DialogAction)cancel).cancelOnly == ((DialogAction)db).cancelOnly)) +/* 1969 */ return; +/* 1970 */ if (((DialogAction)db).cancelOnly) +/* 1971 */ db = cancel; +/* 1972 */ stage = 2; +/* */ +/* 1974 */ if (!(this.actions.elementAt(0) instanceof SetURLAction)) +/* 1975 */ return; +/* 1976 */ stage = 3; +/* */ +/* 1978 */ if ((this.contents == null) || (this.contents.size() < 2) || (this.contents.size() > 3) || +/* 1979 */ (((WObject)this.contents.elementAt(0)).getClass() != Rect.class) || +/* 1980 */ (((WObject)this.contents.elementAt(1)).getClass() != Portal.class)) +/* 1981 */ return; +/* 1982 */ stage = 4; +/* */ +/* 1984 */ boolean isTwoPart = this.contents.size() == 3; +/* */ +/* 1986 */ Rect top = (Rect)this.contents.elementAt(0); +/* 1987 */ Portal port = (Portal)this.contents.elementAt(1); +/* 1988 */ Rect bottom = null; +/* */ +/* 1990 */ if (isTwoPart) { +/* 1991 */ if (((WObject)this.contents.elementAt(2)).getClass() != Rect.class) +/* 1992 */ return; +/* 1993 */ bottom = (Rect)this.contents.elementAt(2); +/* */ } +/* 1995 */ stage = 5; +/* */ +/* 1997 */ if ((top.eventHandlers == null) || +/* 1998 */ (top.eventHandlers.size() != 1) || +/* 1999 */ (top.eventHandlers.elementAt(0).getClass() != ClickSensor.class)) +/* 2000 */ return; +/* 2001 */ stage = 6; +/* */ +/* 2003 */ ClickSensor cs = (ClickSensor)top.eventHandlers.elementAt(0); +/* 2004 */ if (cs.countActions() != 1) +/* 2005 */ return; +/* 2006 */ stage = 7; +/* */ +/* 2008 */ if ((top.actions == null) || +/* 2009 */ (top.actions.size() != 3) || +/* 2010 */ (((Action)top.actions.elementAt(2)).getClass() != SequenceAction.class)) +/* 2011 */ return; +/* 2012 */ stage = 8; +/* */ +/* 2014 */ SequenceAction seq = (SequenceAction)top.actions.elementAt(2); +/* 2015 */ if (seq.actions != null) { +/* 2016 */ if (seq.actions.size() == (isTwoPart ? 9 : 7)) {} +/* 2017 */ } else return; +/* 2018 */ stage = 9; +/* */ +/* 2020 */ if ((port.actions == null) || (port.actions.size() != 2) || +/* 2021 */ (port._farSideRoomName == null) || +/* 2022 */ (port._farSidePortalName == null)) +/* 2023 */ return; +/* 2024 */ stage = 10; +/* */ +/* 2026 */ URL texture = (isTwoPart ? bottom : top).getMaterial().textureName; +/* 2027 */ if (texture == null) +/* 2028 */ return; +/* 2029 */ stage = 11; +/* */ +/* 2031 */ MontyDoor md = new MontyDoor(); +/* */ +/* 2033 */ md.setsAvatar = (db instanceof SelectAvatarAction); +/* 2034 */ if (!md.setsAvatar) { +/* 2035 */ if (!(db instanceof SendURLAction)) { +/* 2036 */ return; +/* */ } +/* 2038 */ md.description = ((SendURLAction)db).description; +/* 2039 */ md.url = ((SendURLAction)db).destination; +/* */ } else { +/* 2041 */ md.url = ((SelectAvatarAction)db).url; } +/* 2042 */ stage = 12; +/* */ +/* 2044 */ md.viewURL = sua._value; +/* 2045 */ md.viewName = sua._targetName; +/* 2046 */ md.setFarSideInfo(null, sua._roomName, port._farSidePortalName); +/* */ +/* 2048 */ md.post(port); +/* 2049 */ md.post(this); +/* */ +/* 2051 */ String texName = texture.getInternal(); +/* 2052 */ if (isTwoPart) { +/* 2053 */ if (texName.endsWith("b.cmp")) { +/* 2054 */ int len = texName.length(); +/* 2055 */ texName = texName.substring(0, len - 5) + "m2v*.mov"; +/* */ } else { +/* 2057 */ Console.println("Texture: " + texName); +/* 2058 */ return; +/* */ } +/* */ } +/* 2061 */ stage = 13; +/* 2062 */ md.setMaterial(new Material(URL.make(texName))); +/* */ +/* 2064 */ ((WObject)getOwner()).add(md); +/* 2065 */ detach(); +/* 2066 */ port.detach(); +/* */ +/* 2068 */ md.reset(); +/* 2069 */ stage = 100; +/* */ } finally { +/* 2071 */ if (stage != 100) { +/* 2072 */ Console.println( +/* 2073 */ "Failed MontyDoor conversion of " + getName() + " in stage " + stage + ".\n"); +/* */ } +/* */ } +/* 2071 */ if (stage != 100) { +/* 2072 */ Console.println( +/* 2073 */ "Failed MontyDoor conversion of " + getName() + " in stage " + stage + ".\n"); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ public String toString() +/* */ { +/* 2081 */ String base = getName(); +/* */ +/* 2083 */ if (!isActive()) { +/* 2084 */ base = base + "(inactive)"; +/* */ } +/* 2086 */ base = base + toTransformSubstring(); +/* */ +/* 2088 */ if (this.contents == null) { +/* 2089 */ return base; +/* */ } +/* 2091 */ return base + this.contents.toString(); +/* */ } +/* */ +/* */ public static String getSaveExtension() +/* */ { +/* 2096 */ return "wob"; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public WObject getServed() +/* */ { +/* 2107 */ int mode = getSharerMode(); +/* 2108 */ if (mode == 0) { +/* 2109 */ Sharer s = getSharer(); +/* 2110 */ if (s != null) { +/* 2111 */ mode = s.getMode(); +/* */ } +/* */ } +/* */ +/* 2115 */ if ((mode & 0x1) == 0) +/* */ { +/* */ +/* */ +/* 2119 */ return this; +/* */ } +/* */ +/* 2122 */ SuperRoot r = getOwner(); +/* 2123 */ if ((r != null) && ((r instanceof WObject))) { +/* 2124 */ return ((WObject)r).getServed(); +/* */ } +/* 2126 */ return null; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void prerender(Camera cam) +/* */ { +/* 2136 */ WorldScriptManager.getInstance().onPrerender(this, cam); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public WorldServer getServer() +/* */ { +/* 2144 */ WObject wo = getServed(); +/* */ NetworkObject no; +/* 2146 */ NetworkObject no; if ((wo instanceof Room)) { +/* 2147 */ no = ((Room)wo).getNetworkRoom(); +/* */ } else { +/* 2149 */ no = (NetworkObject)wo; +/* */ } +/* */ +/* 2152 */ if (no == null) { +/* 2153 */ return null; +/* */ } +/* */ +/* 2156 */ assert (no != this); +/* */ +/* 2158 */ return no.getServer(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 2173 */ private Sharer _sharer = null; +/* */ +/* */ +/* */ public VisiAttribute _visibilityAttribute; +/* */ +/* */ +/* */ public TransAttribute _transformAttribute; +/* */ +/* */ public BumpAttribute _bumpableAttribute; +/* */ +/* */ +/* */ public Enumeration<Attribute> getAttributes() +/* */ { +/* 2186 */ return getSharer().getAttributes(); +/* */ } +/* */ +/* */ public Sharer getSharer() { +/* 2190 */ if (this._sharer == null) +/* */ { +/* 2192 */ assert ((this.flags & 0x4000) == 0); +/* */ +/* 2194 */ this._sharer = new Sharer(); +/* 2195 */ super.add(this._sharer); +/* */ } +/* 2197 */ return this._sharer; +/* */ } +/* */ +/* */ public boolean hasSharer() { +/* 2201 */ return this._sharer != null; +/* */ } +/* */ +/* */ public Attribute getAttribute(int attrID) { +/* 2205 */ return getSharer().getAttribute(attrID); +/* */ } +/* */ +/* */ public int addAttribute(Attribute a) { +/* 2209 */ return getSharer().addAttribute(a); +/* */ } +/* */ +/* */ public int addShareableAttribute(Attribute a) +/* */ { +/* 2214 */ return addAttribute(a); +/* */ } +/* */ +/* */ public void removeAttribute(Attribute a) { +/* 2218 */ getSharer().removeAttribute(a); +/* */ } +/* */ +/* */ public void removeShareableAttribute(Attribute a) +/* */ { +/* 2223 */ removeAttribute(a); +/* */ } +/* */ +/* */ public boolean isShared() { +/* 2227 */ return this._sharer != null; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public boolean acceptsLeftClicks() +/* */ { +/* 2237 */ return getMouseOver(); +/* */ } +/* */ +/* */ +/* */ public void releaseAuxilaryData() +/* */ { +/* 2243 */ if (this._sharer != null) { +/* 2244 */ this._sharer.releaseAuxilaryData(); +/* */ } +/* */ } +/* */ +/* */ public static native void nativeInit(); +/* */ +/* */ native void createClump(); +/* */ +/* */ public native boolean nativeInCamSpace(Camera paramCamera, Point3Temp paramPoint3Temp); +/* */ +/* */ protected native void voidClump(); +/* */ +/* */ protected native int extractClump(); +/* */ +/* */ native void addChildToClump(WObject paramWObject); +/* */ +/* */ native void setClumpMatrix(); +/* */ +/* */ private native void initClumpData(); +/* */ +/* */ native void doneWithEditing(); +/* */ +/* */ native int getNumVerts(); +/* */ +/* */ private native Transform getObjectToWorldMatrix(Transform paramTransform); +/* */ +/* */ protected native Transform getJointedObjectToWorldMatrix(Transform paramTransform); +/* */ +/* */ public native void updateHighlight(); +/* */ +/* */ public native void getClumpBBox(Point3Temp paramPoint3Temp1, Point3Temp paramPoint3Temp2); +/* */ +/* */ protected native void updateVisible(); +/* */ +/* */ public native Room getRoomFromClump(); +/* */ +/* */ public native boolean inRoomContents(); +/* */ +/* */ public native float getClumpMinXYExtent(); +/* */ +/* */ /* Error */ +/* */ public void moveThrough(Point3Temp motion) +/* */ { +/* */ // Byte code: +/* */ // 0: aload_0 +/* */ // 1: invokevirtual 414 NET/worlds/scape/WObject:getRoom ()LNET/worlds/scape/Room; +/* */ // 4: ifnull +10 -> 14 +/* */ // 7: aload_0 +/* */ // 8: invokevirtual 705 NET/worlds/scape/WObject:getBumpable ()Z +/* */ // 11: ifne +10 -> 21 +/* */ // 14: aload_0 +/* */ // 15: aload_1 +/* */ // 16: invokevirtual 726 NET/worlds/scape/WObject:moveBy (LNET/worlds/scape/Point3Temp;)LNET/worlds/scape/Transform; +/* */ // 19: pop +/* */ // 20: return +/* */ // 21: aload_0 +/* */ // 22: invokevirtual 414 NET/worlds/scape/WObject:getRoom ()LNET/worlds/scape/Room; +/* */ // 25: invokevirtual 730 NET/worlds/scape/Room:hasClump ()Z +/* */ // 28: ifne +4 -> 32 +/* */ // 31: return +/* */ // 32: invokestatic 731 NET/worlds/core/Std:getRealTime ()I +/* */ // 35: istore_2 +/* */ // 36: aload_0 +/* */ // 37: astore_3 +/* */ // 38: iconst_4 +/* */ // 39: istore 4 +/* */ // 41: goto +293 -> 334 +/* */ // 44: iload_2 +/* */ // 45: aload_3 +/* */ // 46: aload_1 +/* */ // 47: invokestatic 736 NET/worlds/scape/BumpEventTemp:make (ILNET/worlds/scape/WObject;LNET/worlds/scape/Point3Temp;)LNET/worlds/scape/BumpEventTemp; +/* */ // 50: astore 5 +/* */ // 52: aload 5 +/* */ // 54: getfield 739 NET/worlds/scape/BumpEventTemp:target LNET/worlds/scape/WObject; +/* */ // 57: ifnonnull +21 -> 78 +/* */ // 60: aload_3 +/* */ // 61: aload 5 +/* */ // 63: getfield 742 NET/worlds/scape/BumpEventTemp:fullPath LNET/worlds/scape/Point3Temp; +/* */ // 66: invokevirtual 726 NET/worlds/scape/WObject:moveBy (LNET/worlds/scape/Point3Temp;)LNET/worlds/scape/Transform; +/* */ // 69: pop +/* */ // 70: aload 5 +/* */ // 72: invokevirtual 745 NET/worlds/scape/BumpEventTemp:recycle ()V +/* */ // 75: goto +264 -> 339 +/* */ // 78: aload 5 +/* */ // 80: aload_3 +/* */ // 81: invokevirtual 414 NET/worlds/scape/WObject:getRoom ()LNET/worlds/scape/Room; +/* */ // 84: putfield 746 NET/worlds/scape/BumpEventTemp:postBumpRoom LNET/worlds/scape/Room; +/* */ // 87: aload 5 +/* */ // 89: aload_3 +/* */ // 90: invokevirtual 450 NET/worlds/scape/WObject:getObjectToWorldMatrix ()LNET/worlds/scape/Transform; +/* */ // 93: aload 5 +/* */ // 95: getfield 749 NET/worlds/scape/BumpEventTemp:path LNET/worlds/scape/Point3Temp; +/* */ // 98: invokevirtual 752 NET/worlds/scape/Transform:moveBy (LNET/worlds/scape/Point3Temp;)LNET/worlds/scape/Transform; +/* */ // 101: putfield 753 NET/worlds/scape/BumpEventTemp:postBumpPosition LNET/worlds/scape/Transform; +/* */ // 104: aload 5 +/* */ // 106: aload 5 +/* */ // 108: getfield 742 NET/worlds/scape/BumpEventTemp:fullPath LNET/worlds/scape/Point3Temp; +/* */ // 111: invokestatic 715 NET/worlds/scape/Point3Temp:make (LNET/worlds/scape/Point3Temp;)LNET/worlds/scape/Point3Temp; +/* */ // 114: fconst_1 +/* */ // 115: aload 5 +/* */ // 117: getfield 756 NET/worlds/scape/BumpEventTemp:fraction F +/* */ // 120: fsub +/* */ // 121: invokevirtual 759 NET/worlds/scape/Point3Temp:times (F)LNET/worlds/scape/Point3Temp; +/* */ // 124: putfield 762 NET/worlds/scape/BumpEventTemp:postBumpPath LNET/worlds/scape/Point3Temp; +/* */ // 127: aload_3 +/* */ // 128: invokevirtual 447 NET/worlds/scape/WObject:getTransform ()LNET/worlds/scape/Transform; +/* */ // 131: astore 6 +/* */ // 133: aload_0 +/* */ // 134: invokevirtual 414 NET/worlds/scape/WObject:getRoom ()LNET/worlds/scape/Room; +/* */ // 137: astore 7 +/* */ // 139: aload 5 +/* */ // 141: getfield 739 NET/worlds/scape/BumpEventTemp:target LNET/worlds/scape/WObject; +/* */ // 144: aload 5 +/* */ // 146: invokevirtual 554 NET/worlds/scape/WObject:deliver (LNET/worlds/scape/Event;)Z +/* */ // 149: pop +/* */ // 150: aload_3 +/* */ // 151: aload 5 +/* */ // 153: invokevirtual 554 NET/worlds/scape/WObject:deliver (LNET/worlds/scape/Event;)Z +/* */ // 156: pop +/* */ // 157: aload_3 +/* */ // 158: aload 6 +/* */ // 160: invokevirtual 765 NET/worlds/scape/WObject:isTransformEqual (LNET/worlds/scape/Transform;)Z +/* */ // 163: ifeq +12 -> 175 +/* */ // 166: aload 7 +/* */ // 168: aload_0 +/* */ // 169: invokevirtual 414 NET/worlds/scape/WObject:getRoom ()LNET/worlds/scape/Room; +/* */ // 172: if_acmpeq +26 -> 198 +/* */ // 175: aload 6 +/* */ // 177: invokevirtual 455 NET/worlds/scape/Transform:recycle ()V +/* */ // 180: aload 5 +/* */ // 182: invokevirtual 745 NET/worlds/scape/BumpEventTemp:recycle ()V +/* */ // 185: goto +154 -> 339 +/* */ // 188: astore 8 +/* */ // 190: aload 6 +/* */ // 192: invokevirtual 455 NET/worlds/scape/Transform:recycle ()V +/* */ // 195: aload 8 +/* */ // 197: athrow +/* */ // 198: aload 6 +/* */ // 200: invokevirtual 455 NET/worlds/scape/Transform:recycle ()V +/* */ // 203: aload 5 +/* */ // 205: getfield 746 NET/worlds/scape/BumpEventTemp:postBumpRoom LNET/worlds/scape/Room; +/* */ // 208: invokevirtual 769 NET/worlds/scape/Room:getObjectToWorldMatrix ()LNET/worlds/scape/Transform; +/* */ // 211: astore 7 +/* */ // 213: aload 7 +/* */ // 215: invokevirtual 770 NET/worlds/scape/Transform:invert ()LNET/worlds/scape/Transform; +/* */ // 218: pop +/* */ // 219: aload_3 +/* */ // 220: invokevirtual 414 NET/worlds/scape/WObject:getRoom ()LNET/worlds/scape/Room; +/* */ // 223: aload 5 +/* */ // 225: getfield 746 NET/worlds/scape/BumpEventTemp:postBumpRoom LNET/worlds/scape/Room; +/* */ // 228: if_acmpeq +38 -> 266 +/* */ // 231: aload 7 +/* */ // 233: aload 5 +/* */ // 235: getfield 753 NET/worlds/scape/BumpEventTemp:postBumpPosition LNET/worlds/scape/Transform; +/* */ // 238: invokevirtual 773 NET/worlds/scape/Transform:pre (LNET/worlds/scape/Transform;)LNET/worlds/scape/Transform; +/* */ // 241: pop +/* */ // 242: aload_3 +/* */ // 243: aload 5 +/* */ // 245: getfield 746 NET/worlds/scape/BumpEventTemp:postBumpRoom LNET/worlds/scape/Room; +/* */ // 248: aload 7 +/* */ // 250: invokevirtual 776 NET/worlds/scape/WObject:changeRoom (LNET/worlds/scape/Room;LNET/worlds/scape/Transform;)LNET/worlds/scape/WObject; +/* */ // 253: astore_3 +/* */ // 254: aload_3 +/* */ // 255: ifnonnull +33 -> 288 +/* */ // 258: aload 5 +/* */ // 260: invokevirtual 745 NET/worlds/scape/BumpEventTemp:recycle ()V +/* */ // 263: goto +76 -> 339 +/* */ // 266: aload_3 +/* */ // 267: invokevirtual 780 NET/worlds/scape/WObject:makeIdentity ()LNET/worlds/scape/Transform; +/* */ // 270: pop +/* */ // 271: aload_3 +/* */ // 272: aload 7 +/* */ // 274: invokevirtual 783 NET/worlds/scape/WObject:pre (LNET/worlds/scape/Transform;)LNET/worlds/scape/Transform; +/* */ // 277: pop +/* */ // 278: aload_3 +/* */ // 279: aload 5 +/* */ // 281: getfield 753 NET/worlds/scape/BumpEventTemp:postBumpPosition LNET/worlds/scape/Transform; +/* */ // 284: invokevirtual 783 NET/worlds/scape/WObject:pre (LNET/worlds/scape/Transform;)LNET/worlds/scape/Transform; +/* */ // 287: pop +/* */ // 288: aload 5 +/* */ // 290: getfield 753 NET/worlds/scape/BumpEventTemp:postBumpPosition LNET/worlds/scape/Transform; +/* */ // 293: invokevirtual 455 NET/worlds/scape/Transform:recycle ()V +/* */ // 296: aload 5 +/* */ // 298: aconst_null +/* */ // 299: putfield 753 NET/worlds/scape/BumpEventTemp:postBumpPosition LNET/worlds/scape/Transform; +/* */ // 302: aload 7 +/* */ // 304: invokevirtual 455 NET/worlds/scape/Transform:recycle ()V +/* */ // 307: aload 5 +/* */ // 309: getfield 762 NET/worlds/scape/BumpEventTemp:postBumpPath LNET/worlds/scape/Point3Temp; +/* */ // 312: astore_1 +/* */ // 313: goto +13 -> 326 +/* */ // 316: astore 9 +/* */ // 318: aload 5 +/* */ // 320: invokevirtual 745 NET/worlds/scape/BumpEventTemp:recycle ()V +/* */ // 323: aload 9 +/* */ // 325: athrow +/* */ // 326: aload 5 +/* */ // 328: invokevirtual 745 NET/worlds/scape/BumpEventTemp:recycle ()V +/* */ // 331: iinc 4 -1 +/* */ // 334: iload 4 +/* */ // 336: ifgt -292 -> 44 +/* */ // 339: return +/* */ // Line number table: +/* */ // Java source line #1405 -> byte code offset #0 +/* */ // Java source line #1406 -> byte code offset #14 +/* */ // Java source line #1407 -> byte code offset #20 +/* */ // Java source line #1412 -> byte code offset #21 +/* */ // Java source line #1413 -> byte code offset #31 +/* */ // Java source line #1415 -> byte code offset #32 +/* */ // Java source line #1419 -> byte code offset #36 +/* */ // Java source line #1421 -> byte code offset #38 +/* */ // Java source line #1425 -> byte code offset #44 +/* */ // Java source line #1428 -> byte code offset #52 +/* */ // Java source line #1429 -> byte code offset #60 +/* */ // Java source line #1480 -> byte code offset #70 +/* */ // Java source line #1430 -> byte code offset #75 +/* */ // Java source line #1433 -> byte code offset #78 +/* */ // Java source line #1434 -> byte code offset #87 +/* */ // Java source line #1435 -> byte code offset #93 +/* */ // Java source line #1434 -> byte code offset #98 +/* */ // Java source line #1436 -> byte code offset #104 +/* */ // Java source line #1437 -> byte code offset #114 +/* */ // Java source line #1436 -> byte code offset #121 +/* */ // Java source line #1439 -> byte code offset #127 +/* */ // Java source line #1441 -> byte code offset #133 +/* */ // Java source line #1443 -> byte code offset #139 +/* */ // Java source line #1444 -> byte code offset #150 +/* */ // Java source line #1447 -> byte code offset #157 +/* */ // Java source line #1450 -> byte code offset #175 +/* */ // Java source line #1480 -> byte code offset #180 +/* */ // Java source line #1448 -> byte code offset #185 +/* */ // Java source line #1449 -> byte code offset #188 +/* */ // Java source line #1450 -> byte code offset #190 +/* */ // Java source line #1451 -> byte code offset #195 +/* */ // Java source line #1450 -> byte code offset #198 +/* */ // Java source line #1458 -> byte code offset #203 +/* */ // Java source line #1459 -> byte code offset #213 +/* */ // Java source line #1460 -> byte code offset #219 +/* */ // Java source line #1461 -> byte code offset #231 +/* */ // Java source line #1462 -> byte code offset #242 +/* */ // Java source line #1465 -> byte code offset #254 +/* */ // Java source line #1480 -> byte code offset #258 +/* */ // Java source line #1466 -> byte code offset #263 +/* */ // Java source line #1468 -> byte code offset #266 +/* */ // Java source line #1469 -> byte code offset #271 +/* */ // Java source line #1470 -> byte code offset #278 +/* */ // Java source line #1472 -> byte code offset #288 +/* */ // Java source line #1473 -> byte code offset #296 +/* */ // Java source line #1474 -> byte code offset #302 +/* */ // Java source line #1477 -> byte code offset #307 +/* */ // Java source line #1479 -> byte code offset #313 +/* */ // Java source line #1480 -> byte code offset #318 +/* */ // Java source line #1481 -> byte code offset #323 +/* */ // Java source line #1480 -> byte code offset #326 +/* */ // Java source line #1421 -> byte code offset #331 +/* */ // Java source line #1483 -> byte code offset #339 +/* */ // Local variable table: +/* */ // start length slot name signature +/* */ // 0 340 0 this WObject +/* */ // 0 340 1 motion Point3Temp +/* */ // 35 10 2 now int +/* */ // 37 242 3 me WObject +/* */ // 39 296 4 loopCount int +/* */ // 50 277 5 be BumpEventTemp +/* */ // 131 68 6 t Transform +/* */ // 137 30 7 r Room +/* */ // 211 92 7 invPos Transform +/* */ // 188 8 8 localObject1 Object +/* */ // 316 8 9 localObject2 Object +/* */ // Exception table: +/* */ // from to target type +/* */ // 133 175 188 finally +/* */ // 52 70 316 finally +/* */ // 78 180 316 finally +/* */ // 188 258 316 finally +/* */ // 266 316 316 finally +/* */ } +/* */ +/* */ public void notifyRegister(int wid) {} +/* */ } + + +/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\scape\WObject.class + * Java compiler version: 6 (50.0) + * JD-Core Version: 0.7.1 + */
\ No newline at end of file |