Commit Graph

579 Commits (master)

Author SHA1 Message Date
Alexei Kotov 2edf3399e2 Modernize extra data records 1 year ago
Alexei Kotov 8a7e8a89ac Modernize Bethesda Havok records 1 year ago
Alexei Kotov bb6e008801 Modernize dynamic effects 1 year ago
Alexei Kotov 2e847a12c4 Modernize NiSourceTexture and BSShaderTextureSet 1 year ago
Alexei Kotov fb8ead2bd4 Rename nif/controlled to nif/texture 1 year ago
Alexei Kotov 4a88726aba Move particle modifiers into a dedicated file 1 year ago
Alexei Kotov 1d05aa2e37 Modernize particle modifiers 1 year ago
Alexei Kotov f8b2967dab Alphabetize NIF record type list 1 year ago
Alexei Kotov 4140f9da3c Reorganize the list of recognized NIF records 1 year ago
Alexei Kotov 4e156f2a7d NIFStream: improve handling of ranges and aligned types 1 year ago
Alexei Kotov 57144accf6 Phase out NIFStream::get[Types] 1 year ago
Alexei Kotov e7bbfed1fd Read BSTriShape bounds into array 1 year ago
Alexei Kotov 6dca3e68a6 NIFStream: don't read vectors of zero length 1 year ago
Alexei Kotov d078907dcb NIFStream: rewrite loading for everything
Replace overloading with read() template specializations for every type that needs specific handling
Make use of the new read() or get() in all methods
Move complex string-related methods to implementation
1 year ago
Alexei Kotov ce13f05187 NIFStream: clean up comments 1 year ago
Alexei Kotov e8f9a918ae NIFStream: use the right function for readArray 1 year ago
Alexei Kotov 4f549c267f NIFStream: rename input stream and file methods
To conform to modern style conventions
1 year ago
Alexei Kotov 62d643f668 NIFStream: Drop LittleEndian from reading methods
This is just noise. We don't clarify reading endianness for any other file format.
1 year ago
Alexei Kotov aed440ce64 Clean up error handling in NIFStream reading
No particular reason to introduce is_arithmetic specifically for 16-bit floats, there's no significant code duplication
Bypassing getBoolean() could be error-prone for records that are shared between pre-4.2 and post-4.2 formats
1 year ago
Alexei Kotov ee7accf3bd Don't read affected nodes for 10.0.1.0 NiDynamicEffect 1 year ago
Alexei Kotov baefff323c Make some NIF loading messages less confusing 1 year ago
Alexei Dobrohotov de50f30645 Read a couple of Bethesda-specific controller records
BSMaterialEmittanceMultController
BSRefractionFirePeriodController
BSRefractionStrengthController
1 year ago
psi29a c290754077 Revert "Merge branch 'loadSSEAlchemyTable' into 'master'"
This reverts merge request !3267
1 year ago
Petr Mikheev 0487bf95d1 Merge branch 'coverity49' into 'master'
Fix some Coverity warnings

See merge request OpenMW/openmw!3286
1 year ago
elsid dd54857610
Add missing array include 1 year ago
Andrei Kortunov d8ec78d732 Fix some Coverity warnings 1 year ago
alekulyn d2896945e8 Load SSE alchemy table 1 year ago
psi29a 466b2f1b74 Merge branch 'mantlingtalos' into 'master'
Copy triangle data from NiSkinPartition, a.k.a. SKYRIM TREES

See merge request OpenMW/openmw!3235
1 year ago
Alexei Kotov 3f252eab5d Copy triangle data from NiSkinPartition 1 year ago
Alexei Kotov d6e420fb48 Handle BSShader specular flag 1 year ago
psi29a 62ef209185 Merge branch 'readingbooksbutnotquite' into 'master'
Read bhkLimitedHingeConstraint

See merge request OpenMW/openmw!3254
1 year ago
psi29a 686281d276 Merge branch 'helgenkeepcalm' into 'master'
NIF additions relevant to Helgen Keep

See merge request OpenMW/openmw!3252
1 year ago
Alexei Kotov 6b6a3bcfca Make decal rendering more accurate for Skyrim models, reducing Z-fighting 1 year ago
Alexei Kotov 6c4957fe4a Read bhkLimitedHingeConstraint 1 year ago
Alexei Kotov d2c797aee9 Read BSDamageStage 1 year ago
Alexei Kotov 5a3dce160c Read NiBoolTimelineInterpolator 1 year ago
Alexei Kotov 4265524ad5 Read BSRangeNode and BSBlastNode 1 year ago
Alexei Kotov fa39f04a3a Read BSBehaviorGraphExtraData 1 year ago
Alexei Kotov e710e94304 Read BSLightingShaderPropertyColorController 1 year ago
Alexei Kotov c34157fc28 Fix bhkConstraintMotorCInfo loading 1 year ago
psi29a 5bc06b3678 Merge branch 'bhkconstraint' into 'master'
Read bhkRagdollConstraint and bhkHingeConstraint

See merge request OpenMW/openmw!3231
1 year ago
Alexei Kotov 65fe89d8af Read NiTextureTransformController 1 year ago
Alexei Kotov ed8fd81714 Don't mess with A/B hardcoding in constraints 1 year ago
Alexei Kotov eb3e762c50 Read bhkHingeConstraint 1 year ago
Alexei Kotov 83be42893d Read bhkRagdollConstraint 1 year ago
Alexei Kotov 723f5c58e1 Add bhkConstraint 1 year ago
Alexei Kotov d8f50553af Move Skyrim shader property controllers to controllers 1 year ago
alekulyn b085a52681 Add template Nif record 1 year ago
alekulyn 4b90352c2f Add RC value to BSLightingShaderPropertyFloatController and change the revelant RC value in niffile 1 year ago
alekulyn 589726d4f8 Enchanting table fully ready 1 year ago
alekulyn ed532b5aca Add BSEffectShaderPropertyFloatController record reading 1 year ago
alekulyn 7ea2ea96b6 Read new nodes pt1 1 year ago
psi29a d9027f7eef Merge branch 'falloutfalloffnthtimesthecharm' into 'master'
BSEffectShader/NoLighting fixes

See merge request OpenMW/openmw!3211
1 year ago
Alexei Dobrohotov 52a16e0e93 BSEffectShader/NoLighting fixes
Don't hijack BSShader::NoLighting for BSEffectShader functionality
(Fallout meshes break if you use the actual emissive color as a base color)
Don't use falloff for textureless NoLighting objects
Use falloff flag for BSEffectShader
1 year ago
alekulyn 74aa7b947a Load BSTriShape NIF nodes 1 year ago
alekulyn 683fb0a342 Templated nif reader function modelled after cc9cii's reader 2 years ago
alekulyn dc860ca302 Load BSInvMarker NIF nodes 2 years ago
Petr Mikheev 788a4d32aa Handle DoubleSided and TreeAnim flags in BSLightingShaderProperty. 2 years ago
Petr Mikheev e74161ea8e Merge branch 'slashrslashmarijuanaenthusiasts' into 'master'
Improve Skyrim tree loading (limited)

See merge request OpenMW/openmw!3054
2 years ago
Alexei Dobrohotov a983977e6a Fix NiSkinData loading for >4.2.1.0 2 years ago
Alexei Dobrohotov 1b5e904285 Read BSMultiBound et al. 2 years ago
Evil Eye 9728024978 Replace compare with more idiomatic methods 2 years ago
Alexei Dobrohotov 3e8a9d1de4 Read BSTreeNode, handle as NiNode 2 years ago
Petr Mikheev 493858127a Drop NIF root node transformation for Skyrim models the same way as for Morrowind models. 2 years ago
Alexei Kotov d8dad79195 Read bsLeafAnimNode 2 years ago
Alexei Kotov 9618a465ce Read bhkCompressedMeshShape 2 years ago
Alexei Kotov fc6bc90c3d Read BSFurnitureMarkerNode 2 years ago
Alexei Kotov 2de81738c1 Implement the basics of BSEffectShaderProperty 2 years ago
Alexei Kotov 99aa90f90c Rewrite NiVertexColorProperty 2 years ago
Alexei Kotov d39127cc3d Add NiTriBasedGeomData abstraction 2 years ago
psi29a de2bd6d802 Merge branch 'nistringpalette' into 'master'
Fix NiStringPalette loading again

See merge request OpenMW/openmw!2703
2 years ago
Alexei Kotov a4ddf443ed Fix NiStringPalette loading 2 years ago
Alexei Kotov c8430ee6c8 Clean up fillTriangleMesh for NiTriStrips 2 years ago
psi29a a41cbfb349 Merge branch 'candles' into 'master'
Read NiBlendInterpolator records, fill in NiControllerManager fields

See merge request OpenMW/openmw!2700
2 years ago
elsid 2c43a8558a
Add option to disable debug log for unsupported nif files
It becomes quite extensive and not very useful when loading oblivion content
files.
2 years ago
Alexei Kotov d7834c43e5 Fill in NiControllerManager fields 2 years ago
Alexei Kotov 091fcd837e Read all the NiBlendInterpolator record types 2 years ago
Alexei Kotov 7ecf018743 Add NiBlendInterpolator 2 years ago
Alexei Kotov 41d6ccd3f6 Read NiDefaultAVObjectPalette 2 years ago
psi29a 5f9332751c Merge branch 'roottrafo' into 'master'
Don't discard root node transformations for Gamebryo meshes

See merge request OpenMW/openmw!2697
2 years ago
Alexei Kotov b14d1f0c6b Don't discard root node transformations for Gamebryo meshes 2 years ago
Alexei Kotov 8ebdd1e4a5 Fix material data loading for 10.0.1.0 2 years ago
Alexei Kotov 115c30a573 Read bhkConvexTransformShape 2 years ago
Alexei Kotov 9f28a26b25 Read NiSequence/NiControllerSequence 2 years ago
jvoisin 3cbf1dc042 First pass with include-what-you-use 2 years ago
elsid 06f7e8088e
Check for negative record list length 2 years ago
elsid 0688b6de40
Separate record list reading from its state
To make it possible to set record list state independently from reading NIF
file.
2 years ago
elsid c338c1e5d3
Add Nif::FileView as read only interface for Nif::NIFFile
To make sure interface is scoped to what users require.
2 years ago
elsid f2fb3d6de8
Separate NIFFileReader from NIFFile
NIFFile might not always be created from a file or stream containing NIF data.
Basically there are 2 different responsibilities for this class:
1. Read NIF file
2. Provide input for nifosg and bulletnifloader.

Remove no longer needed NIFFileMock since the state of NIFFfile can be
initialized independently from reading NIF file.
2 years ago
elsid b39ccbeeef
Remove NIFFile::warn and NIFFile::fail functions
These functions use NIFFile only as context, they are not really a part of
either reading nor state invariant. And they only confuse reader because it's
not immediatelly obvious that no code is executed after fail.
2 years ago
clang-format-bot ddb0522bbf
Apply clang-format to code base 2 years ago
Alexei Kotov 7aee22be91 Further controller updates
Correct NiMaterialColorController base class
Load everything in NiGeomMorpherController
Make a guess at how weighted interpolators might be supposed to work like
2 years ago
Alexei Kotov e2ed313389 Don't load keys for Gamebryo morphs 2 years ago
psi29a d1c79fa8d1 Merge branch 'pre_clang_format_fixes_2' into 'master'
Fixes before applying clang-format 2

See merge request OpenMW/openmw!2401
2 years ago
Alexei Kotov 482de23893 Streamline NiInterpController handling 2 years ago
elsid 410a2881fe
Add comma to the last array element to prevent putting multiple elements on a single line 2 years ago
Project579 2df8bfed25 Fix build errors after rebase against master due to large amount of changes. 2 years ago
Project579 a13709c510 Replace implicit convertions from std::filesystem::path to std::string with correctly converting functions. 2 years ago
Project579 e5c417c968 Make sure all paths are passed as std::filesystem::path instead of std::string where possible. 2 years ago
Alexei Kotov f17b1cd7ab Load bhkCapsuleShape and bhkSphereShape 2 years ago
Alexei Kotov 44fbb5cdc3 Read NiMultiTargetTransformController 2 years ago
Alexei Kotov 8df0587793 Reformat NIF record type mapping 2 years ago
Alexei Kotov 126090bdc5 Load NiBillboardNode mode field 2 years ago
psi29a 5ee4ce1232 Merge branch 'nipixeldata' into 'master'
Support more NiPixelData formats (feature #6945)

Closes #6945

See merge request OpenMW/openmw!2290
2 years ago
Alexei Kotov edbd05a3f7 Support more NiPixelData formats (feature #6945) 2 years ago
elsid cc8c7002ea
Cleanup components includes 2 years ago
psi29a bb9884c024 Merge branch 'split_stringops' into 'master'
Split components/misc/stringops.hpp into multiple headers

See merge request OpenMW/openmw!2233
2 years ago
elsid f99ed6f1db
Split components/misc/stringops.hpp into multiple headers
Replace all ciEqual overloads with one having std::string_view as argument.
2 years ago
Alexei Kotov 014de72644 Use NiParticleSystemController's color for the initial particle color 2 years ago
Andrei Kortunov c36c28e8f9 Move NIF implementation to cpp files 2 years ago
elsid 6c8ed4d19c
Move Files::IStreamPtr alias to a separate header
To avoid transitive include of Windows.h all over the engine.
2 years ago
glassmancody.info 0954597fa7 fix typo with wrong flags in particle nifloader 3 years ago
elsid bef15edf0b
Remove redundant ostream, istream, iostream and sstream includes
* Replace by std::to_string and operator+ where possible.
* Move the code requiring to include <sstream> from .hpp to .cpp files.
3 years ago
Alexei Kotov e673f9fa76 Clean up NIF flags 3 years ago
Alexei Kotov e6f7a2f1ef Correct NiBoundingVolume loading 3 years ago
cody glassman 72fdf40e06 better support for particle arrays when spawning at node positions 3 years ago
elsid 94c1d0cced
Use unique_ptr to store istream 3 years ago
fredzio d05a2facf3 Handle NCC flag in Nif files. Objects with this flag will collide only with camera.
Expose objects with NC flag to be used by Lua mods.
3 years ago
Wolfgang Lieff 373776170d refactor for NiFltAnimationNode 3 years ago
Bret Curtis 0db5415976 refactor to use mInternal, support Flag_Reverse and updated changelog/authors.md 3 years ago
Wolfgang Lieff ead73fce31 initial NiFltAnimationNode support 3 years ago
Alexei Dobrohotov c28f997c87 Make NiPlanarCollider finite-size 3 years ago
Alexei Dobrohotov 9d8f6064a1 Detail the unused parts of controlled.cpp defs 3 years ago
Alexei Dobrohotov 54df5031b7 Add XYZ rotation axis order support 3 years ago
Alexei Dobrohotov 76ba5025e3 Clarify root node transformation discard 3 years ago
psi29a b011809056 Merge branch 'master' into 'sort_me_baby_one_more_time'
# Conflicts:
#   components/nif/niffile.cpp
3 years ago
elsid e1fe501013
Use proper type for Record::recType 3 years ago
elsid 283b68025c
Avoid possible race condition on NIFFile::sLoadUnsupportedFiles
Its value is written from the main thread but other threads read it.
3 years ago
elsid fbd95516f4
Repalce raw for-loops by corresponding algorithms 3 years ago
elsid 082810f924
Store record type as a part of construct function type 3 years ago
elsid d097c16206
Use unique_ptr to manage nif record lifetime 3 years ago
glassmancody.info 712107de2d nisortadjust support 3 years ago
Alexei Dobrohotov 85053941b3 Properly postprocess NiSortAdjustNode 3 years ago
glassmancody.info 88f02913d5 use vertex emitters on array particle controllers when appropriate 3 years ago
elsid 3f14011087
Support multiple parents for NIF nodes
Choose a parent base on which node is used to iterate over children nodes.
This leads to duplicate handing of child nodes. A node will be handled so many
times how many parents it has.

For example:
p1 p2
 \ /
  c

Will be handled as:
p1 p2
|  |
c  c

If c has children they will be handled X times c is handled.
3 years ago
Alexei Dobrohotov b5a7ad6d62 Fix multilayer parallax parameter reading 3 years ago
Alexei Dobrohotov 9b2978f143 Rehash morph loading rehashing 3 years ago
Alexei Dobrohotov 26dfce1114 Rehash key group and morph loading (bug #6517) 3 years ago
psi29a 59ab947f3b Merge branch 't800' into 'master'
Keep only one '\0' in NIF strings (bug #6473)

Closes #6473

See merge request OpenMW/openmw!1458
3 years ago
psi29a 6c7dc2d72f Merge branch 'assorted' into 'master'
Load NiSortAdjustNode and NiAccumulators

See merge request OpenMW/openmw!1396
3 years ago
Alexei Dobrohotov dd15b30a27 Keep only one '\0' in NIF strings (bug #6473) 3 years ago
elsid a665a38aca
Use MurmurHash3_x64_128 for file hash 3 years ago
Alexei Dobrohotov 63ea57e9cf Load NiSortAdjustNode and NiAccumulators 3 years ago
Alexei Dobrohotov 50b90a594d Loading and basic handling of BSLightingShaderProperty 3 years ago
Alexei Dobrohotov d347f8f4f0 Fix build 3 years ago
Alexei Dobrohotov 25f4d05c2e Load bhkRigidBody 3 years ago
Alexei Dobrohotov c01fff280a Load bhkConvexVerticesShape, bhkBoxShape, bhkListShape 3 years ago
Alexei Dobrohotov 83aa96e38f Load a bunch of triangle strip-based Havok records 3 years ago
Alexei Dobrohotov e7cc76bba2 Load bhkMoppBvTreeShape 3 years ago
Alexei Dobrohotov 59ce00f742 Refactor all present Bethesda Havok 'support' 3 years ago
psi29a 41bd20e358 Merge branch 'bullet_shape_hash' into 'master'
Store BulletShape source file name and content hash

See merge request OpenMW/openmw!1379
3 years ago
elsid d7041613ef
Store BulletShape source file name and content hash 3 years ago
Alexei Dobrohotov cc4c96d0f1 Follow global naming convention for new records 3 years ago
Alexei Dobrohotov 6e5b45453d some physics stuff idk 3 years ago
Alexei Dobrohotov 6de9b49d3d Remove an empty line 3 years ago
Alexei Dobrohotov 923756b407 Load NiControllerManager 3 years ago
Alexei Dobrohotov 41097352a8 Load BSDismemberSkinInstance 3 years ago
Alexei Dobrohotov 5571099147 Load NiCollisionObject and bhkCollisionObject 3 years ago
Alexei Dobrohotov 9500afaa5a Load BSFurnitureMarker 3 years ago
Alexei Dobrohotov 66a1adc31e Handle NiExtraData *properly* 3 years ago
Alexei Dobrohotov d5ab6e40ab Handle NiExtraData 3 years ago
jvoisin aec3c74fa5 Sprinkle some [[noreturn]] where possible 4 years ago
Dobrohotov Alexei 19f0b80983 Improve null root handling 4 years ago
elsid 87ada56edd Various fixes for niftest 4 years ago
Andrei Kortunov 696cf9ab05 Extend variables range to avoid integer overflow 4 years ago
Alexei Dobrohotov 2fdbe9b3f6 Handle BSShader[PP/No]LightingProperty 4 years ago
Andrei Kortunov a22f6b24d5 Init animation key struct before usage 4 years ago
Petr Mikheev eaaa2f4a1c Use misc/endianness.hpp in components/nif/nifstream 4 years ago
Andrei Kortunov 33648313a6 Initialize variables 4 years ago
Andrei Kortunov 801e2d6ad0 Avoid to use uninitialized variables 4 years ago
Alexei Dobrohotov 1e6156e04a Turn all NIF records into structs 4 years ago
Alexei Dobrohotov 085ea44af5 Add BSShaderLightingProperty abstraction 4 years ago
Alexei Dobrohotov c0b9823372 Read BSShaderProperty and handle NiGeometry properties 4 years ago
Alexei Dobrohotov 42226533d8 Handle BSLODTriShape
Its levels of detail are currently not handled
4 years ago
Alexei Dobrohotov 8fd45d85ec Unify NiGeometry/NiGeometryData handling 4 years ago
Alexei Dobrohotov 5310dd6807 Clean up particle vertex handling 4 years ago
Alexei Dobrohotov 1c83e4936d Read BSShaderTextureSet and NiColorInterpolator
Accept boolean-based and 4D vector-based NiInterpolators in ValueInterpolator constructor
4 years ago
Alexei Dobrohotov db9c174ca8 Make NIF particle node handling more generic 4 years ago
Alexei Dobrohotov df9667e923 Read NIF bounding volume data correctly 4 years ago
Alexei Dobrohotov 117697ea22 Fix NiStringPalette loading 4 years ago
Alexei Dobrohotov a46699fb1e Handle NiGeomMorpherController interpolator list 4 years ago
Alexei Dobrohotov f3f5dcb016 Read a few more NIF types
NiFloatInterpolator, NiPoint3Interpolator, NiTransformInterpolator, NiBoolInterpolator
Update a few existing controller records
Update NiSkinInstance
4 years ago
Alexei Dobrohotov c857588ee9 Remove NIFFile settings manager dependency 4 years ago
Alexei Dobrohotov 1d07361f08 Read a few more NIF types
BSXFlags, NiTransformData, BSBound, BSFadeNode, bhkBlendController
4 years ago
Alexei Dobrohotov a38c629425 Read NiSkinPartition 4 years ago
Alexei Dobrohotov afea11b70a Read NiStringPalette and NiBoolData 4 years ago
Alexei Dobrohotov 7e63afdecf Allow loading arbitrary NIF files 4 years ago
Alexei Dobrohotov 4fc5e22e9e NIF fixes and cleanup
Get rid of NodeIndexHolder
Use unsigned 32-bit type for NIF record index
Fix calculation of the number of UV sets
4 years ago
Andrei Kortunov 8ca3c3b123 Mark overrided methods by override keyword 4 years ago
Alexei Dobrohotov 05cd005b30 Fix NiTriStripsData loading 4 years ago
Alexei Dobrohotov df1014303d Add more generic extra data NIF types 4 years ago
Alexei Dobrohotov 0d02a3392a Clean up 4 years ago
Alexei Dobrohotov e7c37f21b7 Add NiFloatInterpController abstraction 4 years ago
Alexei Dobrohotov 29ccb09da5 Introduce some extended NIF definitions 4 years ago
Alexei Dobrohotov 4e22c2687f niffile.cpp cleanup 4 years ago
Capostrophic aa131262ea Implement quadratic interpolation for scalars and vectors 4 years ago
Bret Curtis 0d1b7fd3f0
Merge pull request #2908 from Capostrophic/uvsets
Remove 63 UV set limit
5 years ago
Capostrophic 6f94848dec Remove 63 UV set limit (now 65535) 5 years ago
Capostrophic 7aca18f92b Handle NiLines (feature #5445) 5 years ago
Capostrophic b665fed8f2 Introduce NiGeometry abstraction 5 years ago