[-] plixel@programming.dev 1 points 5 months ago

Thanks for this!

[-] plixel@programming.dev 4 points 6 months ago

I really liked Kagi at first, especially since I use it mainly for programming as well, but recently I feel like the quality has gone downhill. Right around the time they integrated the Brave stuff I've noticed a significant amount of me having to scroll down past the usual Google-like fluff results before getting to actually relevant information. It's a little sad to see because when I first used it, it was so good now it basically feels like a skinned Google-lite at this point. I'm still a customer but only because I haven't found a good alternative yet.

[-] plixel@programming.dev 1 points 7 months ago

Thanks for the explanation! Your explanation led me down a rabbit hole of seeing if there's a way to cancel an await call, from what I can tell there was no clear way to do so. In my case I ended up connecting the signal to a secondary function instead of utilizing the await command, I'm not entirely sure if there's an advantage to utilizing one method over the other.

[-] plixel@programming.dev 1 points 7 months ago

I didn't have access to my computer when I posted this so I was hoping to get some info while I was away from it. Thanks to another commenter, it looks like it has a very minimal impact. Good to know for future reference!

[-] plixel@programming.dev 4 points 7 months ago

Thanks so much for testing that out! That's very informative and even more thorough than what I was looking for! I wasn't at my computer when I posted this so I couldn't test it myself.

I ended up connecting the signal to a secondary function to run on finished to avoid any potential memory errors, but it's super helpful to know that the performance impact is minimal.

19
Await Question (programming.dev)
submitted 7 months ago* (last edited 7 months ago) by plixel@programming.dev to c/godot@programming.dev

I'm curious what happens if you use await for a signal, but the signal is never received? Does this cause some kind of hangup?

For example if I have a function structured like so:

func foo():
    do something
    await signal.finished
    do something else

And the "finished" signal never comes, does the await call just hang indefinitely?

[-] plixel@programming.dev 1 points 11 months ago

Interesting!! Yeah that's exactly what my node structure is. So basically instead of using signals and sending from one Map child to the other, use spawn_object as a child from hexgrid and then just call the spawn object function as needed since the hexgrid script already has a reference to the index and location of each tile. Thanks so much for the advice I'll give it a shot! I ended up working out the signals issue I was having anyways but it seems like your suggestion is a cleaner solution!

[-] plixel@programming.dev 1 points 11 months ago* (last edited 11 months ago)

I see okay so I understand that the intent is to decouple scenes from each other, however from the tutorials I've seen they typically say that to establish the connection you need to run get_node() from the script you are establishing the connection to. So for example if you have:

*Parent
    **Child 1
    **Child 2

You would emit from Child1, then establish the connection from Child2 using:

var script = get_node("root/Parent/Child1")
script.some_signal.connect(some_function)

Is that the correct interpretation? Or am I misunderstanding? Thanks in advance btw I appreciate all the help in understanding this!

[-] plixel@programming.dev 1 points 11 months ago* (last edited 11 months ago)

Hm..I didn't even consider that the emit might be happening before the connection. I have them both running from separate on_ready methods. Perhaps I should be running connection though _init. Typically in unity I would just use C# actions and use OnEnable to establish the "connections." It make sense that the code could be emitting before I even have a chance to connect to it, which is why my test fails.

[-] plixel@programming.dev 1 points 11 months ago

Thank you! Okay so the tiles are part of a map, and I have a parent node called map with two separate children: hexgrid (where I'm instantiating the scenes) and spawn_objects( where I'm trying to gain access to the index and transform from hexgrid) my intent is to have hexgrid generate the grid and tiles and have spawn_objects instantiate an object within the tile at a certain position within it. Is this perhaps something I should combine into the same script? I typically like to have things modular and keep each component so a single specific task.

[-] plixel@programming.dev 1 points 11 months ago

Is this the intended purpose for signals? Moving info up and down the tree? If so how are we supposed to send information from one script to another if one is not directly a child of the other? Do we send it to a shared parent node then send the info back down to the secondary script?

[-] plixel@programming.dev 1 points 11 months ago

I'm emitting in the function that instantiates the tiles so it's definitely getting called. How do I verify that the connection is going through?

Also thanks for letting me know how to format it I was getting conflicting information regarding the syntax from various different tutorials and resources.

45

Hello all!

Like most people I find myself a recent refugee from the Unity fiasco. I've been trying to prototype a project in Godot and I've been running into an issue I would think would be pretty easy to find a solution to as it seems to be a pretty fundamental building block of any project in Godot. Perhaps I'm misunderstanding how to accomplish this in Godot, but essentially I'm instantiating a number of tiles to be used for a grid system in my game. I want these tiles to be able to emit their index and transform values and then have other scripts pick this information up as needed. From what I've read signals are the way to do this, however whenever I try to send a signal with or without parameters nothing seems to happen. I seem to be able to connect to the signal just fine but the method doesn't seem to be called.

Here's an example of me defining the signal and then emitting it:

signal index_transform()

index_transform.emit()

And here's how I am connecting and attempting to call the method in a secondary script:

func _ready() -> void:
	var hexGrid = get_node("/root/Main/Map/HexGrid")
	hexGrid.index_transform.connect(Callable(self, "_get_hex_index_transform"))

func _get_hex_index_transform():
	print("I'm Connected")

And when I'm passing parameters from what I understand I should only have to include the parameters like so:

signal index_transform(index, transform)

index_transform.emit(tile_index, tile_coordinates)
func _ready() -> void:
	var hexGrid = get_node("/root/Main/Map/HexGrid")
	hexGrid.index_transform.connect(Callable(self, "_get_hex_index_transform"))

func _get_hex_index_transform(index, transform):
	print("I'm Connected")
	print("INDEX: ", index," POS: ", transform)

However neither of these seem to work. What am I doing wrong?

view more: next ›

plixel

joined 1 year ago