BranchGroup ändern

Highchiller

Bekanntes Mitglied
Hallöchen, ich habe noch ein recht nerviges Problem.

Es dreht sich immernoch alles um das Spiel "Hive".
Folgendes, wenn ein Spielstein gelegt wird, muss das ja aktualisiert werden. Das geschieht über eine update() Methode. ABER um dieses Update sichtbar zu machen, muss ich momentan noch das ganze Universum neu erstellen und alles aufbauen. Das führt dazu, dass beim ziehen kurz alles verschwindet und dann auftaucht, wenn er alles neu berechnet hat.

Auf einen Punkt gebracht, wie schaffe ich es, meine BranchGroup im laufenden Programm zu ändern.

Für das verständnis:
* BranchGroup RootBG ist die BG die in das Universum gehängt wird.
* Dann gibt es Lichter (AmbientLight, DirectionalLight, PointLight, SpotLight) die an RootBG gehangen werden.
* Hinzu kommt ein Hintergrund (Background) der ebenfalls ans RootBG gehangen wird
* Jetzt wirds wichtig, es gibt eine TransformGroup (namens PiecesTG) diese enthält mehrere TransformGroups (namens PieceGraph3D) welche die einzelnen Spielsteine beinhaltet. Diese PieceGraph3D's werden in die PiecesTG gehangen, die wiederrum in die RootBG

Als Code schaut das (aufs wesentliche beschränkt) so aus:
Java:
@SuppressWarnings( "serial" )
public class Board3D extends JPanel implements Observer{
	private Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
	
	private SimpleUniverse sUniverse;

	private TransformGroup PiecesTG;
	private Transform3D PiecesT3D;

	private BranchGroup RootBG;
	
	private Background BG = new Background();
	
	public Board3D(){
		// ... hier steht noch einiges ... //
		
		sUniverse = new SimpleUniverse( canvas );
		sUniverse.getViewingPlatform().setNominalViewingTransform();
		
		ViewT3D = new Transform3D();
		ViewTG = sUniverse.getViewingPlatform().getViewPlatformTransform();
		
		PiecesT3D = new Transform3D();
		PiecesTG = new TransformGroup( PiecesT3D );
		PiecesTG.setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND);
		PiecesTG.setCapability(TransformGroup.ALLOW_CHILDREN_READ);
		PiecesTG.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);
		
		RootBG = new BranchGroup();
		BG = new Background(new Color3f(0.2f,0.2f,0.2f));
		createStarBackground();
		
		RootBG.addChild( BG );
		RootBG.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
		RootBG.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
		RootBG.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
		
		sUniverse.addBranchGraph( RootBG );
	}

	private void createSceneGraph(){
		// ... Hier werden die ganzen Steine erstellt, sprich alle TransformGroups (namens PieceGraph3D) und anschließend alle zu PiecesTG hinzugefügt ... //
	}

	@Override
	public void update(Observable observable, Object notification){
		
		// update universe and branchgroup, transformgroup		
		sUniverse.cleanup();
		
		RootBG = new BranchGroup();
		
		PiecesT3D = new Transform3D();
		PiecesTG = new TransformGroup( PiecesT3D );
		
		// sets new universe with viewing position
		sUniverse = new SimpleUniverse( canvas );
		setViewingPosition(zoomSlider.getValue());
		
		// sets background
		BG = new Background(new Color3f(0.2f,0.2f,0.2f));
		createStarBackground();
		RootBG.addChild(BG);
		
		// sets pieces to PiecesTG and lights to RootBG
		createSceneGraph();
		createLights();	
		
		// sets momently rotation
		PiecesT3D = new Transform3D();
		PiecesT3D.setRotation(new AxisAngle4f(0f,0f,1f, (float) Math.toRadians(90*index)));
		PiecesTG.setTransform(PiecesT3D);

		// adding pieces and compile
		RootBG.addChild(PiecesTG);
		
		RootBG.compile();
			
		// adding scenegraph to universe
		sUniverse.addBranchGraph( RootBG );
	}

Also hier bau ich das ganze Universum neu auf, da ich sonst ständig Fehlermeldungen bekomme.

Eigentlich müsste ich AUSCHLIEßLICH die TransformGroup PiecesTG ändern, denn es ändern sich ja nur die Steine. Aber das geht einfach nicht. So funktioniert es jedenfalls erst mal. Aber es STÖRT!

Weiß jemand wie ich das hinbekomme?

PS: Tut mir Leid wegen der ganzen Mühen die euch auferlege mit diesen Fragen :(
Ich hoffe ihr könnt helfen und es kostet nicht zu viel Zeit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
aze BranchGroup zur Laufzeit hinzufügen Spiele- und Multimedia-Programmierung 3
C SimpleUniversum und BranchGroup Spiele- und Multimedia-Programmierung 2
T 3D-Tetris Feld neuzeichnen ohne neue Branchgroup Spiele- und Multimedia-Programmierung 18
M problem mit Branchgroup.detach Spiele- und Multimedia-Programmierung 5
M Minecraft Minecraft 1.12.2 Plotrand ändern Spiele- und Multimedia-Programmierung 1
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
K FIguranimation bei Laufrichtungen ändern?! Spiele- und Multimedia-Programmierung 12
M Wie kann man die Auflösung eine fertigen Programms ändern? Spiele- und Multimedia-Programmierung 1
J Unicode Font Größe ändern Spiele- und Multimedia-Programmierung 2
T Bilder einbinden, bzw. ändern Spiele- und Multimedia-Programmierung 5
F LWJGL: Textur ändern mit GL11.readPixels Spiele- und Multimedia-Programmierung 5
F Bewegungsrichtung ändern Spiele- und Multimedia-Programmierung 4
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
B Bilder in GUI ändern ohne repaint() Spiele- und Multimedia-Programmierung 6
P Prozess Lautstärke ändern Spiele- und Multimedia-Programmierung 4
U Value in Programm ändern? Spiele- und Multimedia-Programmierung 5
aze Java3d:Helligkeit von Shape3D ändern Spiele- und Multimedia-Programmierung 2
M Variable die eine Klasse enthält ändern Problem Spiele- und Multimedia-Programmierung 16
truesoul Picking und Farbe ändern Spiele- und Multimedia-Programmierung 3
R Nachträgliches ändern von Vertex Arrays. Wie geht das? Spiele- und Multimedia-Programmierung 3
F Farbe ändern bei Überlappung Spiele- und Multimedia-Programmierung 2
U Canvas Ursprung ändern Spiele- und Multimedia-Programmierung 11
E Durch Klick auf den JButton will ich die Farbe ändern? Spiele- und Multimedia-Programmierung 8
DEvent [2D] Farbe bestimmten Pixels eines Bildes ändern Spiele- und Multimedia-Programmierung 3
S Dimensionen/Maßstab des J3D universe ändern Spiele- und Multimedia-Programmierung 8
U JPG in größe ändern und speichern Spiele- und Multimedia-Programmierung 3
N Bild im Panel ändern Spiele- und Multimedia-Programmierung 3
C Text in/auf Text2D ändern Spiele- und Multimedia-Programmierung 4
I Kameraposition in Java3d ändern Spiele- und Multimedia-Programmierung 13

Ähnliche Java Themen

Neue Themen


Oben