Commit Graph

63 Commits

Author SHA1 Message Date
44ed26952c Replace hardcoded capture areas
We now retrieve the correct biome size and offsets from the game itself.
2024-04-29 09:52:07 +02:00
c0fd7aab56 Fix capture grid calculation
The capture grid calculation takes now the rendering rectangle into consideration.
With this fix the capture grid will include all cells that overlap with the given capture rectangle.
2024-02-21 17:55:24 +01:00
b4dca53fc8 Update capture process
- When being in `CaptureDelay` mode, just shake viewport a little bit
- When DoesWorldExistAt still does return false after 600 frames, move viewport to somewhere else, and try again.
2024-02-08 16:27:57 +01:00
421f897be7 Let camera shake when it's waiting for a capture
For some reason this improves chunk loading.
2024-02-05 22:31:30 +01:00
9e51538f3f Add setting to delay screen captures
This is useful to let the world populate and let the physics simulation settle down.
2024-02-05 18:10:10 +01:00
44605b9633 Move coroutine wakeup back into OnWorldPreUpdate 2024-01-05 18:43:10 +01:00
d5cd88a30e Capture directly from OpenGL framebuffer
- Update capture.dll to read via glReadPixels
- Move coroutine wake up into OnWorldPostUpdate
- Update resolution checks for new capturing method
- Remove fullscreen mode check
- Increase screen capture delay
2024-01-04 19:36:36 +01:00
478e1284fb Add code that stops grid updates in regular build
This is not exposed to the end user yet, as it is buggy.
2023-12-30 13:34:13 +01:00
8bb8adf1ba Scan world line by line instead of using hilbert curve
This should prevent some glitches due to the way Noita generates the world.
2023-12-28 17:47:36 +01:00
9494588e7b Add example code for killing/removing creatures 2023-02-25 13:51:17 +01:00
959b198e46 Fix typos 2022-08-27 14:32:01 +02:00
7a4dbeddf1 Fix output pixel scale option
- When set to 0, correctly use the actual pixel scaling factor
- Scale player path by pixel scale factor
2022-08-11 10:56:24 +02:00
1e5249d436 Add player path tracking and drawing in live mode 2022-08-10 20:41:57 +02:00
eb552537c2 Improve capturing
- Center viewport to grid cells, not chunks
- Check window size when taking screenshot
2022-07-29 22:48:42 +02:00
a2cb806ffa Add progress bar
- Change process runner to return state table
- Add progress bar graphics
- Add progress bar UI
- Fill progress runner context state with more capturing info
2022-07-29 19:42:44 +02:00
b81fcd8417 Decrease timeout until wiggle 2022-07-28 23:05:25 +02:00
fd7fb31338 Change when CameraBound component is removed
Remove CameraBound component when capturing entities, but not when modifying entities
2022-07-28 17:00:24 +02:00
25a28c8469 Change how DoesWorldExistAt is called
Use Noita's bounds, in the hope that Noita uses the same coordinates for chunk loading.
2022-07-28 14:18:01 +02:00
321208ba8a Query live capture settings while capturing
- Change default capture interval to 30 frames
- Add todo comments
2022-07-28 14:01:44 +02:00
f79d48fdc0 Set camera free based on mod settings 2022-07-28 13:27:02 +02:00
6becf72420 Start entity capturing based on mod settings
- Rename disable-entity-components mod setting to modify-entities
- Add IsPlayer and IsInvisible methods to entity API
- Don't modify the player entity
2022-07-28 12:38:26 +02:00
640a241d38 Implement more capturing modes & Fix spiral 2022-07-28 12:06:47 +02:00
84dba8a9fa Fix ctx.progressCurrent not being set 2022-07-28 11:57:47 +02:00
31fc11ef1b Improve user experience
- Modernise UI, and simplify its logic
- Add UI graphics
- Add modification.lua which contains everything to modify Noita settings
- Add message.lua which handles messages for users
- Add check.lua which checks things, triggers messages and suggest user actions
- Remove ACTIONS category from settings
- Add more live capturing parameters to settings
- Restrict vector input fields in settings
- Rename pixel-size setting to pixel-scale
- Let GetRect return two vectors instead of RECT object
- Add VirtualOffsetPixelPerfect and FullscreenMode field to Coords
- Fix captureScreenshot when the outputPixelScale is 0
- Show runtime errors in UI via message.lua
- Other small fixes
2022-07-28 01:48:49 +02:00
a2f5efc9e6 Rewrite capturing process
- Add process runner library that handles any processes
- Add global namespaces for main files
- Add config.lua and move capture area definitions into there
- Remove CAPTURE_PIXEL_SIZE and CAPTURE_GRID_SIZE variables
- Rename topLeftWorld in screen-capture.lua to topLeftOutput
- Rewrite all capturing processes and let them use the process runner
- Put UI redrawing outside of coroutine
- Clean up not needed stuff and get rid of most global variables
- Change how the UI is suspended when taking screenshots
- Start rewriting UI stuff
- Reformat ui.lua
- Fix comments
2022-07-27 00:06:09 +02:00
96c2da8f78 Refactor and clean up stuff
- Rename WrapID method to Wrap
- Fix pack function in component.lua
- Change default pixelscale to 1
- Add and fix documentation
2022-07-26 16:33:29 +02:00
0126e706cb Update capturing stuff
- Add ability to capture while normally playing
- Calculate capture area based on coordinate transformations
- Improve and simplify captureScreenshot function
- Move dynamic library wrappers into libraries folder
- Update capture.dll to support cropping and resizing
- Recompile capture.dll with newer PureBasic compiler that uses C backend
- Increase capture.dll worker threads to 6
- Increase capture.dll queue size by one
- Add Round and Rounded methods to Vec2
- Split magic number XML files for easier debugging
- Fix some EmmyLua annotations
- And and fix some comments
2022-07-24 22:05:34 +02:00
931c4df18a Refactoring, fixes and cleanup
- Move utils into Noita API wrapper
- Always overwrite require, with a fallback to the original
- Add library directory of mod to package.path, instead of the files directory
- Add Noita data/scripts/lib to package.path
- Fix dofile error handling
- Fix require not working right when module returns false
- Add init.lua to Noita API wrapper, that contains a table of all modules
- Fix Utils.GetSpecialDirectory
- Update README.md
2022-07-23 20:43:04 +02:00
98dfb5fbb0 Cleanup, Refactoring and Fixes
- Remove unused util functions
- Put util stuff into its own namespace
- Move all initialization stuff into root init.lua
- Move progressBarString function into ui.lua
- Fix ffi.load error message
- Fix DebugAPI.BiomeMapGetFilename
- Move JSON lib into Noita API wrapper
- Move Vec2 lib into Noita API wrapper
- Move compatibility stuff into Noita API wrapper
- Emulate package tables if in restricted API mode
- Emulate require if in restricted API mode
- Use require instead of dofile_once everywhere
- Fix WrapID method to accept nil
- Add EmmyLua annotations for the default Noita API
- Add README.md to Noita API wrapper
2022-07-23 17:36:21 +02:00
508771c347 Clean up 2022-07-23 10:57:25 +02:00
2acc4e7e93 Move hilbert curve lib into library directory 2022-07-23 10:55:44 +02:00
aa99e101b4 Split Noita API wrapper into several files 2022-07-22 21:31:40 +02:00
4b869c0944 Move libraries into their own folder 2022-07-21 01:16:23 +02:00
6cf06d42d9 Remove CameraBoundComponent from entites 2022-07-19 18:27:31 +02:00
926aa5bca8 Remove debug message 2022-07-19 13:55:08 +02:00
77bf19acf3 Improve entity capturing
- Set velocity of VelocityComponent to zero
- Prevent some random explosions
- Make entity capture independent of screen capture
2022-07-19 13:50:30 +02:00
98f9c23064 Remove artifical slowdown in capture.lua 2022-07-18 22:54:57 +02:00
8f3ecefa8b Reduce more animations for a cleaner image
- Add override misc\custom_cards\energy_shield.xml
- Add override misc\custom_cards\action.xml
- Add override entities\base_custom_card.xml
- Add override to data/scripts/perks/perk.lua that disables SpriteOffsetAnimatorComponent
- Add WrapID functions to Noita API
- Remove unecessary entity modifications in capture.lua
2022-07-18 22:53:34 +02:00
f58b005155 Several fixes and improvements
- Change vscode Lua runtime to LuaJIT
- Remove worm entity overrides
- Remove preparePlayer() that sets HP and other stuff
- Change how entites are captured
- Increase entity capture radius
- Capture entities as soon as possible
- Modify entites immediately after they are captured
- Make stringArgs in print local
- Fix JSON marshaling of Noita vectors
- Fix NoitaEntity:GetComponents() and NoitaEntity:GetFirstComponent()
- Add varArg support to NoitaComponent:SetValue() and NoitaComponent:ObjectSetValue()
- Update some EmmyLua annotations
- Fix custom GamePrint
- Add table.pack function that is missing in LuaJIT
2022-07-18 22:07:53 +02:00
e8c6c8bb8f Rename entities file suffix to json 2022-07-18 11:48:49 +02:00
cfe4193974 Move Noita specific stuff out of JSON library
- Add JSON marshal "interface" that objects can implement
- Fix EmmyLua annotation
- Move JSON marshaler into noita-api.lua

#9
2022-07-18 11:47:59 +02:00
833ab41eeb Serialize entities to JSON
- Add JSON library that can marshal Noita entities and components
- Add Noita API wrapper that exposes entities and components as objects
- Change how the entities file is written, to support lightweight and crash proof appending of JSON data

#9
2022-07-18 01:32:44 +02:00
861272187a Change from entityID to tag for deduplication
The entityID is not unique per entity. Entites may get a new ID on reload. Or the same ID will be reused by another entity.

Attach "MapCaptured" tag to visited entities.
2022-07-17 17:26:08 +02:00
303f1a9c90 Capture entities and write into CSV file
Related issue: #9
2022-07-17 16:54:59 +02:00
4551948460 Fix coordinate systems & Prepare for entity output
- More clearly describe which coordinate system is used
- Fix screen coordinates for CAPTURE_PIXEL_SIZE != 1
- Prepare entity output file
- Fix format of comments
2022-07-17 14:39:18 +02:00
6a9c32cd99 Add different capture areas
- "Full" map capture is now "extended" map capture
- Made coordinates align with in-game chunks
- Add images for different capture modes
- Update README.md
- Add AREAS.md
2020-10-20 15:29:28 +02:00
478a6262e8 Fix chunk/pixel alignment
- Adjust coordinates, so that chunks are always in the center of the window
- Modify VIRTUAL_RESOLUTION_OFFSET_X/Y to match window output with expected coordinates
- Fix black line at the bottom of window
- Remove tile bleed/inset while stitching, as it is not needed anymore
2020-10-17 17:27:26 +02:00
151d1d88bd Use DoesWorldExistAt() to speed up capturing
- Remove any delays
- Move UI rendering into capture coroutine, so wait(...) can be reduced
- Use wait(0) instead of wait(1) in coroutines
- Use default value of STREAMING_CHUNK_TARGET
- Don't suggest to change framerate to 600 Hz
- Don't suggest to disable mTrailerMode
- Add "Done!" screen
- Update README.md

fixes #1
fixes #5
2020-06-01 22:40:47 +02:00
8cf480dc37 Optimized parameters
- Reduce CAPTURE_DELAY
- Increase STREAMING_CHUNK_TARGET
2020-05-31 18:00:24 +02:00
24fa53be27 Add countdown to UI 2020-05-31 17:59:36 +02:00