(May 2022) Monthly WIP Screenshot Thread

Hi folks,

got some time this month to go on working on my GUI/project.

  1. I had my JDK updated.

  2. I updated my JME version.

  3. I even updated my Lemur fork (Note: Dont do it again)

  4. I had worked on a custom lemur element (ReadField) before. I had continued working on that.
    That element is thought to have an optional headline, an optinal picture or scene (using a viewportpanel for that) and a textfield. I still use my modification of textfield for that. So textselect, copy from and copy in as well as different scrollmodes are possible. The ReadField tries to always have the same size (shrinking the headline and scene or number of lines of the textfield if necessary). The textfield comes with an optional horizontal slider (depending on the amount of text).
    Currently I have added an MouseEventControl that is similiar to Lemurs Drag functionality. Its possible to move and resize the element (if that option is activated).
    Check the small video (20s) in case you want to see it.
    I still need to add functionality for the scene (if a scene and not a picture is attached) to be resized.

  5. With the current lemur update I got some more ideas how to make an GUI element, that holds a picture and some data next to it. My modified Listbox is already able to have multiple columns and also multiple selected lines. That can be used e.g. as a server selection screen.

Imgur

So I just started to write my (first) own custom CellRenderer for Listbox. To avoid conflicts I will even make a new “ImageListbox” that is 98% extension of my Listbox. By "ab"using style my default renderer will know at which position in Listbox it will make a “picture” Button insteadt of a text. I know the way (at least I believe so) but its not ready, but it will be something like that.

Imgur

Use case: Maybe some statistcs at the end of a game/match ? A picture of the unit or the player + statistics or info right, left or on both sides of it.

6 Likes

Note: just to get images and text into a ListBox, you shouldn’t have to subclass. The default items already support images and text.

1 Like

Here’s some more Shader Nodes progress.

I’ve begun fixing some issues in the editor; first saving the Defines statement so that I don’t have to re-add it with every change.
Then as you can see, there are previews for all(?) MatParams. They are not interactive, yet, but that is planned as well.
Less obvious is that I’ve changed the looks of the WorldParam and MatParam nodes:
image
Old on top, new below.
The reasoning is that I think the name of it is more important than the type, since they have only one output. You can still see that it is a MatParam or WorldParam by its color and icon. Tool tips will also reveal the type. I’d like your opinion on whether it’s a good thing, or not. Feel free to vote below.

  • New changes look good!
  • I like the old ones better, more clarity and consistency.

0 voters

I’m also thinking of different sizes for different kinds of nodes. For example, a texture node would benefit from a more square look, as it would allow for a larger texture preview.
Attributes and WorldParams could be smaller, since they don’t have previews and only one output.

If you’re interested in playing with the PbrNodes matdef, I’ll put the in the store, but beware that it’s a frustrating experience without the SDK fixes.

12 Likes

Yes true,

but you need to get the image into Assetloader or have it available from start. And next thing is. The cellrenderer needs to know the cell(s) it renders with text and those that will render with an image.
I only saw that info (about cell position) in listbox but its not passed to cellrenderer.

As its still WIP I will see what to do. Maybe I end up making an own grid based element for my needs - lemur is flexible enough.

My idea was to change Listbox “just” a little bit more but as we all know this will end up in a mess for super specific use cases - thus I will see if I am better of extenting stuff and rewrite or modify one or two functions.

A bunch of working h went into that.

Probably a topic for another thread but I don’t understand what cell position has to do with it.

ListBox<MyThing> and then CellRenderer turns MyThing into a GUI element… which it can do whatever it wants to set that up.

cool one, it would be nice to make Node Groups so there could be default Node Group for PBR without providing vert shader data on upper left there.(because it would be in that Shader Group, cam position/Light position could be provided already inside group node too)

And now for something completely different…

12 Likes

A fun little project :smile:

You can configure:

  • The images and video to play on the wall.
  • The size and number of bricks.
  • The color of the side surfaces.
17 Likes

Playing video on the blocks makes for an amusing effect. Very cool!

Can you provide the source code?

Could you make the walls shatter more like glass (instead of a stack of un-mortared bricks)?

7 Likes

Same here! Source Code for bookmark (I have one at the default how to play video topic already) to implement it (hmm in future) would be highly appreciated!

3 Likes

I’ve been battling illnesses and asset pipelines but finally have the “Mythruna girl” animated and integrate into the Mythruna engine.

Note: this is not quite as simple as it sounds because the animation is controlled from the server (including collision shapes, etc.) and only visualized on the client.

9 Likes

Not something personal, but i have been working for 3 days on the NativeBufferAllocator, and i managed to build a one for android :slight_smile: , running the node instancing test case to be sure, this works with all types of buffers (VertexBuffer, AudioBuffer, Unifrom, Image, BufferObjects and InstancedGeometry).

Application Logs
I/JmeSurfaceView: Starting a new Game State
I/JmeSystem: Running on jMonkeyEngine 3.4.0-SNAPSHOT
     * Branch: android-native-bytebuffer
     * Git Hash: 1a29a19
     * Build Date: 2022-05-17
I/OGLESContext: Android Build Version: {0}
I/JmeSurfaceView: Game returns from the idle mode
I/JmeSurfaceView: Game goes idle
I/JmeSurfaceView: Context stops, but game is still running
I/JmeSurfaceView: Starting a new Game State
I/OGLESContext: Android Build Version: {0}
I/JmeSurfaceView: Game returns from the idle mode
I/AdrenoGLES: QUALCOMM build                   : f2ab992, I401605978b
    Build Date                       : 09/28/19
    OpenGL ES Shader Compiler Version: EV031.27.05.01
    Local Branch                     : 
    Remote Branch                    : 
    Remote Branch                    : 
    Reconstruct Branch               : 
    Build Config                     : S L 8.0.11 AArch64
I/AdrenoGLES: PFP: 0x005ff11a, ME: 0x005ff066
I/Gralloc4: mapper 4.x is not supported
W/Gralloc3: mapper 3.x is not supported
W/System: A resource failed to call close. 
I/JmeSurfaceView: JmeSurfaceView's joined the UI thread
I/JmeSurfaceView: JmeSurfaceView's joined the UI thread
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fc0870ef0, 4)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x7060877af0, 250)
    Buffer creation succeeded (mem_address, size) => (0x6ff08686c0, 64)
    Buffer creation succeeded (mem_address, size) => (0x6fc08723d0, 4)
    Buffer creation succeeded (mem_address, size) => (0x6ff0869430, 64)
I/GLRenderer: OpenGL Renderer Information
     * Vendor: {0}
     * Renderer: {1}
     * OpenGL Version: {2}
     * GLSL Version: {3}
     * Profile: {4}
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6ff0873750, 64)
W/AssetConfig: Cannot find loader {0}
W/AssetConfig: Cannot find loader {0}
W/AssetConfig: Cannot find loader {0}
W/AssetConfig: Cannot find loader {0}
I/chatty: uid=10193(com.jme3.hellojmesurfaceview) GLThread 6452 identical 1 line
W/AssetConfig: Cannot find loader {0}
W/AssetConfig: Cannot find loader {0}
I/chatty: uid=10193(com.jme3.hellojmesurfaceview) GLThread 6452 identical 1 line
W/AssetConfig: Cannot find loader {0}
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fc086a8b0, 4)
    Buffer creation succeeded (mem_address, size) => (0x6ff08659c0, 64)
    Buffer creation succeeded (mem_address, size) => (0x6ff08665f0, 64)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fc0868610, 4)
    Buffer creation succeeded (mem_address, size) => (0x6ff0866c80, 64)
    Buffer creation succeeded (mem_address, size) => (0x6ff086d9e0, 64)
I/AndroidJoyInput: loading joysticks for {0}
I/droidJoystickJoyInput14: loading Joystick devices
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fc08780f0, 4)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fd08c6a10, 24)
    Buffer creation succeeded (mem_address, size) => (0x71b0888040, 35280)
D/openal: [ALSOFT] (II) Initializing library v1.21.1-ae4eacf1 HEAD
    [ALSOFT] (II) Supported backends: opensl, null, wave
    [ALSOFT] (II) Loading config /etc/openal/alsoft.conf...
D/openal: [ALSOFT] (II) Loading config /etc/xdg/alsoft.conf...
    [ALSOFT] (II) Got binary: /system/bin, app_process64
    [ALSOFT] (II) Loading config /system/bin/alsoft.conf...
    [ALSOFT] (II) Key disable-cpu-exts not found
    [ALSOFT] (II) Extensions: -none-
    [ALSOFT] (II) Key rt-prio not found
    [ALSOFT] (II) Key resampler not found
    [ALSOFT] (II) Key trap-al-error not found
    [ALSOFT] (II) Key trap-alc-error not found
    [ALSOFT] (II) Key reverb/boost not found
    [ALSOFT] (II) Key drivers not found
    [ALSOFT] (II) Initialized backend "opensl"
    [ALSOFT] (II) Added "opensl" for playback
    [ALSOFT] (II) Added "opensl" for capture
    [ALSOFT] (II) Key excludefx not found
    [ALSOFT] (II) Key default-reverb not found
D/openal: [ALSOFT] (II) Key channels not found
    [ALSOFT] (II) Key sample-type not found
    [ALSOFT] (II) Key frequency not found
    [ALSOFT] (II) Key period_size not found
    [ALSOFT] (II) Key periods not found
    [ALSOFT] (II) Key sources not found
    [ALSOFT] (II) Key slots not found
    [ALSOFT] (II) Key sends not found
    [ALSOFT] (II) Key ambi-format not found
    [ALSOFT] (II) Created device 0x71908c5b00, "OpenSL"
D/openal: [ALSOFT] (II) Key hrtf not found
    [ALSOFT] (II) Pre-reset: Stereo, Float32, 44100hz, 882 / 2646 buffer
D/ojmesurfacevie: PlayerBase::PlayerBase()
    TrackPlayerBase::TrackPlayerBase()
I/libOpenSLES: Emulating old channel mask behavior (ignoring positional mask 0x3, using default mask 0x3 based on channel count of 2)
D/AudioTrack: createTrack_l(6619236): AUDIO_OUTPUT_FLAG_FAST denied by server; frameCount 0 -> 1772
D/openal: [ALSOFT] (II) Post-reset: Stereo, Int16, 44100hz, 882 / 2646 buffer
D/openal: [ALSOFT] (II) Key stereo-mode not found
    [ALSOFT] (II) Key cf_level not found
    [ALSOFT] (II) Key stereo-encoding not found
    [ALSOFT] (II) Stereo rendering
    [ALSOFT] (II) Channel config, Main: 3, Real: 2
    [ALSOFT] (II) Allocating 5 channels, 20480 bytes
    [ALSOFT] (II) Enabling single-band first-order ambisonic decoder
    [ALSOFT] (II) Max sources: 256 (255 + 1), effect slots: 64, sends: 2
    [ALSOFT] (II) Key dither not found
    [ALSOFT] (II) Key dither-depth not found
    [ALSOFT] (II) Dithering enabled (16-bit, 32768)
    [ALSOFT] (II) Key output-limiter not found
    [ALSOFT] (II) Output limiter enabled, -0.0005dB limit
    [ALSOFT] (II) Fixed device latency: 997732ns
E/openal: [ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
D/openal: [ALSOFT] (II) Increasing allocated voices to 256
D/openal: [ALSOFT] (II) Key volume-adjust not found
    [ALSOFT] (II) Created context 0x70a0885760
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x70608727b0, 256)
I/ALAudioRenderer: Audio Renderer Information
     * Device: {0}
     * Vendor: {1}
     * Renderer: {2}
     * Version: {3}
     * Supported channels: {4}
     * ALC extensions: {5}
     * AL extensions: {6}
    Audio effect extension version: {0}.{1}
I/ALAudioRenderer: Audio max auxiliary sends: {0}
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fc0878a90, 0)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6fc08786b0, 0)
    Buffer creation succeeded (mem_address, size) => (0x6fc0878990, 0)
    Buffer creation succeeded (mem_address, size) => (0x6fc08786d0, 0)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x70d08cf060, 1872)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x70d08cbf40, 1872)
    Buffer creation succeeded (mem_address, size) => (0x70c0874630, 1248)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x70d08d1950, 1716)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x707085ecd0, 288)
    Buffer creation succeeded (mem_address, size) => (0x707085f510, 288)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x70508c8f30, 192)
    Buffer creation succeeded (mem_address, size) => (0x7000860a10, 72)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b81c0, 128)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b8640, 128)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b7a70, 128)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b7d40, 128)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b9570, 128)
    Buffer released (mem_address, size) => (0x70208b7d40, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a2030, 256)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b7d40, 128)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b92a0, 128)
    Buffer released (mem_address, size) => (0x70208b7a70, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a2b70, 256)
    Buffer released (mem_address, size) => (0x70608a2030, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x7090894650, 512)
    Buffer released (mem_address, size) => (0x70208b8640, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a2030, 256)
    Buffer released (mem_address, size) => (0x70208b92a0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a2db0, 256)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b92a0, 128)
    Buffer released (mem_address, size) => (0x70208b7d40, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a1730, 256)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b7d40, 128)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b8640, 128)
    Buffer released (mem_address, size) => (0x70208b7d40, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a1bb0, 256)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70608a2030, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x709088fc50, 512)
    Buffer released (mem_address, size) => (0x70208b9570, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a2030, 256)
    Buffer released (mem_address, size) => (0x70208b81c0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a0410, 256)
    Buffer released (mem_address, size) => (0x70208b92a0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a1cd0, 256)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b92a0, 128)
    Buffer released (mem_address, size) => (0x70208b92a0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a0770, 256)
    Buffer released (mem_address, size) => (0x70608a0770, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090892a90, 512)
    Buffer creation succeeded (mem_address, size) => (0x6ff0895620, 64)
    Buffer released (mem_address, size) => (0x6ff0895620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70208b92a0, 128)
    Buffer released (mem_address, size) => (0x70208b8640, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a0770, 256)
    Buffer released (mem_address, size) => (0x70608a2030, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090890ed0, 512)
    Buffer released (mem_address, size) => (0x70608a2db0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090893620, 512)
    Buffer released (mem_address, size) => (0x70208b92a0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70608a2db0, 256)
    Buffer released (mem_address, size) => (0x70608a2b70, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090895b20, 512)
    Buffer released (mem_address, size) => (0x70608a0770, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70908925f0, 512)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7090892a90, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08b6c20, 1024)
    Buffer released (mem_address, size) => (0x70608a1cd0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090892a90, 512)
    Buffer released (mem_address, size) => (0x70608a1730, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090895680, 512)
    Buffer released (mem_address, size) => (0x70608a1bb0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x709088e9d0, 512)
    Buffer released (mem_address, size) => (0x70608a0410, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x709088fea0, 512)
    Buffer released (mem_address, size) => (0x7090890ed0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c3280, 1024)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7090894650, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c95b0, 1024)
    Buffer released (mem_address, size) => (0x7090893620, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c50b0, 1024)
    Buffer released (mem_address, size) => (0x7090892a90, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c7780, 1024)
    Buffer released (mem_address, size) => (0x7090895b20, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c5950, 1024)
    Buffer released (mem_address, size) => (0x70608a2db0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7090895b20, 512)
    Buffer released (mem_address, size) => (0x709088e9d0, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c3b20, 1024)
    Buffer released (mem_address, size) => (0x709088fc50, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c36d0, 1024)
    Buffer released (mem_address, size) => (0x70b08b6c20, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08ce830, 2048)
    Buffer released (mem_address, size) => (0x70908925f0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08b6c20, 1024)
    Buffer released (mem_address, size) => (0x7090895680, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c9a00, 1024)
    Buffer released (mem_address, size) => (0x709088fea0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c7330, 1024)
    Buffer released (mem_address, size) => (0x70b08c3280, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d00c0, 2048)
    Buffer released (mem_address, size) => (0x7090895b20, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70b08c3280, 1024)
    Buffer released (mem_address, size) => (0x70b08c5950, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08cd7d0, 2048)
    Buffer released (mem_address, size) => (0x70b08c50b0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08cc770, 2048)
    Buffer released (mem_address, size) => (0x70b08c7780, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08ce000, 2048)
    Buffer released (mem_address, size) => (0x70b08c95b0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d08f0, 2048)
    Buffer released (mem_address, size) => (0x70b08c3b20, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d1120, 2048)
    Buffer released (mem_address, size) => (0x70b08b6c20, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08cf890, 2048)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70b08c3280, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d29b0, 2048)
    Buffer released (mem_address, size) => (0x70b08c7330, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d4240, 2048)
    Buffer released (mem_address, size) => (0x70b08c9a00, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d31e0, 2048)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70b08c36d0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x70d08d5ad0, 2048)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70d08d31e0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71009660d0, 4096)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70d08d00c0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7100951f90, 4096)
    Buffer released (mem_address, size) => (0x70d08ce000, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71009670e0, 4096)
    Buffer released (mem_address, size) => (0x70d08cf890, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7100961080, 4096)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70d08ce830, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71009630a0, 4096)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70d08d4240, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x710096c130, 4096)
    Buffer released (mem_address, size) => (0x70d08d08f0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7100969100, 4096)
    Buffer released (mem_address, size) => (0x70d08cc770, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x710096a110, 4096)
    Buffer released (mem_address, size) => (0x70d08d1120, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x710096f160, 4096)
    Buffer released (mem_address, size) => (0x70d08cd7d0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x710096e150, 4096)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70d08d29b0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7100970170, 4096)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x70d08d5ad0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x710096d140, 4096)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x710096f160, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130a9cf00, 8192)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7100951f90, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130880320, 8192)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x710096c130, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130aa5740, 8192)
    Buffer released (mem_address, size) => (0x7100969100, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130aa9b60, 8192)
    Buffer released (mem_address, size) => (0x71009630a0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130aa7950, 8192)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x71009660d0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130aa3530, 8192)
    Buffer released (mem_address, size) => (0x710096e150, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130aabd70, 8192)
    Buffer released (mem_address, size) => (0x710096a110, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x7130ab0190, 8192)
    Buffer released (mem_address, size) => (0x71009670e0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130aadf80, 8192)
    Buffer released (mem_address, size) => (0x7100961080, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130ab23a0, 8192)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x710096d140, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130ab45b0, 8192)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7100970170, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x7130ab67c0, 8192)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7130aa9b60, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608960e0, 16384)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7130aa3530, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608b2150, 16384)
    Buffer released (mem_address, size) => (0x7130a9cf00, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608b6160, 16384)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7130aa5740, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608ba170, 16384)
    Buffer released (mem_address, size) => (0x7130ab23a0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x71608ae140, 16384)
    Buffer released (mem_address, size) => (0x7130ab0190, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608c61a0, 16384)
    Buffer released (mem_address, size) => (0x7130aabd70, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608ca1b0, 16384)
    Buffer released (mem_address, size) => (0x7130880320, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x71608c2190, 16384)
    Buffer released (mem_address, size) => (0x7130aadf80, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608be180, 16384)
    Buffer released (mem_address, size) => (0x7130aa7950, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x71608d21d0, 16384)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7130ab67c0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608da1f0, 16384)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x7130ab45b0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71608ce1c0, 16384)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x71608b6160, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71a0869430, 32768)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x71608960e0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71a08aa4b0, 32768)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x71608da1f0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
    Buffer creation succeeded (mem_address, size) => (0x71a0891e80, 32768)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x71608b2150, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x71a08a22a0, 32768)
I/NativeBufferAllocator: Buffer released (mem_address, size) => (0x71608d21d0, 8)
I/NativeBufferAllocator: Buffer mem_address formatted (mem_address, size) => (0x0, 8)
I/NativeBufferAllocator: Buffer creation succeeded (mem_address, size) => (0x71a089a090, 32768)
....

I have used some references from GNU POSIX (will link them in the PR ofc and ofc @Ali_RS notes, thanks for that !).

Seems easy, but as of not an experienced native dev, it takes a little bit time to understand basics of android make (which is based on GNU makefile).

A PR will be ready soon.

EDIT :
Those are the parts to look at :

    Buffer creation succeeded (mem_address, size) => (0x71608da1f0, 16384)
    .....
    Buffer released (mem_address, size) => (0x71608da1f0, 8)
    Buffer mem_address formatted (mem_address, size) => (0x0, 8)

It depends upon the buffer type, some aren’t destructed while in runtime…

9 Likes

What is the reason for the animations being controlled by the server and not by the individual clients?

May be for instant updates, the client don’t have to download a launcher patch to update the animation locally (if an update exists), they got the updates when a new code is on the server…

For the collision shapes. Physics is 100% done on the server.

But either way, all of the clients would have to be synced and when animation can speed up and slow down that’s non-trivial on its own. The server is also the only thing that knows which animation to play.

Passing frame times to the client in a way that’s in perfect sync with movement was the tricky part… and very necessary. Fortunately, I was able to trick SimEthereal parent->child relationships to let me control animation times on multiple layers.

Edit: And tonight I was able to get animated attachments working:
https://twitter.com/Simsilica/status/1526505609914372097

(video if you click through)

So she can hold stuff in her hands now and if it whacks something it is physically felt, etc…

5 Likes

You’re welcome @Pavl_G. :slightly_smiling_face:

Appreciate you so much for working on Android NativeBufferAllocator for JME.

1 Like

Thanks everyone for your feedback. The project requires a bit of cleaning but as soon as I have some free time I publish it. In any case, the project to play video in jme3 is already available on my git account.

The idea is interesting, for the moment I understand how to calculate the texture coordinates on a square mesh but not on an irregular mesh.

2 Likes

I wanted to check how well (or if at all) the Shader Editor supports “animated” material definitions. So I added a Sine Wave shader node and hooked up g_Time. And, while not perfect, it actually animates it.

It’s a bit choppy, but I figure that fixing that is much easier than if it didn’t update at all.

Edit: So, actually this needed the SDK “fixes” as well, like immediate updates.

Edit 2: I got a bit sidetracked and wanted to make a better video. Glsl code from here: Shader - Shadertoy BETA

9 Likes

With some adjustments, I now have a listbox that can contain a mixture of items.

Imgur
Imgur
(with 1 line selected)
Imgur
switched to second and third column
Imgur

  ListBox LB = new ListBox(new VersionedList(), new Picture_Renderer("OSG"),"OSG");
           LB.setavailableColumns(3);
           LB.setVisibleColumns(2);
           LB.setVisibleItems(4);

           LB.add_StringValue(new String[]{"Item 1-1", "Item 1-2"});
           Button X = new Button("");
           X.setBackground(new QuadBackgroundComponent(ColorRGBA.randomColor()));
           X.setText("A picture?");
           LB.add_Values(null, Arrays.asList("Item 2-1",X));
           Spatial Model = assetManager.loadModel("Models/Oto/Oto.mesh.xml");
           ViewportPanel vP = new ViewportPanel(stateManager);
           ... -> ViewPortsdtuff and scenesettings
           vP.attachScene(Model);
           LB.add_Values(2,0,vP);
           LB.add_Values(null,Arrays.asList("Item 4-1","Item 4-2"));
           LB.getGridPanel().setLayout(new SpringGridLayout(Axis.Y,Axis.X,FillMode.None, FillMode.ForcedEven));
           LB.getGridPanel().setRowheight(60f,2);

           LB.add_Values(null,Arrays.asList(new Button("",new ElementId("exit").child("button")),"Blahh"));

           List val = LB.getLBvalues(4);
           Button btn = (Button)   val.get(0);
           ((QuadBackgroundComponent) btn.getBackground()).setColor(ColorRGBA.Yellow);

In the end the custom CellRenderer needed only minor adjustements before I could use it

 @Override
    public Panel getView(Object value, boolean selected, Panel existing) {
        if (value == null) {
            value = "";
        }     
        switch (value.getClass().getSimpleName()) {
            case "Button":
                           if (value instanceof Button) {
                                   existing = (Button) value;
                           }
                          break;
            case "ViewportPanel":
                          if (value instanceof ViewportPanel)  existing = (ViewportPanel) value;
                          break;
           ...
3 Likes