Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve illumination.lua #410

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

Mr-Auto
Copy link
Contributor

@Mr-Auto Mr-Auto commented Jan 1, 2025

No description provided.

@@ -2273,6 +2273,7 @@ Current mouse cursor position in screen coordinates.
#### [Illumination](#Illumination) create_illumination([Color](#Color) color, float size, int uid)

Creates a new [Illumination](#Illumination). Don't forget to continuously call [refresh_illumination](#refresh_illumination), otherwise your light emitter fades out! Check out the [illumination.lua](https://github.com/spelunky-fyi/overlunky/blob/main/examples/illumination.lua) script for an example.
Warning: this is only valid for current level!
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should i also add stuff like "save the Illumination in state.user_data for it to work online" ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On one hand seams logical, on the other, this should be rule for everything, not just the illumination

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does it even work online correctly yet? isn't it a pointer?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm... actually you're right, i was only thinking about rollback from it being created to when it wasn't. But yeah, it won't work when the heap is copied to different one.
Unless we can adjust the pointer in user_data just like the game adjust it's pointers

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or, i can make some weird solution for the meta table so it can use OnHeapPointer

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

both solutions would work I guess, just that I have no idea how to know if a lua object is a pointer for the first idea

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

both solutions would work I guess, just that I have no idea how to know if a lua object is a pointer for the first idea

[](sol::object obj)
    {
        if (obj.valid() && obj.get_type() == sol::type::userdata)
        {
            DEBUG("{:x}", *(size_t*)obj.pointer());
        }
    };

Copy link
Contributor Author

@Mr-Auto Mr-Auto Jan 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't test much, but i think all userdata is stored as pointers to an actual data, even stuff created on lua stack like when using Color:new()

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if it works, and is documented that it does that, it seems a fine possible solution

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants