#JavaFX Fluid Simulation

1 messages Β· Page 4 of 1

boreal socket
#

hm looks fine to me

#

might need more context

grand garnet
#

ok updated master 3

boreal socket
#

going to check in like 10min

grand garnet
#

ok sure

boreal socket
#

it is because you forgot to set simulationStarted = false in the endSimulation method

grand garnet
#

ohhh

#

wait nvm 😭

boreal socket
#

yeah thats fine

#

thats the use of interrupted

grand garnet
boreal socket
grand garnet
#

nope i can still interact with it

boreal socket
#

oh you might need a break in that statement

#

in the try catch

#

also the error is printing because of e.printStacktrace()

grand garnet
boreal socket
#

also I still recommend not to use Thread.sleep here

grand garnet
#

does the UI look nice btw?

grand garnet
boreal socket
boreal socket
grand garnet
#

YES IT WORKS

grand garnet
boreal socket
#

I would have a continous loop (while(true), which will update fluid.step as fast as possible), but only render the n number of times per second based on the FPS you try to implement

grand garnet
#

ahh so theres no set TPS?

boreal socket
#

yeah, why would you want tps?

#

ok there are some reasons

grand garnet
#

to prevent too many updates?

boreal socket
#

but I wouldnt do it in this case

grand garnet
#

oh

#

i mean it works fine for now maybe later i can change it

boreal socket
#

you probably wont change it pepekek

#

whatever

#

your simulation

#

I would do it differently but πŸ€·β€β™‚οΈ

grand garnet
#

I gotta do the whole writeup and everything

boreal socket
#

all good its fine

grand garnet
#

so this is all a rush from now on

boreal socket
#

yeah try to get it working first

grand garnet
#

yeahh

#

it works good now

#

I got two main bits left which is the implementation of barriers

#

and recording the fluid e.g. saving the fluid data somewhere in a file

boreal socket
#

btw in which way do you want to store recordings?

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

probably save the arrays and just re render

#

maybe i can implement some sort of compression

boreal socket
#

Yeah otherwise it’s going to be really big

#

Just store the changes or smth might be the best idea to easily implement

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

hello guys

grand garnet
#

ohh you mean the fluid inputs?

boreal socket
#

yeah or smth like that

grand garnet
#

ahh ok

#

i got a quick question

#

so i'm just looking at the input handling stuff

#
for (FluidInput source : sourceQueue) {
       sourceConsumer.accept(source);
}

sourceQueue.clear();```
#

is it more efficient doing this or is it more efficient dequeuing a node one at a time and then accepting it

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

hello

#

got some bad news

#

teacher doesn't like the fact that i used a List in my queue class 😭

#
package com.fluidity.program.utilities;

import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;

public class Queue<T> {
    private List<T> queue;
    private int MAX_SIZE;

    public Queue() {
        this.queue = new ArrayList<>();
    }

    public void enqueue(T data) {
        if (queue.size() == MAX_SIZE && MAX_SIZE != 0) {
            throw new ArrayIndexOutOfBoundsException();
        }
        queue.add(data);
    }

    public T dequeue() {
        if (isEmpty()) {
            throw new NoSuchElementException();
        }

        return queue.remove(queue.size() - 1);
    }

    public T peek() {
        return queue.get(queue.size() - 1);
    }

    public boolean isEmpty() {
        return queue.isEmpty();
    }

    public void setMAX_SIZE(int MAX_SIZE) {
        this.MAX_SIZE = MAX_SIZE;
    }

    public int size() {
        return queue.size();
    }

    public Queue<T> copy() {
        Queue<T> copy = new Queue<>();
        copy.queue = new ArrayList<>(queue);
        copy.setMAX_SIZE(MAX_SIZE);
        return copy;
    }

    @Override
    public String toString() {
        StringBuilder output = new StringBuilder();
        for (T t : queue) {
            output.append(t.toString())
                    .append(" ");
        }
        output.append("\n");
        return output.toString();
    }
}
#

this is my queue implementation

#

however he doesn't like that I use the list for it 😭

lilac marlin
#

Did he give any feedback on what he wants instead? I haven't checked the full topic given it's length.

grand garnet
#

yeahh he said to use an array implementation

#

and then change lengths manually

#

i implemented it and it works fine

#

thing is im planning to do some sort of fluid saving so I can backtrack though the fluid

#
@Override
    public void run() {
        this.running = true;
        this.FLUID_WIDTH = fluid.WIDTH;
        this.FLUID_HEIGHT = fluid.HEIGHT;

        final double TIME_PER_TICK = 1.0 / TPS;
        final double TIME_PER_FRAME = 1.0 / DESIRED_FPS;
        long lastTime = System.nanoTime();
        double unprocessedTime = 0;
        double frameTime = 0;

        while (running) {
            long now = System.nanoTime();
            long passedTime = now - lastTime;
            lastTime = now;
            unprocessedTime += passedTime / 1_000_000_000.0;
            frameTime += passedTime / 1_000_000_000.0;

            // Update fluid and handle inputs as many times as needed to catch up with the target TPS
            while (unprocessedTime > TIME_PER_TICK) {
                fluid.step(TIME_PER_TICK);
                addSourcesFromUI(fluid);
                unprocessedTime -= TIME_PER_TICK;
            }

            // Render if it's time for a new frame
            if (frameTime >= TIME_PER_FRAME) {
                if (densityPlot) {
                    render(fluid.dens.clone()); // Render with the most recent fluid density
                } else if (xVelocityPlot) {
                    render(fluid.u.clone()); // Render with the most recent fluid density
                } else if (yVelocityPlot) {
                    render(fluid.v.clone()); // Render with the most recent fluid density
                }

                frameTime = 0;
            }

            // Sleep to cap the rendering FPS
            long sleepTime = (long) ((TIME_PER_FRAME - frameTime) * 1_000_000_000);
            if (sleepTime > 0) {
                try {
                    Thread.sleep(sleepTime / 1_000_000, (int) (sleepTime % 1_000_000));
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break;
                }
            }
        }
    }```
cedar tigerBOT
# grand garnet ```java @Override public void run() { this.running = true; t...

Detected code, here are some useful tools:

Formatted code
@Override
public void run() {
  this .running = true;
  this .FLUID_WIDTH = fluid.WIDTH;
  this .FLUID_HEIGHT = fluid.HEIGHT;
  final double TIME_PER_TICK = 1.0 / TPS;
  final double TIME_PER_FRAME = 1.0 / DESIRED_FPS;
  long lastTime = System.nanoTime();
  double unprocessedTime = 0;
  double frameTime = 0;
  while (running) {
    long now = System.nanoTime();
    long passedTime = now - lastTime;
    lastTime = now;
    unprocessedTime += passedTime / 1_000_000_000.0;
    frameTime += passedTime / 1_000_000_000.0;
    // Update fluid and handle inputs as many times as needed to catch up with the target TPS
    while (unprocessedTime > TIME_PER_TICK) {
      fluid.step(TIME_PER_TICK);
      addSourcesFromUI(fluid);
      unprocessedTime -= TIME_PER_TICK;
    }
    // Render if it's time for a new frame
    if (frameTime >= TIME_PER_FRAME) {
      if (densityPlot) {
        render(fluid.dens.clone());
        // Render with the most recent fluid density
      }
      else if (xVelocityPlot) {
        render(fluid.u.clone());
        // Render with the most recent fluid density
      }
      else if (yVelocityPlot) {
        render(fluid.v.clone());
        // Render with the most recent fluid density
      }
      frameTime = 0;
    }
    // Sleep to cap the rendering FPS
    long sleepTime = (long ) ((TIME_PER_FRAME - frameTime) * 1_000_000_000);
    if (sleepTime > 0) {
      try {
        Thread.sleep(sleepTime / 1_000_000, (int ) (sleepTime % 1_000_000));
      } catch (InterruptedException e) {
        e.printStackTrace();
        break ;
      }
    }
  }
}
grand garnet
#

this doesn't really require any prerequisite knowledge about the simulation but how can I save the fluid at 10fps whilst the simulation is running at 60fps?

#

anyone know?

#

i was thinking of having a frameCount variable and resetting it every 10 frames that are rendered?

hollow sage
#

how tf does this thread has 3k messages, what happened here πŸ’€

slender kindle
#

it changed on auto close time, OP asked to be open for a while

lilac marlin
grand garnet
#

i want it so that no matter what TIME_PER_FRAME is, I can do some other functionality at the same time but at 4 FPS or something

#

unlesse the FPS < 4fps

#

which it wont be

#

because minimum is 15 in my sim

lilac marlin
#

But before that you can just put another if ((frameTime % (TIME_PER_FRAME/6)) == 0) you'd do it once every 10 FPS

grand garnet
#

ahhh yeah i get that

#

doesn't work 😭

#

btw frameTime isn't the current FPS

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

.

#

helloooooo

#

just a quick question

#

if i plan to rollback the fluid, should i still be using a loop to render the rollbacks?

grand garnet
#

is there a method which makes sure a key can't be held but only pressed?

upbeat narwhal
grand garnet
#

sorry 😭

#

i just struggle with jfx lol

upbeat narwhal
#

nahh ur good

#

no one cares that u sent 3k messages

grand garnet
#

😭

#

have i seen u somewhere

#

wait

#

maths server maybe

upbeat narwhal
grand garnet
#

and above 😭

upbeat narwhal
#

ok me no pollute ur thread

#

good luck with it

grand garnet
#

no worries i dn't care much

#

thanks though

lilac marlin
grand garnet
#

doesn't run it at all

#

i justr made a variable which counts the number of frames

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

hi

#

how do i make sure that the arrow keys don't affect sliders?

median ingot
boreal socket
#

If it’s just about that you would just add an event filter

grand garnet
boreal socket
#

share what you did

#

how am I supposed to help you otherwise?

grand garnet
#

oh yeah sorry

#

i thought u would know it's on master3 lmao

boreal socket
#

Okay yeah actually mb

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

no worriesss

#

awake at 5:47 😭

mint hawk
#

this thread has 3118 messages NootLikeThis

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

helellalooooo

drifting hinge
#

lol

grizzled inlet
#

let this thread rest it peace now

#

ur bullying

upbeat narwhal
#

let thread sleep

drifting hinge
#
Thread.sleep(Long.MAX_VALUE);
cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grizzled inlet
#

i aplogize for reactinge to the message

upbeat narwhal
#

bros thread so inactive it got closed

grand garnet
#

😭

#

im just looking back on it for writing my writeup

#

hey @boreal socket when this thing kept causing my program to freeze, what can i say was the problem that we fixed using all the daemon and executor stuff?

boreal socket
#

not sure which freeze you are referring to

#

but setting it daemon is technically unrelated

grand garnet
grand garnet
boreal socket
#

I cant tell anymore tbh

#

but I think the freeze wasnt caused by the loop itself

#

it was caused by the underlying code

#

which was failing somehow before

#

but I cant tell anymore

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

I kinda just need help trying to explain what an ExecutorService and setDaemon is in words

grand garnet
#
The fluid seems to flow in the direction of a velocity field that is transformed when a force is applied on the field. This is the kind of output that we require and it is the output which was required by our stakeholders for an ``intuitive" understanding. On top of this fix to the error, I have added some features that were meant to be added later but are however needed for now. This involves the use of what we call an ExecutorSerice and a specific attribute known as daemon.```
boreal socket
#

hm thats not really what the executor is used for here

#

you used it to run your simulation next to the javafx thread

#

without interfering it and thus blocking it

grand garnet
#

ahh ok

boreal socket
#

also I just see that you removed Platfom.runLater call peepo_think

#

dont do that

#

your threaded application isnt really safe

grand garnet
boreal socket
#

then you did something else wrong

grand garnet
boreal socket
#

you try to fix a bug with something completely unrelated

boreal socket
boreal socket
#

in your case the task is the simulation

#

you want it to be threaded so that your javafx thread (rendering and stuff) wont get blocked by the simulation

#

you set the created thread for the simulation daemon, so that it wont block terminating the whole application if the javafx thread (aka all non-daemon threads) finished/failed/etc

#

Platform threads are designated daemon or non-daemon threads. When the Java virtual machine starts up, there is usually one non-daemon thread (the thread that typically calls the application's main method). The shutdown sequence begins when all started non-daemon threads have terminated. Unstarted non-daemon threads do not prevent the shutdown sequence from beginning.

grand garnet
#

ah yes the run later works

boreal socket
grand garnet
#

yep

boreal socket
#

so changing the pixels on the canvas

grand garnet
#

only the render methdo

#

bro

#

i haven't slept in 2 days no joke

#

im gonna get a heart attack or smth 😭

#

i drank 5 monster energies today

#

need to finish this documentation πŸ’€

boreal socket
#

bro be careful

#

water >>

grand garnet
#

yeahh

#

also

#

what exactly does the run later do and what does it solve?

#

idk how to put it in words lmao

boreal socket
#

it lets you run code on the JavaFX thread

#

so the render method is called on your custom thread

#

but you want to do stuff on the javafx thread

#

Platform.runLater gives you that ability

grand garnet
#

ahh

boreal socket
#

though you need to be careful

grand garnet
#

what does the later mean though?

#

during the next available time?

boreal socket
boreal socket
#

NOTE: applications should avoid flooding JavaFX with too many pending Runnables. Otherwise, the application may become unresponsive. Applications are encouraged to batch up multiple operations into fewer runLater calls. Additionally, long-running operations should be done on a background thread where possible, freeing up the JavaFX Application Thread for GUI operations.

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

Hi

grand garnet
#

also

#

I just want to say a huge thanks to @boreal socket , @steep elbow and @dense hare for helping me along this project lmao

#

i've come a long way ngl

#

and it's looking good rn

#

just trying to speedrun the writeup now

#

but i've done all the programming

#

they don't care about the niche features

#

so im getting rid of the recordings

upbeat narwhal
#

i don’t know how but i only just realized ur making a fluid simulation

#

i’m very much impressed and good luck with ur journey

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

is there a way to generate a UML diagram for an intelliJ project?

boreal socket
#

there are some plugins

grand garnet
#

what's a good one?

boreal socket
#

πŸ€·β€β™‚οΈ

#

google ig

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

How do i reset a scene completely?

#

like say if i want a scene to be reset on the click of a button

#

hey @boreal socket what does this mean?

boreal socket
#

uh it got rejected?

#

lol

grand garnet
#

what got rejected 😭

boreal socket
#

your runnable

grand garnet
#

oh no

boreal socket
#

I guess your executor just got one thread

grand garnet
#

i think i reset my scene wrong 😭

boreal socket
#

and there is still running a different runnable on that

#

yeah probably

grand garnet
#
    public void resetScene(ProgramState scene) {
        initialiseUI(scene);
        setManager(scene);
        loadScene(scene);
    }```
cedar tigerBOT
grand garnet
#
    @FXML
    private void onGoToSettingsClick() {
        simulationStarted = false;
        simulationFuture.cancel(true);
        EXECUTOR.close();
        manager.resetScene(ProgramState.SIMULATION);
        manager.loadScene(ProgramState.SETTINGS);
    }
cedar tigerBOT
grand garnet
#

I end it like that

boreal socket
#

oh, you closed the executor

#

and probably never reinitialize it

grand garnet
#

ahh

#

yeah

#

it works

boreal socket
#

also thats not how you properly shutdown an executor service iirc

grand garnet
#

oh

#

i'll search it up

#

tysm though!

boreal socket
#

there is this, but idk

grand garnet
#

pretty sure that is my very last bug to talk about in the writeup

boreal socket
#

need to further read the docs

drifting hinge
#

Dang I read thru half of your convo, this stuff is interesting

#

how far are you done?

#

Is it fully concurrent?

cedar tigerBOT
#

@grand garnet

Your question has been closed due to inactivity.

If it was not resolved yet, feel free to just post a message below
to reopen it, or create a new thread.

Note that usually the reason for nobody calling back is that your
question may have been not well asked and hence no one felt confident
enough answering.

When you reopen the thread, try to use your time to improve the quality
of the question by elaborating, providing details, context, all relevant code
snippets, any errors you are getting, concrete examples and perhaps also some
screenshots. Share your attempt, explain the expected results and compare
them to the current results.

Also try to make the information easily accessible by sharing code
or assignment descriptions directly on Discord, not behind a link or
PDF-file; provide some guidance for long code snippets and ensure
the code is well formatted and has syntax highlighting. Kindly read through
https://stackoverflow.com/help/how-to-ask for more.

With enough info, someone knows the answer for sure πŸ‘

grand garnet
#

hey guys

#

time for the comeback

#

how do i run this in CLI 😭

grand garnet
#

i finished all the coding and stuff and i've sent it in

#

it says this πŸ«₯

dense hare
drifting hinge
#

did you create a fat jar?