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

Release v2.0.0dev7 changes to Master #201

Open
wants to merge 863 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
863 commits
Select commit Hold shift + click to select a range
313cf4d
[NifModel] Improve updateHeader
hexabits Apr 28, 2016
fd2fdfa
[NifModel] Clean up array updating
hexabits Apr 29, 2016
95dee03
[FO4] Shader .prog fixes
hexabits Apr 30, 2016
b0b0e74
[GL] TexCache file watcher fixes
hexabits May 2, 2016
aab2e09
[NifModel] Loosen signal restriction
hexabits May 3, 2016
9e91704
[GL] Prevent multiple successive mesh recompiles
hexabits May 3, 2016
5c8b25c
[GL] Fix potential crash
hexabits May 3, 2016
31a704b
[NifModel] Item data flags
hexabits May 3, 2016
a80ed27
[NifModel] Condition invalidation fix
hexabits May 4, 2016
e18c3f5
[Build] Remove ICU library copying
hexabits May 4, 2016
90e30c5
[NifExpr] Remove QRegExp debug
hexabits May 5, 2016
87f2d85
[NifTreeView] Redo BSShaderTextureSet auto-expand
hexabits May 8, 2016
43ffa5d
[Fix] Set current directory for application
hexabits May 8, 2016
67bce54
[GL] Move to #version 130
hexabits May 11, 2016
f8bf089
[GL] AMD shader fix
hexabits May 11, 2016
9582f38
[GL] Intel shader fix
hexabits May 11, 2016
15bbea8
[GL] Shader .prog typo fix
hexabits May 11, 2016
b9b4020
[GL] Intel Shader Fix Pt2
hexabits May 12, 2016
579877b
[UI] Default layout changes
hexabits Jun 6, 2016
e257858
[UI] Shortcut Changes
hexabits Jun 6, 2016
cdeddd4
[NifModel] More aggressive invalidation
hexabits Jun 27, 2016
6ff7309
[NifModel] Faster link updates
hexabits Jun 27, 2016
e0f1d6b
[UI] Improved UIntSpinBox
hexabits Jul 14, 2016
3b0e5dd
[UI] Copy Transform button in Inspect
hexabits Jul 15, 2016
e8815d8
[GL] Prevent crash from incorrect segment values
hexabits Jul 16, 2016
6ad847e
[NifModel] Init items with no conditions to true
hexabits Jul 17, 2016
882b46c
[Fix] Disable checksum comparisons for now
hexabits Jul 18, 2016
5f82eda
[FO4] Re-enable auto-sanitization for FO4 meshes
hexabits Jul 18, 2016
8a46204
[GL] Fix data change recompile and recenter behavior
hexabits Jul 18, 2016
8fec4d5
[UI] Increase float editor precision
hexabits Jul 18, 2016
2745df5
[NifModel] Changes for ranged for loops
hexabits Jul 18, 2016
5f7d5f7
[Spell] Block Name Sanitization
hexabits Jul 20, 2016
7751a34
[Spell] Import/Export Binary from rows
hexabits Jul 20, 2016
85c840b
[GL] Partial reversion of modelLinked() changes
hexabits Jul 21, 2016
80bc4bb
[Spell] Update Strippify for new XML names
hexabits Jul 21, 2016
ebc4d0b
[FO4] Update UV Editor for new vertex format
hexabits Jul 25, 2016
f8d1201
[FO4] UV Editor update 2
hexabits Jul 26, 2016
4170570
[FO4] Greatly improved rendering
hexabits Jul 27, 2016
d0918fb
[GL] Increase max framerate
hexabits Jul 28, 2016
6e9ccb4
[Spell] Add "Mesh" category to batch() by default
hexabits Jul 28, 2016
416d55a
[UI] Remove Name editing from NifBlockEditor
hexabits Jul 28, 2016
0e9e6ef
[NifModel] removeNiBlock speedup
hexabits Jul 29, 2016
2c32dc5
[NifModel] Remove unused max length setting
hexabits Jul 29, 2016
a065b71
[NifModel] Fix updateLinks crash
hexabits Sep 15, 2016
11da67c
[GL] Add a "not &" operator to .prog expressions
hexabits Oct 18, 2016
ad0acb7
[BSA] Added LZ4 lib
hexabits Oct 19, 2016
56a30cc
Updated 'About' dialog
hexabits Oct 19, 2016
622336f
[GL] Updated .prog conditions for Skyrim
hexabits Oct 19, 2016
f5b1304
[NifExpr] Division and multiplication for expressions
hexabits Oct 20, 2016
c149b11
[SSE] Registry path updates for SSE
hexabits Oct 24, 2016
a0ac717
[GL] BSESP tex clamp mode update
hexabits Oct 24, 2016
fb1dd32
[NifExpr] Slight cleanup
hexabits Oct 24, 2016
f2077dd
[SSE] Rendering support for NIF version 100
hexabits Oct 25, 2016
75faea9
[SSE] UV Editor update for NIF version 100
hexabits Oct 25, 2016
5469130
Misc Cleanup
hexabits Oct 25, 2016
3abcc9c
[UI] Unchecked Stripify by default in Partition dialog
hexabits Oct 25, 2016
b18e5f9
Version bump
hexabits Oct 25, 2016
7c158e2
[GL] Skyrim shader fixes
hexabits Oct 26, 2016
b91729c
[GL] Merged all shader init into one location
hexabits Oct 27, 2016
150ec13
[GL] Fix out of index in shader properties
hexabits Oct 27, 2016
5aedfc7
[UI] New icon for skinning toggle
hexabits Oct 28, 2016
3abb396
[SSE/FO4] Skinning support, new Skinning toggle
hexabits Oct 29, 2016
f733af7
[Spell] Add Tangent Spaces batch spell
hexabits Oct 29, 2016
b3dc782
[Spell] Triangulate All Strips batch spell
hexabits Oct 29, 2016
ffa2278
[Spell] Remove Unused Strings
hexabits Oct 29, 2016
3bdf582
Minor spell fix
hexabits Oct 29, 2016
593acb6
[GL] Fix texture loading for some Skyrim SE paths
hexabits Oct 29, 2016
ef1a9bc
[SSE/FO4] Skinning fixes
hexabits Oct 29, 2016
45b381b
[Spell] Add and Update Tangent Space improvement
hexabits Oct 30, 2016
0e82628
[UI] NiAVObject and BSXFlags correct flags options
hexabits Nov 7, 2016
df3e28e
[Mem] NifBlock pointer leaks
hexabits Nov 7, 2016
bfe2cd6
[Mem] Spell and SpellBook pointer leaks
hexabits Nov 7, 2016
cbde390
[Mem] SpellBook missed fix in last commit
hexabits Nov 7, 2016
e56feb1
[Mem] Settings dialog leaks
hexabits Nov 7, 2016
231f166
[Mem] QIcon pointer leaks
hexabits Nov 7, 2016
96d7ac2
[Mem] Archive handler leaks
hexabits Nov 7, 2016
a317098
[Mem] Leaks on exit
hexabits Nov 7, 2016
2a7e216
[Mem] Leaks on close
hexabits Nov 7, 2016
d77049c
[Mem] Major NifIStream leaks
hexabits Nov 7, 2016
ad3994b
[Mem] Misc UI leaks
hexabits Nov 7, 2016
227f24c
[BSA] Finally commit accrued changes
hexabits Nov 7, 2016
f32b9ad
[GCC] Fix type punning for strict aliasing rules
hexabits Nov 7, 2016
beb5870
[GL] Clear texture data from RAM after loading
hexabits Nov 7, 2016
1d9d0d6
[Mem] Misc compiler warning fixes
hexabits Nov 7, 2016
458baee
Merge pull request #91 from niftools/dev/2.0
hexabits Nov 10, 2016
7261b0a
Allows for compilation on Linux (#101)
psi29a May 1, 2017
084bd38
Fix "Close All Windows" crash
hexabits May 16, 2017
4ce86c8
Revert back to non-tokens for expression parsing
hexabits May 16, 2017
2cb4f27
[bhk] Sub-shape selection for hkPackedNiTriStripsData
hexabits May 16, 2017
d3e464c
[bhk] Display bhkConvexListShape as well
hexabits May 16, 2017
b9fcc1f
[UV] Hold X or Y to constrain axis of motion
hexabits May 16, 2017
4b6e025
[UV] Remove restrictive window flags
hexabits May 16, 2017
9c02f78
[GL] Hold spacebar as an alternative to MMB
hexabits May 16, 2017
c450727
[GL] Visualize the axis for a node
hexabits May 16, 2017
911985d
[UI] Row copy/paste incl. multi-row paste
hexabits May 16, 2017
ffa2762
[BSA] Cleanup sized string read
hexabits May 16, 2017
585c3b3
[Spell] NiControllerSequence filling
hexabits May 16, 2017
59b9b92
[UI] Helper literal to separate debug/release UI
hexabits May 16, 2017
702bbe5
[XML] Add BTO and BTR files to checker
hexabits May 17, 2017
a73d9e8
Disable migrations for debug builds
hexabits May 17, 2017
1bbda49
Fix README formatting
hexabits May 17, 2017
42d753e
Fix README formatting 2
hexabits May 17, 2017
5031542
Fix README formatting 3
hexabits May 17, 2017
7d63659
[Build] Updates for 5.8+ and misc fixes
hexabits May 28, 2017
ab032ac
[Build] Require C++14, VS2015+, Qt 5.7+
hexabits May 28, 2017
b98b849
Ignore Block Size by default
hexabits Jun 9, 2017
07e92b6
[Spell] Fix None refs in NiDefaultAVObjectPalette
hexabits Jun 9, 2017
480551e
[NifModel] Introduce mixins (specialized compounds)
hexabits May 23, 2017
f64b28d
[NifModel] evalVersion/evalCondition cleanup
hexabits May 26, 2017
375be20
[NifModel] Fix mixin names for nif.xml changes
hexabits Jun 9, 2017
721c8b8
Remove some unused icons
hexabits May 18, 2017
3b852ed
Remove more old icons
hexabits May 18, 2017
652466b
Increased icons 200% for high DPI
hexabits May 19, 2017
dea625f
Moved and removed unused icons
hexabits May 19, 2017
57d1b37
Remove editability of Name column
hexabits May 17, 2017
1501e7e
[Build] Fix cross-platform make target issues
hexabits Jun 10, 2017
6fcdb99
[UI] Default Quaternion rotation to YPR
hexabits Jun 18, 2017
c2039e1
[Spell] spFixInvalidNames fixes
hexabits Jun 18, 2017
8d0a697
[UI] Fix broken right click behavior
hexabits Jun 18, 2017
bb41651
Static Analysis fixes
hexabits Jun 22, 2017
d656dfc
Static Analysis optimizations
hexabits Jun 23, 2017
9e6e23b
[Reorg] Initial file move
hexabits Jun 23, 2017
d26314a
[Reorg] Undo commands to own file
hexabits Jun 23, 2017
885b67c
[Reorg] Rename nifproxy .h/.cpp
hexabits Jun 23, 2017
b9a7cac
[Reorg] Move settings to ui/settingspane
hexabits Jun 23, 2017
0c1d2ec
[Reorg] Remove unused config.h
hexabits Jun 23, 2017
42437a2
[Reorg] NIF stream classes to own file
hexabits Jun 23, 2017
23e97ff
[Reorg] Split main() into own file
hexabits Jun 23, 2017
a7e7e45
[Reorg] Rename expression class to match filename
hexabits Jun 24, 2017
2a17939
[Reorg] Fix debug compilation from 42437a2
hexabits Jun 24, 2017
f5de104
[Reorg] Update file commands for doxygen
hexabits Jun 25, 2017
136aeb2
[Reorg] Include and forward decl cleanup
hexabits Jun 25, 2017
531da58
[Reorg] More include cleanup
hexabits Jun 26, 2017
6256d5f
[Reorg] Organize include paths
hexabits Jun 26, 2017
450f23b
[GL] Fix crash with < 4 bones
hexabits Jun 26, 2017
6da8175
[Build] Fix game detection for 64-bit builds
hexabits Jun 27, 2017
157db70
[UI] Update URLs
hexabits Jul 4, 2017
4b96147
[UI] Icon changes for light/dark
hexabits Jul 11, 2017
dfb4993
[UI] Emit signal for ColorLineEdit
hexabits Jul 11, 2017
a55da49
[UI] New UI Theming
hexabits Jul 18, 2017
0e1cc2c
Change auto to auto& from d656dfc
hexabits Jul 18, 2017
910554b
[UI] Fix checkbox list crash
hexabits Jul 19, 2017
5615e2c
[GL] Correct BGSM priority over flags
hexabits Jul 19, 2017
a4ea44b
[FO4] Expand classification for Editor Markers
hexabits Jul 19, 2017
07f4b5e
[Spell] Update UV naming for nif.xml
hexabits Jul 19, 2017
d35cce5
[UI] Open UV Editor even if there is no texture
hexabits Jul 19, 2017
94dc6e9
[Build] Update AppVeyor and Travis to Qt 5.7
hexabits Jul 21, 2017
6a9b868
[Build] Fix Travis ppa for 5.7.1
hexabits Jul 21, 2017
d6e906b
[Build] Attempt to fix Travis issues
hexabits Jul 21, 2017
7c4102b
[Build] Fix 6da8175 for non-Windows
hexabits Jul 21, 2017
919cd9a
[Build] Support cygwin64 for sed path
hexabits Jul 24, 2017
a10d928
Fix longstanding bug with updating MOPP byte array
hexabits Sep 23, 2017
5d8c33a
Syncing with nifxml 0.9 changes
hexabits Sep 23, 2017
31c3357
[NiMesh] Initial rendering support
hexabits Sep 23, 2017
555880a
Disable Unknown Property warning
hexabits Sep 23, 2017
8d75c96
[GL] Accumulate scene bounds for NiMesh
hexabits Oct 5, 2017
7f57f23
[GL] Support non-Bethesda texture paths again
hexabits Oct 5, 2017
d910f6e
[Spells] Export Template support for SSE and FO4
hexabits Oct 5, 2017
5c2c9d4
[Spells] Transform > Apply fixes, support for BSTriShape
hexabits Oct 6, 2017
8c217ac
[Spells] Face/Smooth Normals support for SSE
hexabits Oct 6, 2017
b6514e4
[Spells] Update Tangents fixes, support for SSE
hexabits Oct 6, 2017
1c8a9e0
Add editorconfig for GitHub tabsize
hexabits Oct 6, 2017
e2b4b76
[GL] Switch to SOIL2, unswap ATI2/BC5 channels
hexabits Oct 11, 2017
6410955
[GL] Add GLI/GLM
hexabits Oct 12, 2017
35d5c44
[GL] Fix palettized NiPixelData texture loading
hexabits Oct 14, 2017
e8b7127
nifxml 0.9 sync, internal BSVertexDesc type
hexabits Oct 15, 2017
f43ec64
[GL] Enable shaders for non-Windows
hexabits Oct 16, 2017
de65fa8
[Build] Cross-platform fixes
hexabits Oct 16, 2017
16a3019
[UI] NifBlockEditor reject changes button
hexabits Oct 22, 2017
1764db8
[Imp/Ex] Slight cleanup, expanded support
hexabits Oct 22, 2017
c8c2a5a
[GL] Reworked FO4 segment vis
hexabits Oct 23, 2017
c9fa4d6
[GL] Fix msn .prog logic from e8b7127
hexabits Oct 23, 2017
d8f2724
nifxml 0.9 sync, Havok constraint fixes
hexabits Oct 28, 2017
d940f0a
[KFM] Fix KFM loading
hexabits Oct 28, 2017
2f524d3
[Spells] Fix strippify for large shapes
hexabits Oct 31, 2017
0895088
[Spells] Expose Copy/Paste Branch and Reorder Blocks publicly
hexabits Nov 8, 2017
97c3466
[GL] Fix potential crash from 7f57f23
hexabits Nov 16, 2017
067a789
[UI] Allow HDR Color3/Color4
hexabits Nov 16, 2017
a2011d4
[Spells] Fix Calc Spring Lengths for nifxml 0.9
hexabits Nov 16, 2017
a728167
[UI] Filter added archives, correct modifyPane behavior
hexabits Nov 16, 2017
eb9f6fc
[BSA] Support sRGB BCn files
hexabits Nov 16, 2017
72797e8
[Build] Cross-platform fixes
hexabits Nov 16, 2017
e81b248
[UI] Undo transactions, support for command merging
hexabits Nov 27, 2017
aee55a7
[GL] Fix rigidbody axes' size and color in select buffer
hexabits Nov 28, 2017
1b471d8
[UI] Prevent Redo from crashing when indices no longer exist
hexabits Nov 28, 2017
aa67419
[UI] Speed up Row Hiding in large flat arrays
hexabits Nov 28, 2017
26b6026
[UI] Auto-expand more items in Block Details
hexabits Nov 28, 2017
3c84be6
[UI] Flat Array/Compound copy/paste
hexabits Nov 28, 2017
12d9bfd
[UI] Link Array sorting
hexabits Nov 28, 2017
097489c
[Build] Correct subdir copy for unix
hexabits Nov 29, 2017
c22c4d2
[GL] New texture loader
hexabits Nov 29, 2017
310eb6e
[GL] Shader improvements for FO4
hexabits Nov 29, 2017
0c996fe
[Imp/Ex] Create shader prop and texset on import for Skyrim
hexabits Nov 29, 2017
6e43e29
[UI] Consolidate error messages on load failure
hexabits Dec 6, 2017
e0853ec
[GL] NiMesh rendering overhaul
hexabits Dec 6, 2017
89b04f7
[GL] Fix rendering issues
hexabits Dec 6, 2017
0885773
[GL] Switch to QVector for some QList
hexabits Dec 6, 2017
e78e064
[GL] Remove old DDS loader
hexabits Dec 6, 2017
7ebc646
[GL] Do not attempt shader usage on non-Bethesda files
hexabits Dec 6, 2017
3c10265
[NIF] 20.3.1.2 custom RTTI hash support
hexabits Dec 6, 2017
b175716
[GL] Skinning Improvements
hexabits Dec 6, 2017
ae5307a
[GL] Correct 20.1+ UV Set selection, 20.5+ Anisotropy for NiTexturing…
hexabits Dec 7, 2017
6e709f5
[GL] Fix loading of non-DDS textures
hexabits Dec 7, 2017
729e4fa
[GL] QList to QVector for texcoords
hexabits Dec 7, 2017
f0c5c60
[GL] 20.1+ NiTri and NiMesh vertex color fixes
hexabits Dec 8, 2017
ed03e37
[GL] Fix regression for non-tangent meshes in b175716
hexabits Dec 9, 2017
718a7ba
[Build] Cross-platform fixes
hexabits Dec 9, 2017
be93847
[KFM] Fix crash with no kfm.xml from d940f0a
hexabits Dec 11, 2017
318ec62
[UI] Fix 6e43e29 to work with Qt 5.10
hexabits Dec 11, 2017
38109b1
[GL] Remove SOIL2
hexabits Dec 11, 2017
c6eb2ad
[Build] GCC and Clang warning reduction
hexabits Dec 11, 2017
c788e1f
[UI] Auto-link pasted NiCollisionObjects on selected block
hexabits Dec 15, 2017
4d6f4b7
nifxml 0.9 sync, manual externalcond for BSVertexData
hexabits Dec 15, 2017
e34252e
[UI] Fix UI painting issues for Qt 5.10
hexabits Dec 15, 2017
a7f9cc6
[UI] Default layout and size tweaks
hexabits Dec 15, 2017
da0d4d3
[UI] Fix keypress crash in Header tab
hexabits Dec 15, 2017
11f2980
[GL] NiMesh rewrite No. 3
hexabits Dec 16, 2017
1db175d
[GL] Stencil and Material property updates
hexabits Dec 16, 2017
aa6b3d9
nifxml 0.9 sync for BSPackedCombined vis
hexabits Dec 16, 2017
c0b44e2
[GL] Per-frame major allocation optimizations
hexabits Dec 16, 2017
5639fce
[UI] LOD slider improvements, FO4 support
hexabits Dec 16, 2017
3f5d849
[UI] Add New Ref feature for "None" Ref links
hexabits Dec 16, 2017
323d67c
[UI] Major block copy/paste overhaul
hexabits Dec 16, 2017
31fc1b2
[GL] Renderer refactor, stage 1
hexabits Dec 16, 2017
c157d97
[UI] Value string changes
hexabits Dec 16, 2017
3b9a3bf
[UI] Make Update Array part of the undo stack
hexabits Dec 16, 2017
947e7c0
[GL] Missing changes for 31fc1b2 and c0b44e2
hexabits Dec 16, 2017
4c8fbf5
[UI] Small buddy() refactor
hexabits Dec 16, 2017
e742ee5
[UI] Support more transforms for spells etc.
hexabits Dec 16, 2017
7bdf5c8
[NifModel] Minor memory and speed improvements
hexabits Dec 16, 2017
df965f6
[GL] Try loading DDS that are smaller than calc size
hexabits Dec 16, 2017
e2823c8
[GL] Provide NPOT check like old loader
hexabits Dec 17, 2017
6798b9a
[GL] Reset shader when shading actions are toggled
hexabits Dec 17, 2017
807290b
VERSION increase
hexabits Dec 17, 2017
82358f9
[UI] Fix crash from missing default in c157d97
hexabits Dec 17, 2017
5ec306b
[UI] Licensing, About cleanup, version string change
hexabits Dec 17, 2017
2fbd0b1
[Build] Update docsys module, NifMopp dll
hexabits Dec 18, 2017
6b5ddca
[GL] Fix skinned NiMesh rendering from 11f2980
hexabits Dec 18, 2017
47b788d
Merge pull request #115 from jonwd7/develop
hexabits Dec 18, 2017
6d80ff0
[GL] Fix transparency bug on selection from 31fc1b2
hexabits Dec 20, 2017
a715fc2
[Imp/Ex] Potential fix for #74
hexabits Dec 20, 2017
129b881
[GL] Fix vis mode turning off shaders from 31fc1b2
hexabits Dec 20, 2017
1eb58de
[UI] Fix crash bug for < 20.1 NIFs
hexabits Dec 21, 2017
df48fc7
[GL] Fix shader issues
hexabits Dec 27, 2017
e0d4472
[GL] Fix partitionless skinning rendering
hexabits Jan 8, 2018
1cef1f4
README update
hexabits Jan 8, 2018
1b69840
[GL] Fix shader issues 2
hexabits Jan 16, 2018
3ac9aaa
[GL] BSShape update shader after texture edit
hexabits Feb 23, 2018
2dad25d
[BaseModel] Prevent crash during save() from corrupting file
hexabits Feb 23, 2018
3a85ac5
Merge pull request #126 from jonwd7/develop
hexabits Feb 23, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
root = true

[*.{h,cpp}]
indent_size = 4
indent_style = tab

[*.{pro,pri}]
indent_size = 4
indent_style = tab

[*.ui]
indent_size = 1
indent_style = space

[*.{frag,prog,vert}]
indent_size = 4
indent_style = tab
65 changes: 56 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,27 +1,74 @@
# generated ones
# Generated
.moc/
.obj/
.qrc/
.ui/
[Bb]in/
[Dd]ebug/
[Rr]elease/
GeneratedFiles/
Makefile
Makefile.Debug
Makefile.Release
nifskope_plugin_import.cpp
moc_*.cpp
qrc_*.cpp
ui_*.h
*.tags

# compiled
# Intermediate
*.o
*.obj
*.bak
*.ilk
*.log
*.tmp

# eclipse project
# Eclipse project
.project
.cproject
.settings

# qtcreator
# Qt Creator
NifSkope.pro.user
.qmake.stash

# binary
# Binaries
NifSkope
NifSkope.exe

# VC build dirs
release
debug
# VC debug file
# VC Project
*.cd
*.filters
*.psess
*.sln
*.sln.docstates
*.suo
*.vcxproj
*.vcxproj.user
*.vcproj
*.vcproj.user
*.vsp
*.vspscc
*.vssscc
*.vspx


# VC Cache
.vs/
ipch/
*.aps
*.cachefile
*.ncb
*.opendb
*.opensdf
*.sdf
*.VC.db
*.VC.VC.opendb

# VC Debug
vc100.pdb

# OS
[Tt]humbs.db
*.DS_Store
14 changes: 10 additions & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
[submodule "docsys"]
path = docsys
url = git://niftools.git.sourceforge.net/gitroot/niftools/nifdocsys
path = build/docsys
url = https://github.com/niftools/nifdocsys.git
[submodule "qhull"]
path = qhull
url = git://gitorious.org/qhull/qhull.git
path = lib/qhull
url = https://github.com/qhull/qhull.git
[submodule "lib/zlib"]
path = lib/zlib
url = https://github.com/madler/zlib.git
[submodule "lib/gli"]
path = lib/gli
url = https://github.com/g-truc/gli.git
43 changes: 43 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
dist: trusty
sudo: required
language: cpp
os:
- linux
- osx
addons:
apt:
sources:
- sourceline: 'ppa:beineri/opt-qt571-trusty'
packages: [
# static analysis
clang-3.6,
# qt5 requirement
qt57-meta-minimal
]
matrix:
fast_finish: true
include:
- os: linux
env:
ANALYZE="scan-build-3.6 --use-cc clang-3.6 --use-c++ clang++-3.6 "
compiler: clang
allow_failures:
- env: ANALYZE="scan-build-3.6 --use-cc clang-3.6 --use-c++ clang++-3.6 "

before_install:
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then sudo apt-get update -qq; fi
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then QT_ENV_SCRIPT=$(find /opt -name 'qt*-env.sh'); source $QT_ENV_SCRIPT; fi
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then brew update; brew install [email protected]; export PATH="/usr/local/opt/[email protected]/bin:$PATH"; fi

install:
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then sudo apt-get install -qq g++-6; fi
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 90; fi

script:
- qmake --version
- qmake -makefile NifSkope.pro
- ${ANALYZE}make -j4

notifications:
email: false
5 changes: 5 additions & 0 deletions CHANGELOG.TXT → CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
== CHANGELOG ==

**NOTE: This changelog is not maintained for prerelease versions**

You may view the changes since 1.1.3 here: https://github.com/jonwd7/nifskope/releases


This is version 1.1.3 of NifSkope.

changes since 1.1.2:
Expand Down
Empty file added CONTRIBUTORS.md
Empty file.
110 changes: 110 additions & 0 deletions DOXYGEN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
Main Page {#mainpage}
=========

[TOC]


Introduction {#intro}
========

%NifSkope is a graphical program that allows you to open NIF files, view their contents, edit them, and write them back out again. It is written in C++ using OpenGL and the Qt framework.

The main application resides in the NifSkope class; rendering takes place via GLView. A central feature of Qt is the [Signals and Slots](http://doc.qt.io/qt-5/signalsandslots.html) mechanism, which is used extensively for communication between classes. A NIF is internally represented as a NifModel, and blocks are referenced by means of QModelIndex or QPersistentModelIndex.

Various functions can be performed on a NIF via the Spell system; this is a good place to start if you want to learn about how a NIF is typically structured and how the blocks are manipulated.


Reading and parsing a NIF {#parsing}
========

The NIF specification is currently described by [nif.xml](https://github.com/niftools/nifxml) and parsed using NifXmlHandler.


Detailed Information {#detailed}
========

- @ref ui_programming
- @ref viewport_details

[Signals and Slots]: http://doc.qt.io/qt-5/signalsandslots.html

<!-- ~~~~~~~ end mainpage ~~~~~~~ -->


@page ui_programming UI Programming

[TOC]

%NifSkope uses [Qt Designer] and [.ui files] to define the layout of most of its UI and uses [Signals and Slots] to allow communication between UI and non-UI code. %NifSkope makes partial use of QMetaObject's [auto-connection] features.

The UI is styled with a Qt-specific subset of CSS dubbed [QSS]. Most of the style is defined in `style.qss` which is installed alongside NifSkope.exe, though stylesheets can also be defined in C++ using QWidget::setStyleSheet().


See also: [Designing a UI].

[Designing a UI]: http://doc.qt.io/qt-5/gettingstartedqt.html#designing-a-ui
[Qt Designer]: http://doc.qt.io/qt-5/qtdesigner-manual.html
[.ui files]: http://doc.qt.io/qt-5/designer-using-a-ui-file.html
[Signals and Slots]: http://doc.qt.io/qt-5/signalsandslots.html
[auto-connection]: http://doc.qt.io/qt-5/designer-using-a-ui-file.html#widgets-and-dialogs-with-auto-connect
[QSS]: http://doc.qt.io/qt-5/stylesheet-reference.html

<!-- ~~~~~~~ end ui_programming ~~~~~~~ -->


@page viewport_details Viewport

[TOC]

The main viewport class is GLView. Each frame is painted to the viewport via GLView::paintGL(). The viewport scenegraph is managed by a Scene class. A scene consists of:

- Node, a physical object in the scene such as NiNode, BSFadeNode, etc.
- Mesh, e.g. NiTriShape
- Particles
- LODNode, BillboardNode
- Property, a property of a physical object in the scene.

Nodes {#nodes}
========

The Node class is the base class for any physical object in a Scene. A Node can have children which are stored in a NodeList. [Properties] are stored with the Node via a PropertyList.


Properties {#properties}
========

The Property class is the %NifSkope analog to NiProperty blocks. Ideally anything that inherits NiProperty in nif.xml should have a Property subclass implementation. Not all Properties require any kind of manifestation in the scene but they are nevertheless encapsulated and tracked by a Property class.


Animation {#animation}
========

Anything that should animate must implement the IControllable interface. To animate an IControllable, you create a Controller. These Controllers are then made a `friend class` in the class which implements IControllable. There are currently very few Controllers implemented when it comes to reaching feature parity with the NIF specification:

| %NifSkope class | NIF Block |
|--------------------------------|----------------------------------|
| KeyframeController | NiKeyframeController |
| TransformController | NiTransformController |
| MultiTargetTransformController | NiMultiTargetTransformController |
| VisibilityController | NiVisController |
| MorphController | NiGeomMorpherController |
| UVController | NiUVController |
| ParticleController | NiParticleSystemController |
| AlphaController | NiAlphaController |
| MaterialColorController | NiMaterialColorController |
| TexFlipController | NiFlipController |
| TexTransController | NiTextureTransformController |

Newer Bethesda NIFs mostly use Bethesda proprietary (BS*) blocks, none of which are currently supported. This includes `BSKeyframeController, BSEffectShaderPropertyFloatController, BSEffectShaderPropertyColorController, BSLightingShaderPropertyFloatController, BSLightingShaderPropertyColorController` to name a few.

To utilize [Controllers] a class must implement IControllable's methods:

- IControllable::clear()
- IControllable::update()
- IControllable::transform()
- IControllable::setController()

[Properties]: @ref Property
[Controllers]: @ref Controller

<!-- ~~~~~~~ end viewport_details ~~~~~~~ -->
Loading