All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.j3d.utils.scenegraph.io.state.com.sun.j3d.utils.universe.SimpleUniverseState Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * - Redistribution of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * - Redistribution in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in
 *   the documentation and/or other materials provided with the
 *   distribution.
 *
 * Neither the name of Sun Microsystems, Inc. or the names of
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * This software is provided "AS IS," without a warranty of any
 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
 * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
 * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
 * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
 * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
 * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
 * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
 * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 *
 * You acknowledge that this software is not designed, licensed or
 * intended for use in the design, construction, operation or
 * maintenance of any nuclear facility.
 *
 */

package com.sun.j3d.utils.scenegraph.io.state.com.sun.j3d.utils.universe;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.HiResCoord;
import javax.media.j3d.Locale;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Matrix4d;

import com.sun.j3d.utils.scenegraph.io.retained.Controller;
import com.sun.j3d.utils.scenegraph.io.retained.SymbolTableData;
import com.sun.j3d.utils.scenegraph.io.state.javax.media.j3d.SceneGraphObjectState;
import com.sun.j3d.utils.universe.ConfiguredUniverse;
import com.sun.j3d.utils.universe.MultiTransformGroup;
import com.sun.j3d.utils.universe.PlatformGeometry;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.universe.ViewerAvatar;
import com.sun.j3d.utils.universe.ViewingPlatform;

public class SimpleUniverseState extends java.lang.Object {

    private SimpleUniverse universe=null;
    private Controller control;
    private ArrayList localeBGs;
    private int totalBGs=0;
    private PlatformGeometryState platformGeom;
    private ViewerAvatarState viewerAvatar;

    /**
     * Creates new SimpleUniverseState for writing.
     */
    public SimpleUniverseState( ConfiguredUniverse universe, Controller control ) {
        this.universe = universe;
        this.control = control;
    }

    /**
     * Creates new SimpleUniverseState for writing.
     */
    public SimpleUniverseState( SimpleUniverse universe, Controller control ) {
        this.universe = universe;
        this.control = control;
    }

    /**
     * Creates new SimpleUniverseState for reading.
     */
    public SimpleUniverseState( Controller control ) {
        this.control = control;
    }

    public void writeObject( DataOutput out ) throws IOException {
        MultiTransformGroup mtg = universe.getViewingPlatform().getMultiTransformGroup();
        int mtgSize = mtg.getNumTransforms();
        out.writeInt( mtgSize );

        // Store the matrix from each MTG transform
        Transform3D trans = new Transform3D();
        Matrix4d matrix = new Matrix4d();
        for(int i=0; i allLocales = universe.getAllLocales();
        out.writeInt( universe.numLocales() );
        localeBGs = new ArrayList( universe.numLocales() );
        int currentLocale = 0;
        int graphID = 0;
        while( allLocales.hasMoreElements() ) {
		Locale locale = allLocales.nextElement();
            HiResCoord hiRes = new HiResCoord();
            writeHiResCoord( out, hiRes );
            int bgs[];
            if (currentLocale==0)
                bgs = new int[locale.numBranchGraphs()-1];      // Disregard ViewingPlatform
            else
                bgs = new int[locale.numBranchGraphs()];
            out.writeInt( bgs.length );
            int count=0;
            Enumeration e = locale.getAllBranchGraphs();
            while( e.hasMoreElements() ) {
                BranchGroup bg = (BranchGroup)e.nextElement();
                if (!(bg instanceof ViewingPlatform)) {
                    control.getSymbolTable().addBranchGraphReference( bg, graphID );
                    bgs[count] = graphID++;
                    out.writeInt( bgs[count] );
                    count++;
                    totalBGs++;
                }
            }
            localeBGs.add( bgs );
        }
    }

    private void readLocales( DataInput in ) throws IOException {
        int numLocales = in.readInt();
        localeBGs = new ArrayList( numLocales );
        Locale locale;
        for(int i=0; i e = universe.getAllLocales();
        for( int i=0; i e = universe.getAllLocales();
        Locale locale;

        for( int i=0; i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy