0 votes

I'm setting textures multithreadedly. Here's SetTextures():
public void SetTextures() { Texture = _hitObjectTextures[Parent.Parent.InputRetriever.Keys][Key] ?? Texture; Offset = new Vector2(-Texture.GetWidth() / 2f, -Texture.GetHeight()); if (Note.IsLongNote) { HoldEnd.Texture = _holdEndTextures[Parent.Parent.InputRetriever.Keys][Key] ?? HoldEnd.Texture; HoldEnd.Offset = new Vector2(-HoldEnd.Texture.GetWidth() / 2f, -HoldEnd.Texture.GetHeight()); var holdEndPosition = When(Note.StartTime) - When(Note.EndTime); HoldEnd.Position = holdEndPosition; HoldEnd.Visible = true; HoldBody.Texture = _holdBodyTextures[Parent.Parent.InputRetriever.Keys][Key] ?? HoldBody.Texture; HoldBody.Offset = new Vector2(-HoldBody.Texture.GetWidth() / 2f, -HoldBody.Texture.GetHeight()); HoldBody.Visible = true; HoldBody.Scale = new Vector2(1, Mathf.Abs(holdEndPosition.y) / HoldBody.Texture.GetHeight()); } }

Full error log:
E 0:00:05.802 _disconnect: Disconnecting nonexistent signal 'changed', slot: 3430:_texture_changed. <C++ Error> Condition "!s->slot_map.has(target)" is true. <C++ Source> core/object.cpp:1538 @ _disconnect() <Stack Trace> :0 @ void Godot.NativeCalls.godot_icall_1_24(IntPtr , IntPtr , IntPtr )() Sprite.cs:279 @ void Godot.Sprite.SetTexture(Godot.Texture )() Sprite.cs:28 @ void Godot.Sprite.set_Texture(Godot.Texture )() NoteNode.cs:37 @ void Quadrecep.GameMode.Keys.NoteNode.SetTextures()() Playfield.cs:135 @ void Quadrecep.GameMode.Keys.Playfield.GenerateNoteNodesForLane(System.Collections.Generic.List`1[Quadrecep.GameMode.Keys.Map.NoteObject] , System.Collections.Generic.List`1[Quadrecep.Map.ScrollVelocity] , Int32 )() Playfield.cs:84 @ void Quadrecep.GameMode.Keys.Playfield+<>c__DisplayClass27_1.<GenerateNoteNodesAsync>b__1()() :0 @ void System.Threading.Tasks.Task.InnerInvoke()() :0 @ void System.Threading.Tasks.Task.Execute()() :0 @ void System.Threading.Tasks.Task.ExecutionContextCallback(System.Object )() :0 @ void System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext , System.Threading.ContextCallback , System.Object , Boolean )() :0 @ void System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext , System.Threading.ContextCallback , System.Object , Boolean )() :0 @ void System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task& )() :0 @ Boolean System.Threading.Tasks.Task.ExecuteEntry(Boolean )() :0 @ void System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()() :0 @ Boolean System.Threading.ThreadPoolWorkQueue.Dispatch()() :0 @ Boolean System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()()

Godot version v3.4.1.stable.mono.official
in Engine by (14 points)

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.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.