Changeset 1842

Show
Ignore:
Timestamp:
11/04/08 00:44:21 (2 months ago)
Author:
ddb174
Message:

Discerned a bunch of semantics in realMyst geometry. Created 3DStudioMax exporter for testing. Can convert some realMyst geometry now. Set Myst Island thunder to (4,20).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • drizzle/DrizzlePrp/src/automation/inplaceModifications.java

    r1832 r1842  
    66package automation; 
    77 
     8import shared.Vertex; 
     9import shared.Flt; 
    810import uru.moulprp.*; 
    911import uru.moulprp.x00A2Pythonfilemod.Pythonlisting; 
  • drizzle/DrizzlePrp/src/automation/myst5Fixes.java

    r1835 r1842  
    66package automation; 
    77 
     8import shared.Flt; 
    89import uru.moulprp.*; 
    910import shared.m; 
     
    225226            rsm.parent.state = 0; //turn it on 
    226227            rsm.parent.mode = 3; //must disable the kOneCmd 
     228            //rsm.parent.minDelay = Flt.createFromJavaFloat(4); //just picked a number. 
     229            //rsm.parent.maxDelay = Flt.createFromJavaFloat(30); //just picked a number. 
    227230            rsm.parent.minDelay = Flt.createFromJavaFloat(4); //just picked a number. 
    228             rsm.parent.maxDelay = Flt.createFromJavaFloat(30); //just picked a number. 
     231            rsm.parent.maxDelay = Flt.createFromJavaFloat(20); //just picked a number. 
    229232             
    230233            //PlRandomSoundMod rs2 = prp.findObject("cSfxRandomCreaks", Typeid.plRandomSoundMod).castTo(); 
  • drizzle/DrizzlePrp/src/automation/mystAutomation.java

    r1826 r1842  
    2424import uru.moulprp.prputils; 
    2525import uru.moulprp.Uruobjectref; 
    26 import uru.moulprp.Flt; 
     26import shared.Flt; 
    2727import uru.moulprp.Rgba; 
    2828import shared.State.AllStates; 
  • drizzle/DrizzlePrp/src/deepview/deepview.java

    r1798 r1842  
    4242import uru.moulprp.Urustring; 
    4343import uru.moulprp.*; 
     44import shared.*; 
    4445 
    4546public class deepview 
     
    325326            return; 
    326327        } 
    327         else if(objclass==uru.moulprp.Flt.class) 
     328        else if(objclass==shared.Flt.class) 
    328329        { 
    329330            panel.add(new dvFlt((Flt)obj,name,this)); 
  • drizzle/DrizzlePrp/src/deepview/dvFlt.java

    r1798 r1842  
    66package deepview; 
    77 
     8import shared.Flt; 
    89import java.awt.event.ActionEvent; 
    910import java.beans.PropertyChangeListener; 
  • drizzle/DrizzlePrp/src/gui/Gui.form

    r1835 r1842  
    397397                  <Group type="102" alignment="0" attributes="0"> 
    398398                      <EmptySpace max="-2" attributes="0"/> 
    399                       <Component id="tabsState2" pref="400" max="32767" attributes="0"/> 
     399                      <Component id="tabsState2" max="32767" attributes="0"/> 
    400400                      <EmptySpace max="-2" attributes="0"/> 
    401401                  </Group> 
     
    668668                              <EmptySpace max="-2" attributes="0"/> 
    669669                              <Component id="jButton53" min="-2" max="-2" attributes="0"/> 
    670                               <EmptySpace pref="242" max="32767" attributes="0"/> 
     670                              <EmptySpace pref="266" max="32767" attributes="0"/> 
    671671                          </Group> 
    672672                      </Group> 
     
    13181318                              <EmptySpace max="-2" attributes="0"/> 
    13191319                              <Component id="checkboxState20" min="-2" max="-2" attributes="0"/> 
    1320                               <EmptySpace pref="82" max="32767" attributes="0"/> 
     1320                              <EmptySpace pref="106" max="32767" attributes="0"/> 
    13211321                          </Group> 
    13221322                      </Group> 
     
    14991499                                  </Group> 
    15001500                              </Group> 
    1501                               <EmptySpace pref="47" max="32767" attributes="0"/> 
     1501                              <EmptySpace pref="71" max="32767" attributes="0"/> 
    15021502                          </Group> 
    15031503                      </Group> 
     
    28832883              </Constraints> 
    28842884            </Component> 
     2885            <Component class="javax.swing.JButton" name="jButton106"> 
     2886              <Properties> 
     2887                <Property name="text" type="java.lang.String" value="mdb test"/> 
     2888              </Properties> 
     2889              <Events> 
     2890                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton106ActionPerformed"/> 
     2891              </Events> 
     2892              <Constraints> 
     2893                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription"> 
     2894                  <AbsoluteConstraints x="330" y="120" width="-1" height="-1"/> 
     2895                </Constraint> 
     2896              </Constraints> 
     2897            </Component> 
    28852898          </SubComponents> 
    28862899        </Container> 
  • drizzle/DrizzlePrp/src/gui/Gui.java

    r1835 r1842  
    575575        jButton103 = new javax.swing.JButton(); 
    576576        jButton104 = new javax.swing.JButton(); 
     577        jButton106 = new javax.swing.JButton(); 
    577578        jPanel12 = new javax.swing.JPanel(); 
    578579        jButton50 = new javax.swing.JButton(); 
     
    10151016                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
    10161017                .addComponent(jButton53) 
    1017                 .addContainerGap(242, Short.MAX_VALUE)) 
     1018                .addContainerGap(266, Short.MAX_VALUE)) 
    10181019        ); 
    10191020 
     
    13711372                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
    13721373                    .addComponent(checkboxState20, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
    1373                     .addContainerGap(82, Short.MAX_VALUE)) 
     1374                    .addContainerGap(106, Short.MAX_VALUE)) 
    13741375            ); 
    13751376 
     
    15331534                                .addGap(116, 116, 116) 
    15341535                                .addComponent(jButton99))) 
    1535                         .addContainerGap(47, Short.MAX_VALUE)) 
     1536                        .addContainerGap(71, Short.MAX_VALUE)) 
    15361537                ); 
    15371538 
     
    15511552                    .addGroup(jPanel13Layout.createSequentialGroup() 
    15521553                        .addContainerGap() 
    1553                         .addComponent(tabsState2, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) 
     1554                        .addComponent(tabsState2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    15541555                        .addContainerGap()) 
    15551556                ); 
     
    24352436                jButton104.setBounds(260, 120, 44, 36); 
    24362437 
     2438                jButton106.setText("mdb test"); 
     2439                jButton106.addActionListener(new java.awt.event.ActionListener() { 
     2440                    public void actionPerformed(java.awt.event.ActionEvent evt) { 
     2441                        jButton106ActionPerformed(evt); 
     2442                    } 
     2443                }); 
     2444                jPanel10.add(jButton106); 
     2445                jButton106.setBounds(330, 120, 72, 36); 
     2446 
    24372447                tabsState3.addTab("realMyst", jPanel10); 
    24382448 
     
    39143924private void jButton102ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton102ActionPerformed 
    39153925    String filename = this.textfieldState25.getText(); 
     3926    m.state.curstate.writeToFile = true; 
    39163927    File f = new File(filename); 
    39173928    shared.IBytestream bs = shared.SerialBytestream.createFromFilename(filename); 
     
    39483959        m.msg("It's just a text file."); 
    39493960    } 
     3961    else if(filename.toLowerCase().endsWith(".beh")) 
     3962    { 
     3963        m.err("Haven't implemented .beh parsing."); 
     3964    } 
    39503965    //realmyst.Idx idx = new realmyst.Idx(bs); 
    39513966    //realmyst.SceneObject so = new realmyst.SceneObject(bs); 
     
    39563971private void jButton104ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton104ActionPerformed 
    39573972    String outfol = this.textfieldState24.getText(); 
     3973    m.state.curstate.writeToFile = true; 
    39583974     
    39593975    File f = new File(outfol+"/sdb"); 
     
    39803996                int dummy=0; 
    39813997            } 
    3982             catch(Exception e) 
     3998            catch(shared.ignore e) 
    39833999            { 
    39844000                m.warn("Error so skipping file."); 
     
    40204036    checker.nettimer.timer(address, timer2, search); 
    40214037}//GEN-LAST:event_jButton105ActionPerformed 
     4038 
     4039private void jButton106ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton106ActionPerformed 
     4040    String outfol = this.textfieldState24.getText(); 
     4041    m.state.curstate.writeToFile = true; 
     4042     
     4043    File f = new File(outfol+"/mdb"); 
     4044    for(File child: f.listFiles()) 
     4045    { 
     4046        if(child.getName().toLowerCase().endsWith(".vdb")) 
     4047        { 
     4048            try 
     4049            { 
     4050                int fs = (int)child.length(); 
     4051                shared.IBytestream bs = shared.SerialBytestream.createFromFile(child); 
     4052                realmyst.Mdb mdb = new realmyst.Mdb(bs); 
     4053                int offset = bs.getAbsoluteOffset(); 
     4054                int bytesleft = bs.getBytesRemaining(); 
     4055 
     4056                //if (mdb.filesizeMinusHeader!=fs-offset) 
     4057                //{ 
     4058                //    int dummy=0; 
     4059                //} 
     4060                if(bytesleft!=0) 
     4061                { 
     4062                    int dummy=0; 
     4063                } 
     4064                int dummy=0; 
     4065            } 
     4066            catch(shared.ignore e) 
     4067            { 
     4068                m.warn("Error so skipping file."); 
     4069            } 
     4070        } 
     4071    } 
     4072     
     4073 
     4074}//GEN-LAST:event_jButton106ActionPerformed 
    40224075     
    40234076/*class c2 extends javax.swing.DefaultListSelectionModel 
     
    40894142    private javax.swing.JButton jButton104; 
    40904143    private javax.swing.JButton jButton105; 
     4144    private javax.swing.JButton jButton106; 
    40914145    private javax.swing.JButton jButton11; 
    40924146    private javax.swing.JButton jButton12; 
  • drizzle/DrizzlePrp/src/realmyst/Mdb.java

    r1834 r1842  
    88import shared.*; 
    99import shared.e; 
     10import export3ds.*; 
    1011 
    1112public class Mdb 
     
    2021    public Bstr[] strs; 
    2122     
     23    static Primary main; 
     24     
    2225    public Mdb(IBytestream c) 
    2326    { 
    24         tag = c.readInt(); 
    25         if(tag==0x02000000) 
    26         { 
    27             //sdb 
    28             filesize = c.readInt(); //filesize (including header) Sometimes not, though. 
    29             u2 = c.readInt(); //filesize minus header 
    30             name = new Bstr(c); 
    31             m.msg(name.toString()+" u1="+Integer.toString(filesize)+" u2="+Integer.toString(u2)); 
    32             //u3 = c.readInt(); 
    33             u3 = new Bstr(c); 
    34             strCount = c.readInt(); 
    35             //s2 = new Bstr(c); 
    36             if(strCount!=1) 
    37             { 
    38                 int dummy=0; 
     27        //tag = c.readInt(); 
     28        Typeid type = Typeid.read(c); 
     29        if(type!=Typeid.mdb) 
     30        { 
     31            throw new uncaughtexception("Mdb didn't have the expected magic number."); 
     32        } 
     33        //mdb 
     34        filesize = c.readInt(); //filesize (including header) 
     35        u2 = c.readInt(); e.ensure(u2,1);//=1? 
     36        name = new Bstr(c); 
     37        String trap =  
     38                //"aurora..sn_TOWER_observe_roof01" 
     39                "aurora..switchtube" 
     40                ; 
     41        if(name.toString().toLowerCase().startsWith(trap.toLowerCase())) 
     42        { 
     43            int dummy=0; 
     44        } 
     45 
     46        byte b3 = c.readByte(); e.ensure((int)b3,3); //always 3 
     47        int u4 = c.readInt(); e.ensure(u4,0); //always 0 
     48        int u5 = c.readInt(); e.ensure(u5,3); //always 3 
     49        int u6 = c.readInt(); e.ensure(u6,0,1); //0 or 1 
     50        int u7 = c.readInt(); e.ensure(u7,257,1); //1,11,2305,257,265,267,283,321,331,9 //0x1,B,901,101,109,10B,11B,141,14B,9 //100101011011 are the bits used. 
     51        m.msg("u7="+Integer.toString(u7)); 
     52        int u8 = c.readInt(); e.ensure(u8,257,1); //0,1,11,257,265,267,283,321,331,9 //0x0,1,B,101,109,10B,11B,141,14B,9 
     53        m.msg("u8="+Integer.toString(u8)); 
     54        int u9 = c.readInt(); e.ensure(u9,1); //1,2305 //0x1,901 
     55        m.msg("u9="+Integer.toString(u9)); 
     56        int u10 = c.readInt(); e.ensure(u10,0); //0 or 1 
     57        m.msg("u10="+Integer.toString(u10)); 
     58        m.msg(name.toString()); 
     59        //m.err("Unhandled tag: 0x"+Integer.toHexString(tag)); 
     60         
     61        Sixlet start = new Sixlet(c); //opposite corners of bounding box? 
     62         
     63        int s1 = c.readInt(); e.ensure(s1,3,1,2);//3 (1 seemed the same, 2 ignores quats: this is probably flags.) 
     64         
     65        int s2 = c.readInt(); //4 
     66        Sixlet bunch[] = c.readArray(Sixlet.class, s2); //vertex and vertex normal (vertex normal is average of face normals of adjacent faces.) 
     67        Quat[] quats = null; //I think this is actually a RGBA colour. 
     68        if(s1!=2) 
     69        { 
     70            quats = c.readArray(Quat.class, s2); 
     71        } 
     72         
     73        int u21 = c.readInt(); //e.ensure(u21,0); 
     74        Vertex[] trips = c.readArray(Vertex.class, u21); //uvw maybe? 
     75         
     76        if(u6==1) //u7 and u8 are also 1 in this case. 
     77        { 
     78            //int xu1 = c.readInt(); e.ensure(xu1,0); 
     79            int xu2 = c.readInt(); e.ensure(xu2,0); 
     80            int xu3 = c.readInt(); e.ensure(xu3,3); 
     81            int xu4 = c.readInt(); e.ensure(xu4,0); 
     82            int xu5 = c.readInt(); e.ensure(xu5,18433); 
     83            int xu6 = c.readInt(); e.ensure(xu6,1); 
     84            int xu7 = c.readInt(); e.ensure(xu7,0); 
     85            Sixlet xu8 = new Sixlet(c); 
     86            int xu9 = c.readInt(); e.ensure(xu9,0); 
     87            int dummy=0; 
     88             
     89            repeat r1 = new repeat(c); 
     90            int xub3 = c.readInt(); e.ensure(xub3,0); 
     91            int xub4 = c.readInt(); e.ensure(xub4,0); 
     92            int xub5 = c.readInt(); e.ensure(xub5,18433); 
     93            int xub6 = c.readInt(); e.ensure(xub6,1); 
     94            int xub7 = c.readInt(); e.ensure(xub7,0); 
     95            Sixlet xub8 = new Sixlet(c); 
     96            int xub9 = c.readInt(); e.ensure(xub9,0); 
     97             
     98            repeat r2 = new repeat(c); 
     99            int xuc3 = c.readInt(); e.ensure(xuc3,0); 
     100            int xuc4 = c.readInt(); e.ensure(xuc4,0); 
     101            int xuc5 = c.readInt(); e.ensure(xuc5,18433); 
     102            int xuc6 = c.readInt(); e.ensure(xuc6,1); 
     103            int xuc7 = c.readInt(); e.ensure(xuc7,0); 
     104            Sixlet xuc8 = new Sixlet(c); 
     105            int xuc9 = c.readInt(); e.ensure(xuc9,0); 
     106             
     107            repeat r3 = new repeat(c); 
     108             
     109            int x10 = c.readInt(); e.ensure(x10,0); 
     110            int x11 = c.readInt(); e.ensure(x11,5); 
     111            huh[] huhs = c.readArray(huh.class, x11); 
     112             
     113            int[] extraints = c.readInts(6); 
     114             
     115            return; 
     116        } 
     117         
     118        int u22 = c.readInt(); e.ensure(u22,128); 
     119         
     120        int u23 = c.readInt(); //e.ensure(u23,4); 
     121        Face[] fs = c.readArray(Face.class, u23); //this maps from the longer lists to the shorter lists; or maybe it gives multiple items from the longer lists given an item from the shorter lists         //or should this be u23 instead of s2? 
     122         
     123        int u24 = c.readInt(); //e.ensure(u24,2); 
     124        wha[] whas = c.readArray(wha.class, u24); 
     125 
     126         
     127         
     128        if(true) 
     129        { 
     130            /*Vertex[] verts = new Vertex[bunch.length]; 
     131            for(int i=0;i<bunch.length;i++) 
     132            { 
     133                Flt x = bunch[i].f1; 
     134                Flt y = bunch[i].f2; 
     135                Flt z = bunch[i].f3; 
     136                verts[i] = Vertex.createFromFlts(x, y, z); 
     137            }*/ 
     138            Vertex[] verts = new Vertex[fs.length]; 
     139            for(int i=0;i<fs.length;i++) 
     140            { 
     141                int to = fs[i].v2; 
     142                int from = fs[i].v3; 
     143                Flt x= bunch[to].f1; 
     144                Flt y= bunch[to].f2; 
     145                Flt z= bunch[to].f3; 
     146                verts[i] = Vertex.createFromFlts(x, y, z); 
    39147            } 
    40             strs = c.readArray(Bstr.class, strCount); 
    41              
    42             if(c.getBytesRemaining()<40) 
    43             { 
    44                 int dummy=0; 
     148             
     149            ShortTriplet[] faces = new ShortTriplet[whas.length]; 
     150            for(int i=0;i<whas.length;i++) 
     151            { 
     152                int v1 = whas[i].u6; 
     153                int v2 = whas[i].u7; 
     154                int v3 = whas[i].u8; 
     155                faces[i] = ShortTriplet.createFromShorts((short)v1, (short)v2, (short)v3); 
    45156            } 
    46157             
    47             if(true)return; 
    48              
    49             //hsObjectGroup 
    50             int tag2 = c.readInt(); //should actually be a reverse int. 
    51             if(tag2!=0x9469DF4E) 
    52             { 
    53                 throw new uncaughtexception("Unhandled tag."); 
     158            String objname = this.name.toString(); 
     159             
     160            if(main==null) 
     161            { 
     162                main = Primary.createNull(); 
     163                main.meshdata.mat = Material.create("defaultmat"); 
    54164            } 
    55             ReverseInt two = new ReverseInt(c); e.ensure(two.convertToInt()==2); 
    56             int six = c.readInt();  e.ensure(six==6); 
    57             int u8 = c.readInt(); //v6 
    58             if(u8!=0) 
    59             { 
    60                 m.err("unhandled."); 
    61             } 
    62             int count = c.readInt(); //v65 
    63             Bstr[] morestrs = c.readArray(Bstr.class, count); 
    64             int count2 = c.readInt(); //v69 
    65             if(count2!=0) 
    66             { 
    67                 m.err("unhandled."); 
    68             } 
    69             int count3 = c.readInt(); //v72 
    70             if(count3!=0) 
    71             { 
    72                 m.err("unhandled."); 
    73             } 
    74             else 
    75             { 
    76                 int hasThing = c.readInt(); 
    77                 if(hasThing!=0) 
    78                 { 
    79                     m.err("unhandled."); 
    80                 } 
    81                 int count4 = c.readInt(); //v78 
    82                 if(count4!=0) 
    83                 { 
    84                     m.err("unhandled."); 
    85                 } 
    86                 else 
    87                 { 
    88                     int u10 = c.readInt(); //stored at offset 148 
    89                     int u11 = c.readInt(); //v15 
    90                     if(u11!=0) 
    91                     { 
    92                         m.err("unhandled."); 
    93                     } 
    94                     int count5 = c.readInt(); //v84 
    95                     if(count5!=0) 
    96                     { 
    97                         m.err("unhandled."); 
    98                     } 
    99                     else 
    100                     { 
    101                         int count6 = c.readInt(); //v86 
    102                         if(count6!=0) 
    103                         { 
    104                             m.err("unhandled."); 
    105                         } 
    106                         else 
    107                         { 
    108                             int count7 = c.readInt(); //v91 
    109                             if(count7!=0) 
    110                             { 
    111                                 m.err("unhandled."); 
    112                             } 
    113                             else 
    114                             { 
    115                                 int count8 = c.readInt(); //v96 
    116                                 if(count8!=0) 
    117                                 { 
    118                                     m.err("unhandled."); 
    119                                 } 
    120                                 else 
    121                                 { 
    122                                     int count9 = c.readInt(); //v101 
    123                                     if(count9!=0) 
    124                                     { 
    125                                         m.err("unhandled."); 
    126                                     } 
    127                                     else 
    128                                     { 
    129                                         int count10 = c.readInt(); //v107 
    130                                         if(count10!=0) 
    131                                         { 
    132                                             //m.err("unhandled."); 
    133                                             for(int i=0;i<count10;i++) 
    134                                             { 
    135                                                 int subtag1 = c.readInt(); 
    136                                                 int subtag2 = c.readInt(); //size of rest of block? 
    137                                                  
    138                                                 int sub1 = c.readInt(); 
    139                                                 if(sub1!=0) 
    140                                                 { 
    141                                                     //45a950 block 
    142                                                     Bstr subs = new Bstr(c); 
    143                                                     int dummy=0; 
    144                                                 } 
    145                                                 int sub2 = c.readInt(); 
    146                                                 for(int j=0;j<sub2;j++) 
    147                                                 { 
    148                                                     //45a950 block 
    149                                                     //m.err("unhandled"); 
    150                                                     Bstr subs2 = new Bstr(c); 
    151                                                 } 
    152                                             } 
    153                                         } 
    154                                         else 
    155                                         { 
    156                                             int count11 = c.readInt(); //result 
    157                                             if(count11!=0) 
    158                                             { 
    159                                                 m.err("unhandled."); 
    160                                             } 
    161                                         } 
    162                                     } 
    163                                 } 
    164                             } 
    165                         } 
    166                     } 
    167                      
    168                 } 
    169             } 
    170              
    171             //Sceneobject so = new Sceneobject(c); 
    172              
     165            NamedObj newobj = NamedObj.createNull(objname); 
     166            newobj.namedTriangleObject = NamedTriangleObject.createNull(); 
     167            newobj.namedTriangleObject.points = PointArray.create(verts); 
     168            newobj.namedTriangleObject.faces = FaceArray.create(faces, "defaultmat"); 
     169            main.meshdata.objs.add(newobj); 
     170             
     171            IBytedeque out = new Bytedeque2(); 
     172            main.compile(out); 
     173            byte[] filedata = out.getAllBytes(); 
     174            FileUtils.WriteFile("c:/test.3ds", filedata); 
     175        } 
     176        if(true)return; 
     177         
     178         
     179         
     180         
     181  &nbs