[SM64] Animations Rewrite/Rework#467
Conversation
|
import c animations actually fucking work, i worship lila from now on, W Lila |
avereyishere
left a comment
There was a problem hiding this comment.
Animation I/O works from C to Binary and the false bounds detection works
|
You mention this is based on other PRs, so are these other PRs to be merged first? |
YoshiMilkman
left a comment
There was a problem hiding this comment.
Works great. Been using it for DMA animation exporting with a custom Mario rig. Nothing else in Fast64 seems broken. Been using for a few weeks now.
Ideally, obviously no pressure since the smart includes pr is niche, i just incorporated it for the simple actor include write function (oh and the useful functions for the table update function!) |
|
Also worth mentioning that I could always remove non animation data from the actor presets until we actually use them, I just thought scut would benifit from them in her importer pr #198 |
Reonu
left a comment
There was a problem hiding this comment.
I've been on this branch for a while and everything seems okay, I used it to develop the entire desert mario 2 hack
Verbose documentation like docstrings is.. not my strong suite
|
Why's this still not merged? |
|
....... |
jesusyoshi54
left a comment
There was a problem hiding this comment.
Basically good, seems like people have tested it a bunch so that is a good sign that it works.
|
|
||
| ### Animating Existing Geolayouts | ||
| Often times it is hard to rig an existing SM64 geolayout, as there are many intermediate non-deform bones and bones don't point to their children. To make this easier you can use the 'Create Animatable Metarig' operator in the SM64 Armature Tools header. This will generate a metarig which can be used with IK. The metarig bones will be placed on armature layers 3 and 4. | ||
| ### TODO: Link to animations docs |
There was a problem hiding this comment.
When are you going to do this?
There was a problem hiding this comment.
There was a problem hiding this comment.
And here is the page https://fast64--7.org.readthedocs.build/en/7/
|
yay! |
* [Repo Settings] Only set if different (Fast-64#468) * [Repo Settings] Only set if different Fixes lag at start up from draw layers being set unnecessarily. Some clean up that I already did in Fast-64#461 * Request Changes Co-Authored-By: Dragorn421 <Dragorn421@users.noreply.github.com> --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [F3D] Fix sameTextures condition, make assert more user friendly (Fast-64#466) * [F3D] Fix sameTextures condition, make assert more user friendly * world peace * [SM64] Add back custom include directory + add automatic option (Fast-64#464) * [SM64] Add back custom include directory + add automatic option Fixes Fast-64#463 * bump sm64 settings version * Requested Change + extra checks for ui and code clarity Co-Authored-By: Dragorn421 <Dragorn421@users.noreply.github.com> --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * T3D UI (Fast-64#389) * T3D UI * black * some fixes for main and small changes * personal nitpick * one more nitpick * removal of unnecessary checks * black format * small typo * black * Add rdpq * [SM64] show custom export path without save textures (Fast-64#475) recent regression caused by me, yay * [OoT] Update cutscene macro names (Fast-64#481) * update CS_HEADER and CS_END_OF_SCRIPT * deleted a word * format * [SM64/F3D] Area fog improvements (Fast-64#378) * [SM64] Area fog improvements Area fog is now a toggle in the area root Renamed the text for global fog to area fog Materials now by default show color and position if set fog is on, then in sm64 mode, if they are parented to an area that sets fog the option for area fog shows up with the area name in the text, if it's on a disabled column with the area's fog properties will also show * Fixed description * Shorten description, black * black * [SM64] Add exception handling for area init and throw error for instant warp objects (Fast-64#390) * [SM64] Add exception handling for area init and throw error for instant warp object * Add back exception handeling * [SM64] Fix/Improve multi-actor UI (not export all selected) (Fast-64#450) * [SM64] Fix/Improve multi-actor UI (not export all selected) * abs_decomp_path a little extra addition for code quality * dragon's review suggestions * forgot to change this to a comma, oops * [SM64] Only throw empty gfx exception in actor exports (Fast-64#413) * [SM64] Only throw empty gfx exception in actor exports * type hint * removed comment * Remove other unused camera args * don't pass in arg for camera * remove last unused camera * [OOT] Detailed Actor Panel (Actors, Transition Actors, Entrance Actors) (Fast-64#242) * parsed parameters for actor data * removed paramsByType * main logic * fixed issues and export * operators * black * fixes, transition actor list * upgrade logic * fixes * black * review * review * fixed export issues * format * kure's review part 1 * fixed upgrade issues (custom not handled yet) * snake case-ify functions, tiny xml docs/fixes, completed upgrade stuff * add custom values for enums * added custom values for string props * small fix and default to custom in upgrade * fixed custom values not working * fixed issues related to custom value for Chest/Navi Msg * fixed issue where 'get_param_value' can return None in some cases * latest review from kure * [SM64] Fix SM64 binary geolayout exports (Fast-64#423) * First pass There seems to be something wrong with reverts still, will investigate * currently hasn´t caused a bug but update this to be sure * another similar issue * [SM64] Add in actor preset information for future use (Fast-64#393) * [SM64] Add in actor preset information for future use Used in animation rework for import presets and export presets for binary * Added animation names * black * Mario animation names * black * undo weird change * name all animations * fix piranha animation names * Small mistake in mario * add docstring * clean up validation * add groups, fix mistakes * figure out level from group * fix toad * hack for bowser * Use hex * Fixes from animations rework final testing * [OOT + F3D] More informative error messages for deleted lights (Fast-64#491) * [OOT + F3D] More informative error messages for deleted lights I thought of wrapping saveOrGetF3DMaterial to avoid these kind of empty errors in the future, im fine with reverting that tho I think it is for the better (in ac I wanted to throw errors where the material wasn't in the args already and it's very annoying, this way everything is consistent) * fix from watching somone's stream * [OoT] Fix issue where light settings is using the wrong name (Fast-64#493) fix issue where lightsetting is using the wrong name * SM64: Add missing typecasts from Gfx* to SetTileSize* to suppress compiler warnings (Fast-64#492) * [F3D] [Bugfix] Fix Sync Optimization for Mat Bleed (Fast-64#487) fixed optimize_syncs function for bleeds Co-authored-by: scut <scut> * [SM64] Bring binary dl exporter up-to-date (Fast-64#459) * [SM64] Bring binary dl exporter up-to-date Add bleed and inline support. Assert for fmeshes len No longer use getDrawLayerV3, yes it doesn´t matter here but it was the last bit of code to use it, with permission I'd like to remove the function * DLFormat.Static * [mk64] Implement Material Presets & World Defaults (Fast-64#470) * Update f3d_material_presets.py * Update f3d_material_presets.py * Create mk64_constants.py * Update __init__.py * Update f3d_material_presets.py * Update mk64_constants.py * Update __init__.py * Update f3d_gbi.py * Update f3d_gbi.py * [SM64/F3D] Fix and update Ui Image Exporter (Fast-64#452) * [SM64/F3D] Fix and update Ui Image Exporter Fixes Fast-64#451 Missing: Load and set commands and pallets (currently relying on multitex manager, will have to be changed somehow) Updated: Tex prop is now drawn using ui_image, ui_image has been updated to optionally hide low and high props (are handled by size cmd, does not exist for texrect) materialless_setup func for TexInfo, equivelant to moreSetupFromModel for bpy material-less contexts, obviously cannot handle flipbooks ignore_tex_set bool for fromProp Use only fromProp and updated writeAll Some basic ui reordering to match other panels * Fix noted issues, clean up code to be consistent, add tlut mode * use world defaults and saveModeSetting to remove revert code, remove extra syncs * close to being finished * refresh 13 memes * automatically pick 1 cycle instead of copy mode * Rasky confirmed ia16 tlut works for copy mode, cool * Revert "Rasky confirmed ia16 tlut works for copy mode, cool" This reverts commit 7fe981c. * [SM64/F3D] Fix and update Ui Image Exporter Updated: Tex prop is now drawn using ui_image, ui_image has been updated to optionally hide low and high props (are handled by size cmd, does not exist for texture rectangles) materialless_setup func for TexInfo, equivelant to moreSetupFromModel for bpy material-less contexts, obviously cannot handle flipbooks setup_single_tex func for TexInfo, sets up a single texture without the context of the multi texture manager ignore_tex_set bool for fromProp Use only fromProp and updated writeAll Use saveModeSetting (and world defaults) instead of manullay appending each DP command (except for blend color) Removed syncs except for the sync after the texrect cmd to do the reverts Removed deprecated arg for png exporting in save_textures (assumed from fimage) Removed the ) part of the delimiter checked when exporting "Menu", refresh 13 made it (void) instead of () Some basic ui reordering to match other panels Added 1 cycle variant for non rgba16 exports Fix dynamic dls * fix dsdx and dsdy * fix overwrite data issues could not deal with aligner and palletes, now can! * sauren nitpicks * fix first test * Update f3d_texture_writer.py * make the regex allow even more whitespace * fix extra new lines * Check if fog data exists (Fast-64#497) * Fix bug where water conveyors set COLPOLY_IS_FLOOR_CONVEYOR (Fast-64#502) * [OoT] Fixed actor enums overriding actor types (Fast-64#504) fixed actor enums overriding actor types * [OoT] Fixed UI issue when an actor has no type (Fast-64#509) * fixed UI bug when actor has no type * fixed missing collectible item none * [OoT] Update actor scale's default value (Fast-64#508) * make actor scale default to 10 * add a print for clarity * Show actor scale outside custom and check custom in skeletons Not an oot expert but this seems like a very obvious issue with this. --------- Co-authored-by: Lila <lilaa3public@gmail.com> * [SM64] Add better exception processing to combined exporter (Fast-64#496) * added warnings for when exporting all has exceptions for some objects * changed code to instead generate exceptions except for specific ones which will give a warning in the console. Possibility to add warning for user for other exceptions though probably not --------- Co-authored-by: scut <scut> * [OoT] Updated `EnumData.xml` (fixes some cutscene import issues) (Fast-64#484) fixed enum data * [OoT] Fixed standalone cutscene export (Fast-64#480) fixed standalone cutscene export * [OoT] Fixed writing to the spec file (Fast-64#503) * fixed spec file * review * Make update UI more understandable (Fast-64#446) * Make update UI more understandable Don't box the ui as the preferences are already part of a box (looks disgusting in 4.2) Update to stable now on the same column as update to main to make them seem both equally useful Change text for main/old to be more obviously important, from "Install main / old version" to "Install specific version (Latest or Older)" Move the restore operator into another row Updated readme with new instructions and screenshots * Remove mat screenshot and link to updater instructions early into the readme * Update redundant text * merge request button * Update README.md Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * change to gross github name only used by github and no one else Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * use to be added updater in fast64docs * mention ability to test prs --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [F3D] Use set for image and pal dependencies (Fast-64#522) * [F3D] Use set for image and pal dependencies Prevents duplicates, causing the behavior seen in this issue https://discord.com/channels/874816709855440926/1373127651283439636 * use set in default_factory Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [F3D] Fix cycle 2 NOOP identifier (Fast-64#521) * [OoT] Add a toggle for the new actor panel (Fast-64#505) * add toggle for new actor panel * fix custom issue * [OoT] Move collection operators/functions from oot_utility.py (Fast-64#486) move collection stuff to its own file * [OoT] Fixed collision export (Fast-64#507) * fixed collision export * fixed include oddities * fix compile issues * support for older decomp headers * z64.h -> global.h * [OoT] Remove `global.h`, `macros.h` and `z64.h` in the exported includes (Fast-64#518) * fix exporting using obsolete headers * old behavior for legacy version * check for z64.h instead of specific version * z64.h -> global.h * [OoT] Add missing versions to `oot_versions_items` and add overlay support for quick import (Fast-64#482) * add missing versions and improve quick import * remove debug print * add ignore cs stop preview setting * lilaa's suggestion + added ique-cn * throw a warning when trying to import a cutscene which already exists in the data * [F3D] Fix for blender 4.4 (Fast-64#529) [F3D] Fix blender 4.4 * [OoT] Add basic title cards support (Fast-64#525) * add basic title card support * review * add z64path.h * remove added includes in favor of another PR * [SM64/F3D] Use WriteDifferingAndRevert for bleed (Fast-64#461) * [SM64/F3D] Use WriteDifferingAndRevert for bleed Write all logic remains unaffected, obviously. A new dict was added to map each mode cmd to its default. For the actual bleed part, we fIrst need to add geo mode reverts of the last material to the geo mode of the current material, since the current material may not set them now. For othermodes we do something different, get all reverts and add any that doesn´t get set again by the current material ignoring bleeding. For the geo mode revert, we keep track of one geo mode command for set and clear, updating it as we go. For othermodes we keep track of all of the command types and then revert them using the new dict. * remove this * scut sabotage * Port over Fast-64#462 We cannot just assume that othermodeh or othermodel are always setting the same bits, so instead we write the diff of the current cmd to the one already in the reset dict, this means that if a materials sets rendermode and another sets alpha compare (for example) it will still revert the rendermode because those bits will be carried over in the reset dict * make write different optional, as it can lead to bigger dls * clean up sm64 repo settings * im gonna have to rework a bunch of othermode stuff i actually dispise fast64 so much * RendermodeBlender class * Update f3d_bleed.py * i just want to be done with this * [Repo Settings] Only set if different Fixes lag at start up from draw layers being set unnecessarily. Some clean up that I already did in Fast-64#461 * Update utility.py * is_rendermode_cmd to def * fix rendermode * return RendermodeBlender instead of temp list * instead of using a revert, set when no render mode * make rendermode command hashable, check for default * pick appropriate geo cmd, make geo cmds use sets makes dls just a bit cleaner and makes ex1 work correctly * implement render mode reset fix * Update f3d_bleed.py * undo dumb change * respect write method * only revert as needed, i feel like a god * make switchs work super well * fix setting rendermode * remove repeated resets in switch options and add options for reverts in bones * use last_mat by default * comment out occlusion plane code to show bleed indep * functions already work * fix load othermodes these work more like write diffs, so we do that * someone forgot * fix prev node issue * create our own pipe syncs * Update f3d_bleed.py * fix disgusting broken late night code * Revert "fix disgusting broken late night code" This reverts commit 9ece151. * Update sm64_geolayout_classes.py * something is wrong but i cant figure it out * dont remove lighting * fix DPSetRenderMode * fix write all rendermode * fix this bug once and for all * write all get_flags impl * get_flags * forgot to do diff in reverts in write all * add back prim depth, accidentally removed * comments (not ready) * not a union * not a tuple Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * proper formatting Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * use load sync * oopsie dasie * use pipe syncs again --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [OoT] Scene/Cutscene Export Fixes (Fast-64#528) * cutscene fixes * add missing includes in cs exporter * use CS_FLOAT * don't use cs_float for actor cues and use it for the unused values * review --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [OoT] Add move cutscene bone operator (Fast-64#530) * [OoT] Add move cutscene bone operator * fixup * No longer sort bones by name for computing the camera shot preview (which was different from what the exporter did anyway) * Update fast64_internal/oot/cutscene/motion/properties.py Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> --------- Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * [OoT] Fix player flipbooks export (Fast-64#536) * [F3D Bleed] Fix switch option doing an extra reset (Fast-64#534) * [OoT] Fixed object being added to the duplicated room object (Fast-64#543) * fixed object auto-add adding to the duplicated room object * don't trust sorting by names * [OoT] Fix animation exporter expecting an object name with custom paths (Fast-64#546) fix animation exporter expecting an object name with custom paths * [OoT] Fix includes for z64 prefix removal (Fast-64#549) * [OoT] Fix includes for z64 prefix removal * review * Fix export of custom conveyorSpeed (Fast-64#550) * Fix export of custom conveyorSpeed * black * Bump bl_info version to v2.4.0 (Fast-64#542) * Cleanup: setOrigin() (Fast-64#537) * Cleanup: deselectAllObjects() and selectSingleObject() (Fast-64#538) * [OoT] Exporter Cleanup (Fast-64#533) * remove old exporter files * move anim/skeleton exporters to the exporter folder * reimplement collision and cutscene exporter * black * fix small issues * remove cs insert feature * tweaks * review Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [OoT] Fix the importers (Fast-64#547) * fix cutscene import * account for committed assets * add enums, add misc tools and fix few things * fix matrix regex and fix get_include_data file path order * fix collision import * format * fix camera and crawlspace import * fixed waterbox import * fixed exit lists * fixed paths * misc fixes * fix lights * misc fixes and moved utility funcs to global utility module * fixed room parsing and mesh imports * fixed actors and misc issues * fix more issues (it works! or should work) * fixed transition actors * fix cutscenes * note about CS_CMD_UNIMPLEMENTED_16 * camera roll is signed now * fixed import issues with the older way * fix fast64 imports + some improvements * add comment about ignore_tlut * fix skeletons * fix animations * fixed dl importer * remove useless comment * fixed lights * review and "fixed" matrix issues * review 2 * fix jabu imports Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * review 3 * review 4 * camroll thing * format * remove useless code * "fixed" collision props regression --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [OOT/MM] Rename OoT to Z64 and remove the OoT prefix from the files (Fast-64#540) * `fast64_internal/oot` -> `fast64_internal/z64` * remove oot prefix (and delete `oot_spline.py`) * remove another useless file * load issues * [SM64] Make switch material override stackable and apply layer reverts (Fast-64#544) * [SM64] Make switch material override stackable and apply layer reverts * fix override mat + layer adapt, improve hashing method * fix override mat + layer adapt, improve hashing method * make non dl nodes have the correct layer * account for layer override in reverts * some final details * fix bleed issue * fix bad reverts in option 0 * make bleed support checking for reverts * Create Game Data and move `fast64_internal/oot/data` (Fast-64#541) * move oot.data to fast64_internal.data and introduce game_data (+ related changes) * fix issues * format * remove useless "Game" attribute * review * [OOT/MM] Remove "oot" prefix from some enums and switch to them (Fast-64#553) remove "oot" prefix from some enums and switch to them * [OOT/MM] Misc changes for MM (Fast-64#555) * gamedata update on load and game change * cs index stuff * gameeditormode and update panels * format * add versions * comment MM game editor mode to avoid confusing users * Update packed normals implementation to match F3DEX3 beta (Fast-64#567) * Initial implementation * blacked * Fixup 565 normal import (Fast-64#571) * Fix Link import/export (Fast-64#552) * Fix Link import/export (wip) * fix z64player.h / player.h * fix importing Link pre-new-assets ? * remove hardcoded player limb enum * removeComments on flipbook import data (fixes importing child link) * [OoT] Fix scene command issues (Fast-64#562) * fix scene commands * display entrance actors as cones when importing --------- Co-authored-by: Yanis002 <Yanis002@users.noreply.github.com> * [OoT] Fix cutscene export issues (Fast-64#569) fix extra cs export issues * Try to do append load post on register and remove it on unregister (Fast-64#568) * [OoT] Add default camera when creating the scene (Fast-64#563) add default camera when creating the scene + create scene at 0;0;0 Co-authored-by: Yanis002 <Yanis002@users.noreply.github.com> * [SM64] Add material slot sorting to armatures (Fast-64#572) * Remove legacy & unused f3d_render_engine (Fast-64#570) * [SM64] Fix mesh instancing, regression from Fast-64#423 (Fast-64#559) * [SM64] Fix mesh instancing, regression from Fast-64#423 * better name * [SM64] Smarter and standardized includes (Fast-64#449) * [SM64] Smarter includes Added new functions, write_includes and update_actor_includes. write_includes is a smarter version of writeIfNotFound specifically for includes and externs, it removes comments prior to searching (but doesn't remove comments from the actual file of course) and allows whitespace (where possible, a path including whitespace won´t be found when searching for a file with no whitespace), futhermore it adds a trailing newline to the file instead of adding a leading newline for each include, the logic that finds the `#endif` of .h files is also improved like the logic to find includes and externs (whitespace is tolerated, comments are ignored) but it also allows no endif for files that use the GCC `#pragma once` macro update_actor_includes standardizes group and level includes into one place for ease of editing, one of the major differences is that level exports no longer use the full path (levels/actor/my_file.c would instead be /actor/my_file.c) this should allow level header type actors to actually update headers on custom non decomp levels but that is not done here * find_includes_and_externs * as_posix * New versatile write_or_delete_if_found function * Ok I lied, seperate out comment map func, use string IO * more type hints! * seperate comment start end adjust into function * Fix level export includes dups * Fixed comment adjust function * as_posix fix and clean up * Fix empty text files * Some attempts at tasteful comments Verbose documentation like docstrings is.. not my strong suite * allow str, use path in f3d writer * header footer doc string * Update sm64_utility.py * [SM64] Rework actor load exports for level scripts (Fast-64#564) * seg 8 loading for yay0 and geo segments * update replaceScriptLoads to add new script loads if missing * change grid layout * add global write/don't write toggle for actor loads and 'None' option for individual segment loads * reappend any JUMP_LINK commands that do not contain 'script_func_global' * formatting lol * some code quality changes * move write actor loads to the correct place, clean up the UI a little (grid wasn´t even being used properly aha) * replace yay0 or mio0 equivelent commands to current compression method --------- Co-authored-by: Lila <lilaa3public@gmail.com> * [SM64] Bring more props to combined and merge level enums (Fast-64#512) There is only one level enum (which I took the time to organize), binary will simply error out with Custom (tho it is not fully out of the possibility to support custom levels in binary in the future), upgrade code added. Dl and animation now share props with combined, animation rework actually uses these but for now both just redraw the prop to keep the ui the same. Imports and address converter left untouched besides enum change, these should not be per scene. Convert to str in getPathAndLevel to avoid issues with posix paths -> abspath Alternatively, should this be just a pr for level enums? Closes Fast-64#498 * [SM64] Add lighting engine presets (Fast-64#531) * [SM64] Add lighting engine presets * remove preset dir function * [SM64] Implement someone level template styled bounds (Fast-64#513) * [SM64] Implement someone level template styled bounding boxes * parent to level instead I forgot fast64 keeps the offset from the level instead of from the area * [F3D + SM64] Dedup mesh names, fixes repeated final revert DLs (Fast-64#565) [F3D + SM64] Dedup mesh names, fixes repeated final revert dls * [F3D] Fix node creation in 4.5 (Fast-64#566) * [F3D] Fix node creation in 4.5 * port over changes from libdragon pr * [SM64] Animations Rewrite/Rework (Fast-64#467) * [SM64] Animations Rewrite/Rework * [SM64] Animations Rewrite/Rework * Remove animation docs from README until I write new ones in fast64_docs * remove accidental exports * merge conflicts? * Fix level export includes dups * Fixed comment adjust function * change table properties to only have elements * Update properties.py * Rename * bounds check * keep default action name consistent with blender * as_posix fix and clean up * designated is include in repo settings, include in tooltip * Fix empty text files * fix peach's address * Some attempts at tasteful comments Verbose documentation like docstrings is.. not my strong suite * allow str, use path in f3d writer * better valid filename func * fix things! * review and a personal nit * Add docs link * [SM64] Custom level script and special commands and improvements to custom geo commands (Fast-64#457) * implement prop * first iter of custom cmd exporting * let rovert fly * Update sm64_objects.py * Update sm64_objects.py * Update sm64_objects.py * upgrade existing custom geo into new custom type * Hack for geo because * [SM64] Add depth arg and remove comma from existing cmds * [SM64] add depth arg to level and collision objects * change unused depth to _depth and add my stashed changes.. oops * some code clean up and ui improvement * Allow custom geo to have children * command preset system (WIP) allows you to create presets for your repo. missing auto updates to presets * detect changes via a hash * fix last remaining bugs * fix preset edit preview * add draw layers * basic example macro * boolean support and fixes * world's most over enginered way to handle numbers * bugs and visual fixes * make color serializable * dont use PRESET_EDIT if presumably there is no edit data * use degrees * inital support for bones * dont require transform to be inherented, fixes bone using scale arg * remove sys, last few bits of code tomorrow * move custom args into a folder * lock * typing fixes * use dict for exports * early binary support * Missing dl ext and animated * dl ext impl * make is animatable work * update updateBone to suit my new needs * finish upgrade code * dl ext now dl cmd, example macros for dl cmds * SM64_CustomArgProperties * enum property support to really hammer in the scope creep * Nice move by SpongeBob! This match is just about over. checked for mesh, removed one indent, changed Special to Collision * some fixes to the ops * make binary more flexiable by introducing eval expressions Now behavior that would require a macro can be written in an eval statement, this is peak over engineering. It's also present in c under a toggle because SCALE GEO CMD COMPATABILITY!!! * make hard defined int types for binary * one last fix * allow color quant for background node compat, fix enum ops * impl last translate/rotate name in custom * undo export color * fix area root UI * fix commas * add order, fix up a couple of nits * lila did a stupid * fix transforms * conventional rotation in macros is not scaled to s16 * let eval run on tuples * implement generators * add cast_integer * Update properties.py * round to conventional for scale * document collection operator base more, fix bug with scale rounding also add copy_on_add * undo repo settings ver change since there has been no breaking changes * remove unused * implement top level level script commands * make clean color into tuple, run eval on lists * update base displaylist node * little thing i noticed missing * unnecessary names removed * Fix transforms in level * fix parameter * show animatable toggle in presets * More control of the level script section * copy enum example * over engineered description code * update preset instead of changing to NONE * fix number updates * typo * fix crash * VERY IMPORTANT FIX * link to docs * add comment about updating existing animation pr ops * fix animation command checks * Fix README link for Ocarina of Time to point to z64 folder (Fast-64#577) * [Codebase] Restore original functionality to setOrigin (Fast-64#575) * [Codebase] Restore original functionality to setOrigin the remade version of set origin was not equivalent to the previous one, breaking SM64. we were applying -target_loc instead of the offset between target loc and the original location * uhh comment was still :true:, sorry * [Codebase] Fix setOrigin AGAIN (Fast-64#588) * [Codebase] Fix setOrigin AGAIN transform_apply was not neeeded, typehint was missing and offset was being affected by obj.location, we actually just zero it out now before applying the world matrix. also removed the temp_override cause transform already does that. * Update utility.py * Update utility.py * add doc string, use the original matrix as a base and apply the inverted original to the mesh (im stupid) add doc string instead of a comment mentioning the behavior * black * another tryy * [OoT] Various fixes (Fast-64#592) address issues 586, 589 and 590 * [OoT] Fix misplaced objects bug (Fast-64#596) * fix misplaced objects * review * [SM64] Fix custom bones (Fast-64#580) Someone updated the code for simplicity but didnt test it (sorry) * [SM64] Bug fix for animation rework table logic (Fast-64#585) * [SM64] Bug fix for animation rework table logic Along the development cycle of animation rework, I made some relevant comment handling changes, admittedly i missed two small details, that we need to adjust from start (commentless) instead of table_start (comment adjusted pos). And that we need to rerun the comment map function after adding the enum include * Update sm64_objects.py * Fix for issues Fast-64#601 and Fast-64#602 (Fast-64#605) * fixed exportpath missing in fast64 tab * start fixing oot dl exporter * fixed oot dl exporter * review * [OoT] Fix scene export issues (Fast-64#607) fix scene export * [OoT] Improve how lighting is handled (Fast-64#597) * improve light impl * convert "extras" to lightgroupproperty to handle groups of 4 as a list * improve light import * [OoT] Various fixes 2 (Fast-64#612) * fixed Fast-64#418 * fixed issue where importing with an invalid path would create a folder * pack transition actor entry index in parameters * fixed quick import * fixed light import with recent decomp * fixed giant link * add `BLEND_RATE_AND_FOG_NEAR` macro to the backward compatibility list * revert door param change * [OoT/MM] Implement Animated Materials (Fast-64#608) * meta stuff * implement animated materials (import/export) * fixed endif in headers for hackeroot * add missing include for hackeroot * write a guide * add draw config stuff * add ifdef around segment call for hackeroot * create hackeroot settings and add an "export ifdefs" option * add operator * fix draw color, allow exporting empty lists and add initial scene embed * fixed export, removed texscroll lists as it's useless and export tweaks * add clear and copy, improve add and delete * fixed importer * add export panel for actors * docs update * self-review * force frame_num to be under keyframe_length (+ small export bugfix) * fixed tiny issue * fixed tiny issue * add comment about length - 1 * [OoT] Fixed commands parsed incorrectly (Fast-64#615) * fixed commands parsed incorrectly * light import hotfix * [F3D] glTF2 support (Fast-64#368) * [OoT] Skeleton export fix (Fast-64#620) skeleton export fix * [OoT] Added checkbox to import all animations when importing an OoT skeleton (Fast-64#485) * feature to import all animations when importing an OoT skeleton * Update fast64_internal/oot/skeleton/utility.py Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * Update fast64_internal/oot/skeleton/importer/functions.py Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * few updates * paddings * selectSingleObject import * edit * fixed link animation import issue and improvements --------- Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * [SM64] Fix createBone (regression in custom commands) (Fast-64#611) * [SM64] Fix createBone (regression in custom commands) bone = armatureObj.data.bones[boneName] was incorrect cause of duplicates (if i remember correctly), so I removed it in place of using the edit bone, but I failed to remember edit bones don´t share properties with their bone counterparts. * change to object mode * [OoT] Introduce feature set (Fast-64#622) * Replace hackerFeaturesEnabled with featureSet * Add property upgrading * Rename featureSet to feature_set * Update fast64_internal/oot/cutscene/exporter/functions.py Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * Update __init__.py * Fix format * Apply review suggestions * address review * swap header set visibility and feature set enum on UI --------- Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com> Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * [OOT] Remove clear_mesh_children workaround (Fast-64#618) last try try inverting try matrix instead * [SM64] Fix rotation bug when mesh is invisible (Fast-64#625) * [SM64] Fix rotation bug when mesh is invisible * lol * rewrite based of https://blender.stackexchange.com/a/159540 * ahem * something for yanis * bpy.context.view_layer.update() is a death sentece * someone forgot about armatures * [OoT] Add new Animated Materials types (Fast-64#623) * initial implementation for extended types * add note for multitexture type * implement trigger event manager * fixed legacy type issues (I think) * added camera params * details * format and use enum names/array_count * bugfixes * other fixes * updated docs and added item enums * small note about multitextures * improvements and add color switch type * be more descriptive on the action type stuff * add important note about texture references * [OoT] Some CS export fixes and improvements (Fast-64#624) some cs export fixes/improvements * [SM64] Fix custom color argument (Fast-64#628) Also make it easier to read under c exports * [SM64] Fix uses_env_fx missing or (Fast-64#629) * [OoT] Always consider global.h existing for legacy version (Fast-64#631) fix legacy * Fixed local view issue (Fast-64#635) fixed local view issue * [OoT] Fixed collision exporter not cleaning up duplicates (Fast-64#639) fix issue 604 * [SM64] Fix skip act selector (Fast-64#644) change act selector skip to export to bottom of function * [SM64] Don't use room export logic for switch nodes in object exports (Fast-64#641) add check before using room export logic for switch nodes * [Codebase] New applyRotation function was repeating the rotation if multiple of the same object (Fast-64#648) [Codebase] applyRotation was repeating the rotation if multiple of the same object WHO THOUGHT HAVING TWO OF THE SAME OBJECT IN THE LIST WAS A GOOD IDEA TO BEGIN WITH. Fixes Fast-64#638 * [SM64] Make table operators from action inspector be more descriptive (Fast-64#649) Fixes Fast-64#647 * Update readme to reflect compatibility with 5.0 (Fast-64#650) * [SM64] Fix reverts when no draw override (Fast-64#652) * [F3D] Fix final revert deduplication (Fast-64#656) * fix final revert deduplication * use base name * [SM64] Improve type hints for switch override code and fix (Fast-64#654) * [SM64] Improve type hints for switch override code and fix * some more fixes make sure no dl ref is using the main draw when removing, make a find draw by name function (was gonna use it in the else but ended up just removing the ref since its not needed, i dont think the ref for already instanced nodes is needed but ill trust whoever wrote that). * remove graph argument * [OOT] clean up getOoTRotation and remove broken assert (Fast-64#658) * importer (kinda) * ui cleanup and flipbook support * texture name * dl exporter * [Codebase] Implement early blender 5.0 support (Fast-64#657) * [Codebase] Implement early blender 5.0 support This fixes mesh exports, material warnings and implements action slots into sm64 * casually fix oot, oops * safe get_attr * material presets added material presets for decal texture, tunic color shaded texture and tunic color environment mapped * matrix path + calldisplaylist menu + default settings * default microcode * DPSetEnvColor fix * new rest pose * dark link import mode * dark link import scale fix * Update constants.py * Update constants.py * Bump bl_info version to v2.5.0 (Fast-64#659) * Update Blender version requirement in README (Fast-64#660) Should've probably added this before release but I totally missed it.. * Fix <4.5 (Fast-64#661) * segcall fix * remove _mesh from dl import names does not effect skeleton imports * tlut name + count field * Update f3d_material.py * is vanilla texture checkbox * texture internal path option * Update f3d_gbi.py * woops * white env color for tunic presets * Update f3d_material_presets.py * Update f3d_gbi.py * MM exporter (BETA) dont actually use this yet it needs work * soh path fix * internal path consistency * temporarily removed other game categories * xml material exports for mm skeletons * Fast64 2.5.1 merge updates the plugin to match fast64 2.5.1. now supports blender 5.0 * MM Tab * mm import modes (except human as of now) * mm human link importer * default settings * remove kokiri sword hilt stray geometry from mm human link import * copy removal * per object matrix path + calldisplaylist * Update operators.py * Update f3d_gbi.py * file path export oversight fix * mm preset fix * FImageKey fix attempt * TLUT Exporter * Update f3d_gbi.py * addon updater * DPLoadTile fix * is vanilla texture for 2ship exports * texture internal path on mm exports * DPLoadTile fix MM * remove old unused f3d exporter * export path fix * name change * Fast64 2.5.2 merge some support for new decomp asset system, remain on older decomps however because link dl's cant be imported on latest decomp yet * merge Fast64 pr Fast-64#680 decomp new asset system support. git checkout no longer necessary * transparent export fix * Update f3d_gbi.py * change importer to not append objects/ * multi-material tlut sharing * flipbook shared tlut fix * Revert "change importer to not append objects/" This reverts commit f640727. * Export tile scroll data in SOH XML format FMaterial to_soh_xml was not exporting tile scroll data (tex0/tex1 tile_scroll properties) to XML, causing multitexture scrolling to fail when exporting from Fast64 to SOH. Added to_soh_xml methods to FSetTileSizeScrollField and FScrollData to export TexScroll XML elements, and modified FMaterial to_soh_xml to include scroll data when present * Update functions.py * fix human link mm import * mm xml exporter * mm xml exporter bone name replacement * oot link import scale fix * import rest pose cleanup * remove lod skel from imports * dynamic cosmetics editor implementation * add objects/ to default export path entry * Revert "Merge branch 'main' into hm64" This reverts commit 27756e6, reversing changes made to 52b836a. * repoint addon updater --------- Co-authored-by: Lila <lilaa3public@gmail.com> Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> Co-authored-by: fig02 <fig02srl@gmail.com> Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> Co-authored-by: Gregory Heskett <gheskett@gmail.com> Co-authored-by: Scut <6765126+jesusyoshi54@users.noreply.github.com> Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> Co-authored-by: CDi-Fails <cdifails@gmail.com> Co-authored-by: Sauraen <sauraen@gmail.com> Co-authored-by: Yanis002 <Yanis002@users.noreply.github.com> Co-authored-by: Anoliah <173389381+Anoliah@users.noreply.github.com> Co-authored-by: Graham Harper <GrahamBenHarper@users.noreply.github.com> Co-authored-by: Nokaubure <ivansoto.80@gmail.com> Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com> Co-authored-by: LucretiaArc <11419416+LucretiaArc@users.noreply.github.com> Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
Wouldn't it be funny if this was approved, just like, instantly
Based on prs: #449 , #393, #450
Fully rewriten animation exporter and importer, with some code I'm proud of and some code I probably kept from a year ago (be harsh as needed)
anim_test_impor_allt_script.py for testing all import presets
TODO (up for review because code is "done" (as in if I keep trying to find issues on my own for the next months I'll cry)):