Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (475)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (530)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  How to add a TransformGroup to another live one?  (Read 1240 times)
0 Members and 1 Guest are viewing this topic.
Offline AndyLau

Senior Newbie




Java games rock!


« Posted 2003-09-27 14:24:03 »

I do like this:
// scene---- BranchGroup , is live
// objScale--- TransformGroup, is live

u.getLocale().removeBranchGraph(scene);
objScale.removeChild(objScale.numChildren()-1);
objScale.addChild(g);
u.getLocale().addBranchGraph(scene);

I call this code when I move the mouse. At first it is ok , but after sereval times , there is error:


Exception occurred during Behavior initialization:

java.lang.NullPointerException

     at javax.media.j3d.WakeupCriterion.cleanTree(WakeupCriterion.java:74)

     at javax.media.j3d.WakeupOr.cleanTree(WakeupOr.java:73)

     at javax.media.j3d.BehaviorRetained.wakeupOn(BehaviorRetained.java:312)

     at javax.media.j3d.Behavior.wakeupOn(Behavior.java:221)

     at com.sun.j3d.utils.behaviors.mouse.MouseBehavior.initialize(MouseBehavior.java:201)

     at com.sun.j3d.utils.behaviors.mouse.MouseRotate.initialize(MouseRotate.java:137)

     at javax.media.j3d.BehaviorRetained.executeInitialize(BehaviorRetained.java:290)

     at javax.media.j3d.Locale.doAddBranchGraph(Locale.java:204)

     at javax.media.j3d.Locale.addBranchGraph(Locale.java:163)

     at best.Applet1.drawlineD(Applet1.java:8880)

     at best.Applet1.lineMoved(Applet1.java:3619)


Please tell me whether my method of adding a TransformGroup to another live TransformGroup is right. Or how to add a TransformGroup into another live ? Thanks!
     
Offline Herkules

Senior Member




Friendly fire isn't friendly!


« Reply #1 - Posted 2003-09-27 14:48:09 »

I feel that the exception you get reveils a bug in Java3D, but generally its not a very good idea to leave the live state for a simple scenegraph change.

Better wrap you TG into a BranchGroup, that can be added/removed into a life graph.


HARDCODE    --     DRTS/FlyingGuns/JPilot/JXInput  --    skype me: joerg.plewe
Offline AndyLau

Senior Newbie




Java games rock!


« Reply #2 - Posted 2003-09-27 15:02:38 »

could you tell me how to wrap? thanks!
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Herkules

Senior Member




Friendly fire isn't friendly!


« Reply #3 - Posted 2003-09-27 15:08:55 »

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
//**********************************************************************************************
//            (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development
//            All rights reserved. Copying, modification,
//            distribution or publication without the prior written
//            consent of the author is prohibited.
//
//      Created on 30. March 2002, 18:52
//**********************************************************************************************
package de.hardcode.threed.objects;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.Group;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.Node;

/**
 * A group representing an object movable in space.
 * In spite of a simple TransfoormGroup, I am a BranchGroup so that I am
 * allowed to be added and removed from life scenegraphs.
 *
 * @author  Herkules
 */

public class ObjectGroup extends BranchGroup
{

      protected final TransformGroup mTransformGroup = new TransformGroup();

      /**
       * Ctor for derived classes that doesn't require a node.
       */

      protected ObjectGroup()
      {
            this.setBoundsAutoCompute( false );
      }
     
      /**
       * Creates a new instance of ObjectGroup.
       */

      public ObjectGroup( Node obj )
      {
            this.setBoundsAutoCompute( false );
            setNode( obj );
      }
     
     
      protected final void setNode( Node obj )
      {
            this.setCapability( BranchGroup.ALLOW_DETACH );
            this.setCapability( BranchGroup.ALLOW_CHILDREN_READ );
           
            mTransformGroup.addChild( obj );
            mTransformGroup.setCapability( TransformGroup.ALLOW_TRANSFORM_READ );
            mTransformGroup.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE );
            mTransformGroup.setCapability( TransformGroup.ALLOW_CHILDREN_EXTEND );
            mTransformGroup.setCapability( TransformGroup.ALLOW_CHILDREN_READ );
            mTransformGroup.setCapability( TransformGroup.ALLOW_CHILDREN_WRITE );
            mTransformGroup.setCapability( TransformGroup.ALLOW_BOUNDS_READ );
           
            this.addChild( mTransformGroup );
      }
     
      /**
       * Retrieve the transform part of this object.
       */

      public final TransformGroup getTransformGroup()
      {
            return mTransformGroup;
      }
     
     
      /**
       * Attach some data recursivly to the objects model in order to re-indentify it from
       * 3D data (e.g. picks/collisions)
       */

      public final void setUserData( Object userdata )
      {
            setUserDataDeep( mTransformGroup, userdata );
      }
     
      /**
       * Helper: recurse trough the scenegraph and attach data to each group.
       */

      private static final void setUserDataDeep( Group group, Object userdata )
      {
           
            group.setUserData( userdata );
            for( int c=0; c<group.numChildren(); ++c )
            {
                  if( group.getChild(c) instanceof Group )
                  {
                        setUserDataDeep( (Group)group.getChild(c), userdata );
                  }
                  else
                  {
                        group.getChild(c).setUserData( userdata );
                  }
            }
      }
     
}

HARDCODE    --     DRTS/FlyingGuns/JPilot/JXInput  --    skype me: joerg.plewe
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

ctomni231 (32 views)
2014-07-18 06:55:21

Zero Volt (28 views)
2014-07-17 23:47:54

danieldean (24 views)
2014-07-17 23:41:23

MustardPeter (25 views)
2014-07-16 23:30:00

Cero (40 views)
2014-07-16 00:42:17

Riven (42 views)
2014-07-14 18:02:53

OpenGLShaders (29 views)
2014-07-14 16:23:47

Riven (29 views)
2014-07-14 11:51:35

quew8 (27 views)
2014-07-13 13:57:52

SHC (63 views)
2014-07-12 17:50:04
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!