+1 vote

Hello there! I'm making new threads to improve performance and load some terrain in the background. I was testing out threads when I found the following problem:

I have this function in World:

func test_threads():
    var newchunk=MeshInstance.new()
    newchunk.set_script(load("res://chunk.gd"))
    var mythread=Thread.new()
    var err
    err=mythread.start(newchunk,"test_threads","butt")#Need to pass user data
    var a=mythread.wait_to_finish()

Then this function in chunk.gd:

func test_threads(userdata):
    print("chunk.test_threads got run")
    var mesh=Mesh.new()
    return userdata

And this crashes! Some other cases:
Remove var mesh=Mesh.new() -> it runs fine
Change to var mesh=MeshInstance.new() -> It crashes
Change to var mesh=Resource.new() -> It runs fine

So do we know of this problem? Can anyone else make a mesh from a new thread?

asked Jul 25, 2017 in Engine by DrPlamsa (56 points)
edited Jul 26, 2017 by volzhs

Please log in or register to answer this question.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.