Confusion regarding nifty GUI threads

Hi,
I have added five screens to a simple screencontroller in nifty.
[java] nifty.fromXml(“Interface/startScreen.xml”, “start”, this);
nifty.addXml(“Interface/moduleScreen.xml”);
nifty.addXml(“Interface/questionScreen.xml”);
nifty.addXml(“Interface/hudScreen.xml”);
nifty.addXml(“Interface/endScreen.xml”);
[/java]

When I run the following code once.
[java] log.debug(“please CONFIRM the answer first”);
System.out.println(“lil”);
[/java]
I get multiple(equal to number of XML attached) debug messages but only single println message. Why does it happens.

[java]DEBUG MainMenuAppState - please CONFIRM the answer first
8679 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - please CONFIRM the answer first
8679 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - please CONFIRM the answer first
8679 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - please CONFIRM the answer first
8679 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - please CONFIRM the answer first
8679 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - please CONFIRM the answer first
lil[/java]

Please point to relevant resources explaining what exactly nifty do with screens etc.

If these two lines:
[java]
log.debug(“please CONFIRM the answer first”);
System.out.println(“lil”);
[/java]

Are together then one will always be run with the other… five of one = five of the other. There is no other way unless you have a log.debug somewhere else logging the same thing. So that must be what’s happening.

Where are you calling these? Are they being called together like in your post? Have you done a clean build to remove any old classes hanging around?

1 Like

Unless there are 5 logging listeners (or whatever) - so every single log message gets displayed 5 times.

@zarch said: Unless there are 5 logging listeners (or whatever) - so every single log message gets displayed 5 times.

True… I assumed a lack of this kind of advanced setup given the nature of the post.

Changing the log to:
log.debug(“please CONFIRM the answer first” + System.nanoTime());

…would provide illumination on either issue. Either they all have the exact same time (in which case it’s a log listener thing) or only one has the nano time (in which case there is some identical logging coming from elsewhere.)

@zarch said: Unless there are 5 logging listeners (or whatever) - so every single log message gets displayed 5 times.

My every log message gets displayed 5 times.
However its all unintentional and I’m not aware of logging listeners

@simar.i3r said: My every log message gets displayed 5 times. However its all unintentional and I'm not aware of logging listeners

Literally every log gets repeated five times or just the log messages you were originally talking about?

There is something really funky about your setup.

I didn’t understand where the log statements is placed, in the screen controller? If you specify the same controller in the XML files then nifty will instantiate the controller 1 time for each XML unless you register the controller instance with nifty first…

@pspeed said: Literally _every_ log gets repeated five times or just the log messages you were originally talking about?

There is something really funky about your setup.

Here is my entire log

[java]ant -f C:\Users\Gursimar\Documents\JMonkey\SBA_drag_drop_git run
init:
Deleting: C:\Users\Gursimar\Documents\JMonkey\SBA_drag_drop_git\build\built-jar.properties
deps-jar:
Updating property file: C:\Users\Gursimar\Documents\JMonkey\SBA_drag_drop_git\build\built-jar.properties
compile:
run:
Nov 26, 2013 12:07:17 PM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.0.3
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Lwjgl 2.9.0 context running on thread LWJGL Renderer Thread
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Adapter: nvd3dumx,nvwgf2umx,nvwgf2umx
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Driver Version: 8.15.11.8647
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Vendor: NVIDIA Corporation
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: OpenGL Version: 3.0.0
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: Renderer: GeForce GT 230M/PCI/SSE2
Nov 26, 2013 12:07:18 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: GLSL Ver: 1.30 NVIDIA via Cg compiler
Nov 26, 2013 12:07:18 PM com.jme3.asset.AssetConfig loadText
WARNING: Cannot find loader com.jme3.scene.plugins.blender.BlenderModelLoader
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Device: OpenAL Soft
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Vendor: OpenAL Community
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Renderer: OpenAL Soft
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio Version: 1.1 ALSOFT 1.15.1
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: AudioRenderer supports 64 channels
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio effect extension version: 1.0
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio max auxilary sends: 4
DEBUG MainMenuAppState - Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 1
DEBUG MainMenuAppState - Random no: 0 Random testform 1,3
2 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Random no: 0 Random testform 1,3
2 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Random no: 0 Random testform 1,3
DEBUG MainMenuAppState - Total no of testforms : 2 in module 2
8 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 2
8 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 2
DEBUG MainMenuAppState - Random no: 0 Random testform 1,2
12 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Random no: 0 Random testform 1,2
12 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Random no: 0 Random testform 1,2
C:\Users\Gursimar.jme3
hurr!!!
INFO MainMenuAppState - mId 1
2319 [LWJGL Renderer Thread] INFO test.MainMenuAppState - mId 1
2319 [LWJGL Renderer Thread] INFO test.MainMenuAppState - mId 1
2319 [LWJGL Renderer Thread] INFO test.MainMenuAppState - mId 1
INFO MainMenuAppState - currMId 0
2705 [LWJGL Renderer Thread] INFO test.MainMenuAppState - currMId 0
2705 [LWJGL Renderer Thread] INFO test.MainMenuAppState - currMId 0
2705 [LWJGL Renderer Thread] INFO test.MainMenuAppState - currMId 0
INFO MainMenuAppState - currQId 0
2706 [LWJGL Renderer Thread] INFO test.MainMenuAppState - currQId 0
2706 [LWJGL Renderer Thread] INFO test.MainMenuAppState - currQId 0
2706 [LWJGL Renderer Thread] INFO test.MainMenuAppState - currQId 0
INFO MainMenuAppState - qId 1
2706 [LWJGL Renderer Thread] INFO test.MainMenuAppState - qId 1
2706 [LWJGL Renderer Thread] INFO test.MainMenuAppState - qId 1
2706 [LWJGL Renderer Thread] INFO test.MainMenuAppState - qId 1
Starting GAME
Started
price 58
expiry 34/43/54
price 78
expiry 32/11/12
price 58
expiry 34/43/54
price 58
expiry 34/43/54
price 58
expiry 34/43/54
price 58
expiry 34/43/54
drink-final
Position attached

drink-final
Position attached

beer
Position attached

beer
Position attached

glass
Position attached

glass
Position attached

mall
Position attached

DEBUG ModelEntityState - MAX Size of Spatial: 3.7988355 2.9998636
4039 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.ModelEntityState - MAX Size of Spatial: 3.7988355 2.9998636
4039 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.ModelEntityState - MAX Size of Spatial: 3.7988355 2.9998636
4039 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.ModelEntityState - MAX Size of Spatial: 3.7988355 2.9998636
4039 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.ModelEntityState - MAX Size of Spatial: 3.7988355 2.9998636

Size of arraylist is 12
INFO ModelEntityState - SubMeshMAGNET added: FrontAisle01 0
4063 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle01 0
4063 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle01 0
4063 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle01 0
4063 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle01 0

Size of arraylist is 12
INFO ModelEntityState - SubMeshMAGNET added: FrontAisle02 0
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle02 0
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle02 0
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle02 0
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: FrontAisle02 0

Size of arraylist is 12
INFO ModelEntityState - SubMeshMAGNET added: LeftAisle01 1
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle01 1
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle01 1
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle01 1
4064 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle01 1

Size of arraylist is 12
INFO ModelEntityState - SubMeshMAGNET added: LeftAisle02 1
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle02 1
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle02 1
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle02 1
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: LeftAisle02 1

Size of arraylist is 12
INFO ModelEntityState - SubMeshMAGNET added: RightAisle01 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle01 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle01 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle01 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle01 2

Size of arraylist is 12
INFO ModelEntityState - SubMeshMAGNET added: RightAisle02 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle02 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle02 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle02 2
4065 [LWJGL Renderer Thread] INFO threeD.dragdrop.ModelEntityState - SubMeshMAGNET added: RightAisle02 2

*********In Main.class: Ready to catch EVENT *********

Nov 26, 2013 12:07:25 PM de.lessvoid.nifty.screen.Screen registerElementId
WARNING: Possible conflicting id [help] detected. Consider making all Ids unique or use #id in control-definitions.
Nov 26, 2013 12:07:25 PM de.lessvoid.nifty.screen.Screen registerElementId
WARNING: Possible conflicting id [help#text] detected. Consider making all Ids unique or use #id in control-definitions.
DEBUG PickPlaceEventState -
8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
DEBUG PickPlaceEventState - **** EVENT TRIGGERED *****
8493 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
8493 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
8493 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
8493 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
8493 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
DEBUG PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
8497 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
8497 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
8497 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
8497 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
8497 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
DEBUG PickPlaceEventState - Camera direction(-0.020340912, -0.70242226, -0.71146965)
8506 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.020340912, -0.70242226, -0.71146965)
8506 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.020340912, -0.70242226, -0.71146965)
8506 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.020340912, -0.70242226, -0.71146965)
8506 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.020340912, -0.70242226, -0.71146965)
8506 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.020340912, -0.70242226, -0.71146965)
DEBUG PickPlaceEventState - Shot com.jme3.scene.Geometry: batch[4]
8510 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: batch[4]
8510 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: batch[4]
8510 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: batch[4]
8510 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: batch[4]
8510 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: batch[4]
DEBUG PickPlaceEventState - Shot spatial parent: beer-ogremesh
8516 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: beer-ogremesh
8516 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: beer-ogremesh
8516 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: beer-ogremesh
8516 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: beer-ogremesh
8516 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: beer-ogremesh
DEBUG PickPlaceEventState - Shot Normal: (0.36058652, 0.3348974, 0.8705292)
8527 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.36058652, 0.3348974, 0.8705292)
8527 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.36058652, 0.3348974, 0.8705292)
8527 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.36058652, 0.3348974, 0.8705292)
8527 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.36058652, 0.3348974, 0.8705292)
8527 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.36058652, 0.3348974, 0.8705292)
DEBUG PickPlaceEventState - Shot Point: (-4.4219117, 3.070221, -11.720295)
8531 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-4.4219117, 3.070221, -11.720295)
8531 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-4.4219117, 3.070221, -11.720295)
8531 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-4.4219117, 3.070221, -11.720295)
8531 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-4.4219117, 3.070221, -11.720295)
8531 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-4.4219117, 3.070221, -11.720295)
INFO PickPlaceEventState - Traversing Geometry: batch[4]
8535 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: batch[4]
8535 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: batch[4]
8535 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: batch[4]
8535 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: batch[4]
8535 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: batch[4]
INFO PickPlaceEventState - Traversing Geometry: beer-ogremesh
8538 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: beer-ogremesh
8538 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: beer-ogremesh
8538 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: beer-ogremesh
8538 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: beer-ogremesh
8538 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: beer-ogremesh
DEBUG PickPlaceEventState - Picking the object, Bounded Node: beer-ogremesh
8540 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Picking the object, Bounded Node: beer-ogremesh
8540 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Picking the object, Bounded Node: beer-ogremesh
8540 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Picking the object, Bounded Node: beer-ogremesh
8540 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Picking the object, Bounded Node: beer-ogremesh
8540 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Picking the object, Bounded Node: beer-ogremesh
DEBUG PickPlaceEventState -
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState -
DEBUG PickPlaceEventState - **** EVENT TRIGGERED *****
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - **** EVENT TRIGGERED *****
DEBUG PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
10708 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera location: (-3.3557167, 39.88858, 25.572292)
DEBUG PickPlaceEventState - Camera direction(-0.28304738, -0.57354414, -0.7687206)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.28304738, -0.57354414, -0.7687206)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.28304738, -0.57354414, -0.7687206)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.28304738, -0.57354414, -0.7687206)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.28304738, -0.57354414, -0.7687206)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Camera direction(-0.28304738, -0.57354414, -0.7687206)
DEBUG PickPlaceEventState - Shot com.jme3.scene.Geometry: FrontAisle01
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: FrontAisle01
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: FrontAisle01
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: FrontAisle01
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: FrontAisle01
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot com.jme3.scene.Geometry: FrontAisle01
DEBUG PickPlaceEventState - Shot spatial parent: Cube.016-ogremesh
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: Cube.016-ogremesh
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: Cube.016-ogremesh
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: Cube.016-ogremesh
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: Cube.016-ogremesh
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot spatial parent: Cube.016-ogremesh
DEBUG PickPlaceEventState - Shot Normal: (0.0, 1.0, 0.0)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.0, 1.0, 0.0)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.0, 1.0, 0.0)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.0, 1.0, 0.0)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.0, 1.0, 0.0)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Normal: (0.0, 1.0, 0.0)
DEBUG PickPlaceEventState - Shot Point: (-20.254318, 5.6466293, -20.322159)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-20.254318, 5.6466293, -20.322159)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-20.254318, 5.6466293, -20.322159)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-20.254318, 5.6466293, -20.322159)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-20.254318, 5.6466293, -20.322159)
10709 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Shot Point: (-20.254318, 5.6466293, -20.322159)
INFO PickPlaceEventState - Traversing Geometry: FrontAisle01
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01
INFO PickPlaceEventState - Traversing Geometry: Cube.016-ogremesh
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-ogremesh
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-ogremesh
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-ogremesh
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-ogremesh
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-ogremesh
INFO PickPlaceEventState - Traversing Geometry: Cube.016-entity
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-entity
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-entity
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-entity
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-entity
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Cube.016-entity
INFO PickPlaceEventState - Traversing Geometry: FrontAisle01-node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01-node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01-node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01-node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01-node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: FrontAisle01-node
INFO PickPlaceEventState - Traversing Geometry: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] INFO threeD.dragdrop.PickPlaceEventState - Traversing Geometry: Models/mall/mall-scene_node
DEBUG PickPlaceEventState - Placing the object, Bounded Node: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Placing the object, Bounded Node: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Placing the object, Bounded Node: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Placing the object, Bounded Node: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Placing the object, Bounded Node: Models/mall/mall-scene_node
10710 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState - Placing the object, Bounded Node: Models/mall/mall-scene_node
DEBUG PositionProcessor - Computing Position on Container: Models/mall/mall-scene_node
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Container: Models/mall/mall-scene_node
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Container: Models/mall/mall-scene_node
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Container: Models/mall/mall-scene_node
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Container: Models/mall/mall-scene_node
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Container: Models/mall/mall-scene_node
DEBUG PositionProcessor - Computing Position on Shot: FrontAisle01
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Shot: FrontAisle01
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Shot: FrontAisle01
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Shot: FrontAisle01
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Shot: FrontAisle01
10728 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Computing Position on Shot: FrontAisle01
DEBUG PositionProcessor - Spatial at 1 contains: null
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Spatial at 1 contains: null
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Spatial at 1 contains: null
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Spatial at 1 contains: null
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Spatial at 1 contains: null
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Spatial at 1 contains: null
INFO PositionProcessor - posOldContainer: null
10729 [LWJGL Renderer Thread] INFO threeD.dragdrop.PositionProcessor - posOldContainer: null
10729 [LWJGL Renderer Thread] INFO threeD.dragdrop.PositionProcessor - posOldContainer: null
10729 [LWJGL Renderer Thread] INFO threeD.dragdrop.PositionProcessor - posOldContainer: null
10729 [LWJGL Renderer Thread] INFO threeD.dragdrop.PositionProcessor - posOldContainer: null
10729 [LWJGL Renderer Thread] INFO threeD.dragdrop.PositionProcessor - posOldContainer: null
DEBUG PositionProcessor - Index of placement in MAGNET is: 1
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Index of placement in MAGNET is: 1
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Index of placement in MAGNET is: 1
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Index of placement in MAGNET is: 1
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Index of placement in MAGNET is: 1
10729 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PositionProcessor - Index of placement in MAGNET is: 1
Response [[frontaisle01, frontaisle02, leftaisle01, leftaisle02, rightaisle01, rightaisle02], [[null, [beer, breakable, food, lower], null, null, null, null, null, null, null, null, null, null], [null, null, null, null, null, null, null, null, null, null, null, null], [null, null, null, null, null, null, null, null, null, null, null, null], [null, null, null, null, null, null, null, null, null, null, null, null], [null, null, null, null, null, null, null, null, null, null, null, null], [null, null, null, null, null, null, null, null, null, null, null, null]]]
Magnets [[frontaisle01, frontaisle02, leftaisle01, leftaisle02, rightaisle01, rightaisle02], [[[front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable], [front, food, lower, breakable]], [[front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper], [front, food, upper]], [[left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable], [left, lower, breakable]], [[left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper], [left, upper]], [[right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable], [right, lower, breakable]], [[right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper], [right, upper]]], [[[], [], [], [], [], [], [], [], [], [], [], []], [[breakable], [breakable], [breakable], [breakable], [breakable], [breakable], [breakable], [breakable], [breakable], [breakable], [breakable], [breakable]], [[], [], [], [], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], [], [], [], []]]]

4

Positive Tag Matched on MAGNET1 on AISLE frontaisle01 with CONTAINER beer
Tag1: breakable

Positive Tag Matched on MAGNET1 on AISLE frontaisle01 with CONTAINER beer
Tag2: food

Positive Tag Matched on MAGNET1 on AISLE frontaisle01 with CONTAINER beer
Tag3: lower
Your final tagged score is 15.0
3
{lower=[1], breakable=[1], food=[1]}
Error in clustering scoring in question 1: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float
BUILD SUCCESSFUL (total time: 28 seconds)
[/java]

Something happens between these log messages:
INFO: Audio effect extension version: 1.0
Nov 26, 2013 12:07:19 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio max auxilary sends: 4

And these…
DEBUG MainMenuAppState – Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState – Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState – Total no of testforms : 2 in module 1

Notice how the format of the log messages changes? Are you doing your own logging or standard Java logging? Are you messing with the setup?

Whatever it is you are doing, you are doing it too many times, I guess.

I’m using log4j like this one for each class

[java] private static Logger log = Logger.getLogger(MainMenuAppState.class.getName());
[/java]

I think log messages started duplicating after I started using nifty.
I will try to diagnose the problem…

@simar.i3r said: I'm using log4j like this one for each class

[java] private static Logger log = Logger.getLogger(MainMenuAppState.class.getName());
[/java]

I think log messages started duplicating after I started using nifty.
I will try to diagnose the problem…

Ok… do you change the log4j setup at all? Do you have a log4j.xml that you are using to configure things?

The messages are getting output to the log multiple times so it’s acting like it has multiple log listeners setup. Everything seems fine until you switch over to using log4j (which itself shouldn’t be an issue since I use it all the time with no problems.)

Actually, even as late as this:
Nov 26, 2013 12:07:25 PM de.lessvoid.nifty.screen.Screen registerElementId
WARNING: Possible conflicting id [help] detected. Consider making all Ids unique or use #id in control-definitions.
Nov 26, 2013 12:07:25 PM de.lessvoid.nifty.screen.Screen registerElementId
WARNING: Possible conflicting id [help#text] detected. Consider making all Ids unique or use #id in control-definitions.
DEBUG PickPlaceEventState –
8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState –

…you have three different log formats being output. The first is JME’s standard JUL logging and I suspect the last two are different log4j appenders.

@pspeed said: Ok... do you change the log4j setup at all? Do you have a log4j.xml that you are using to configure things?

The messages are getting output to the log multiple times so it’s acting like it has multiple log listeners setup. Everything seems fine until you switch over to using log4j (which itself shouldn’t be an issue since I use it all the time with no problems.)

I’m not using the log4j.xml as android cant find it due to the fact that assets folder thing. So i’m using

[java] BasicConfigurator.configure();
[/java]

@pspeed said: Actually, even as late as this: Nov 26, 2013 12:07:25 PM de.lessvoid.nifty.screen.Screen registerElementId WARNING: Possible conflicting id [help] detected. Consider making all Ids unique or use #id in control-definitions. Nov 26, 2013 12:07:25 PM de.lessvoid.nifty.screen.Screen registerElementId WARNING: Possible conflicting id [help#text] detected. Consider making all Ids unique or use #id in control-definitions. DEBUG PickPlaceEventState – 8490 [LWJGL Renderer Thread] DEBUG threeD.dragdrop.PickPlaceEventState –

…you have three different log formats being output. The first is JME’s standard JUL logging and I suspect the last two are different log4j appenders.

Only recently i found that JME has its own logging system.
I guess I should stick to the default one.

@simar.i3r said: I'm not using the log4j.xml as android cant find it due to the fact that assets folder thing. So i'm using

[java] BasicConfigurator.configure();
[/java]

How many times do you call that?

Are you sure?

And again, is your appstate the screen controller? How do you specify the screen controller in the XML? Do you register the screen controller before adding the XML-file?

Show us code or we will go around in circles forever.

@pspeed said: How many times do you call that?

Are you sure?

Ya i have that once for each class/appstate initialization method

@jmaasing said: And again, is your appstate the screen controller? How do you specify the screen controller in the XML? Do you register the screen controller before adding the XML-file?

Show us code or we will go around in circles forever.

i dont understand what you meant by ‘do you register the sceen controller before adding the XML file’
Ya same screen controller for all my xmls. I have 9 xmls each containing one screen. Here is code for one of them

[java]<?xml version=“1.0” encoding=“UTF-8”?>
<nifty xmlns=“http://nifty-gui.sourceforge.net/nifty-1.3.xsd
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=“http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd”>
<useStyles filename=“nifty-default-styles.xml” />
<useControls filename=“nifty-default-controls.xml” />

&lt;screen id="endScreen" controller="test.MainMenuAppState"&gt;
    &lt;layer id="background" childLayout="center"&gt;
        &lt;!--
        &lt;image filename="Textures/back.png" width="100%" height="100%"&gt;&lt;/image&gt;
        --&gt;
    &lt;/layer&gt;[/java]

My main menu app state code
[java] am = app.getAssetManager();
am.registerLoader(XMLLoader.class, “xml”);
am.registerLoader(TIOLoader.class, “tio”);
//am.loadTexture(“Textures/back.png”);

    BasicConfigurator.configure();
    niftyDisplay = new NiftyJmeDisplay(app.getAssetManager(), app.getInputManager(), app.getAudioRenderer(), app.getGuiViewPort());

    // Create a new nifty GUI object
    nifty = niftyDisplay.getNifty();

    // Read your XML and initialize your custom ScreenController
    nifty.fromXml("Interface/startScreen.xml", "startScreen", this);
    nifty.addXml("Interface/moduleScreen.xml");
    nifty.addXml("Interface/questionScreen.xml");
    nifty.addXml("Interface/hudScreen.xml");
    nifty.addXml("Interface/endScreen.xml");
    nifty.addXml("Interface/helpScreen.xml");
    nifty.addXml("Interface/loadScreen.xml");
    nifty.addXml("Interface/reviewQuestionScreen.xml");


public void setEnabled(boolean enabled) {
    // Pause and unpause
    super.setEnabled(enabled);
    if (enabled) {
        //init stuff that is in use while this state is running
        // attach the Nifty display to the gui view port as a processor
        app.getGuiViewPort().addProcessor(niftyDisplay);
        // disable the fly cam
        app.getFlyByCamera().setDragToRotate(true);

        // Load app states
        rgas = new RunningGameAppState();
        pps = new PickPlaceState();

[/java]

@simar.i3r said: i dont understand what you meant by 'do you register the sceen controller before adding the XML file' Ya same screen controller for all my xmls. I have 9 xmls each containing one screen. Here is code for one of them

[java]<?xml version=“1.0” encoding=“UTF-8”?>
<nifty xmlns=“http://nifty-gui.sourceforge.net/nifty-1.3.xsd
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=“http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd”>
<useStyles filename=“nifty-default-styles.xml” />
<useControls filename=“nifty-default-controls.xml” />

&lt;screen id="endScreen" controller="test.MainMenuAppState"&gt;
    &lt;layer id="background" childLayout="center"&gt;
        &lt;!--
        &lt;image filename="Textures/back.png" width="100%" height="100%"&gt;&lt;/image&gt;
        --&gt;
    &lt;/layer&gt;[/java]

When Nifty reads the XML file it will look for the screen controller class. It will then instantiate the screen controller (new test.MainMenuAppState()). So if you set up logging in the constructor of the screen controller, i.e. you appstate, there is a risk that it will be called several times - once for each XML.

There is a method in nifty (I think called registerScreenController), if you call that before from/addXML Nifty will not instantiate the screencontroller, it will use whatever instance you gave it as long as the class matches what you put in the XML.

It is not possible to read from your code sample in what method/constructor you set up things so I can’t say if that is what is happening. Should be pretty easy to check though if you set a breakpoint there, run the debugger and see how many times it is called.

@jmaasing said: When Nifty reads the XML file it will look for the screen controller class. It will then instantiate the screen controller (new test.MainMenuAppState()). So if you set up logging in the constructor of the screen controller, i.e. you appstate, there is a risk that it will be called several times - once for each XML.

There is a method in nifty (I think called registerScreenController), if you call that before from/addXML Nifty will not instantiate the screencontroller, it will use whatever instance you gave it as long as the class matches what you put in the XML.

It is not possible to read from your code sample in what method/constructor you set up things so I can’t say if that is what is happening. Should be pretty easy to check though if you set a breakpoint there, run the debugger and see how many times it is called.

Debugging suggests that each of my log message is called exactly once. The very first log message
[java] log.debug("Total no of testforms : " + totalComponents + " in module " + mId);
[/java]

results in
[java]DEBUG MainMenuAppState - Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 1
[/java]

I don’t understand from where 0 [LWJGL Renderer Thread] log message is coming from??

When I commented the line
BasicConfigurator.configure

the same log resulted in [java]
DEBUG MainMenuAppState - Total no of testforms : 2 in module 1
0 [LWJGL Renderer Thread] DEBUG test.MainMenuAppState - Total no of testforms : 2 in module 1[/java]