Commit Graph

2209 Commits

Author SHA1 Message Date
Phillip Stephens 7abe527032 Merge pull request #34 from linkmauve/xdg-basedir
Respect the XDG base directory specification
2020-03-03 16:45:08 -08:00
Phillip Stephens 4f045dd0fa Merge pull request #33 from lioncash/transparent
hecl/hecl: Allow CaseInsensitiveCompare to be used with heterogenous lookup
2020-03-03 16:44:55 -08:00
Luke Street 8d8f92c898 Add bintoc --compress 2020-03-02 02:00:49 -05:00
Emmanuel Gil Peyrot 32578f7520 Respect the XDG base directory specification
This helps unclutter the home directory from useless dotfiles, moving
them where they belong.

See https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
2020-02-25 12:29:15 +01:00
Luke Street 051a547c42 Update hecl/extern/boo (MSAN fix) 2020-02-25 02:33:49 -05:00
Luke Street 7afe13b713 Update boo (MSAN fix) 2020-02-25 02:32:58 -05:00
Lioncash eebb25a39c hecl/hecl: Allow CaseInsensitiveCompare to be used with heterogenous lookup
It's quite common to see maps or sets that make use of a string->object
association, usually as <std::string, T>. However, this can result in
inefficient code when performing lookups or indexing, as something like:

std::map<std::string, T> some_map;

...

auto iter = some_map.find("Name");

...

will result in a std::string instance being constructed around "Name",
which is less than ideal.

With a heterogenous comparator, however (such as std::less<>), like:

std::map<std::string, T, std::less<>>

we allow the container to do automatic type deduction and comparisons.
This allows types comparable to the key type to be used in find calls,
etc, without actually needing to construct the key type around the other
type.

The main way to enable containers to perform such behavior is by
defining a type named is_transparent within the comparator type.
2020-02-24 04:31:55 -05:00
Luke Street 4e51c24635 Update hecl/extern/boo 2020-02-21 13:51:19 -05:00
Luke Street 05cd085264 Update boo 2020-02-21 13:51:03 -05:00
Luke Street 5de8275a77 Update hecl/hecl-gui to check Blender 2.81+ 2019-12-22 18:41:42 -05:00
Luke Street 3294047a06 Require Blender 2.81+ 2019-12-22 18:39:24 -05:00
Phillip Stephens 21159e604e
More CThardus 2019-12-14 15:50:29 -08:00
Phillip Stephens 4e5921c952
Update submodules 2019-12-10 20:51:23 -08:00
Phillip Stephens 46c3778bc0 Update athena 2019-12-10 20:50:31 -08:00
Phillip Stephens def854cc61
Update hecl 2019-10-24 22:50:13 -07:00
Phillip Stephens 02d4292179 Add missing brace (where the heck did it go?) 2019-10-24 22:49:41 -07:00
Phillip Stephens 246e233dce
Cleanup CPathFindArea 2019-10-24 22:44:37 -07:00
Phillip Stephens a9dee6e268 Minor string fix 2019-10-24 22:43:45 -07:00
Phillip Stephens bc15ab2157 Merge pull request #32 from lioncash/console
Console: Minor changes
2019-10-24 22:41:08 -07:00
Lioncash a0e6ec0de7 Console: Make State enum an enum class
Makes the enum strongly typed and impervious to implicit conversions.
2019-10-21 01:53:05 -04:00
Lioncash 12d6a5ce05 Console: Make isOpen() a const member function
This member function doesn't modify internal member state, so it can be
turned into a const qualified member function.
2019-10-21 01:49:23 -04:00
Lioncash 78aa42032a Console: Make truncation explicit within proc()
Makes floating-point truncation explicit.
2019-10-21 01:40:34 -04:00
Lioncash 358acfe944 Console: Use std::move within vreport()
Avoids redundant copies when emplacing into the log container.
2019-10-21 01:37:07 -04:00
Lioncash c8eab43489 Console: Make commandExists() a const qualified member function
This doesn't modify internal console state, so it can be turned into a
const qualified member function.
2019-10-21 01:30:19 -04:00
Lioncash deb09550d3 Console: Eliminate redundant strlen call in commandExists()
By using the std::string_view constructor for std::string, we can avoid
the char* constructor, which would require a strlen call in order to
determine the string size. This also allows it to work with
non-null-terminated strings.
2019-10-21 01:28:22 -04:00
Lioncash 96721d96ae Console: Avoid unnecessary copies and lookups within executeCommand()
We can make use of the result of a find() call to avoid performing two
redundant lookups into the command map and also use std::move to avoid
performing potentially reallocating copies.
2019-10-21 01:26:21 -04:00
Lioncash 7fbdf384de Console: Reuse iterator in unregisterCommand()
We can use the result of the first lookup to avoid doing another
redundant lookup to perform the erasure.

While we're at it, we can use std::string's std::string_view constructor
in order to avoid an unnecessary strlen() call.
2019-10-21 01:07:41 -04:00
Lioncash 5d2987588b Console: Use emplace in registerCommand()
Allows avoiding a redundant initial element. We can also remove the
const from the std::function rvalue to allow a std::move to take effect.

We can also use the std::string_view constructor for std::string to
avoid an unnecessary strlen() call.
2019-10-21 01:03:30 -04:00
Lioncash cbd40382bf Console: Convert std::bind to lambda functions
Same behavior, but more efficient than wrapping the function.
2019-10-21 00:53:15 -04:00
Lioncash 23f323b0f7 CVar: Use std::string::empty where applicable
We can use empty() instead of comparing against a default constructed
new instance.
2019-10-19 19:24:06 -04:00
Jack Andersen dfcad01c2f Fix TypedVariant building with MSVC 2019-10-18 15:31:54 -10:00
Jack Andersen 3506ee1796 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2019-10-12 18:54:33 -10:00
Jack Andersen 72fabc9329 Minor blender exception detection bug fix 2019-10-12 18:54:07 -10:00
Phillip Stephens e1990a686e
Update hecl 2019-10-12 07:13:36 -07:00
Phillip Stephens 8a3b19126a Fix shader generation 2019-10-12 07:12:50 -07:00
Jack Andersen 16ca0d24c2 Explicit Asset ID refactor 2019-09-30 21:38:03 -10:00
Jack Andersen 88e68e8aa3 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2019-09-30 21:30:17 -10:00
Jack Andersen 8a73a8ee48 Code style improvements 2019-09-30 21:23:35 -10:00
Lioncash 9138ad691c FourCC: Make rest of interface noexcept where applicable
Makes the interface consistent and allows their use within noexcept
contexts.
2019-09-30 03:13:08 -04:00
Phillip Stephens 6b56f2e6a4 Minor fixes 2019-09-29 08:17:01 -07:00
Phillip Stephens 7fd54effc9 Various fixes and improvements to CVars 2019-09-29 05:44:01 -07:00
Phillip Stephens e80d0319fa Update athena 2019-09-27 20:38:19 -07:00
Phillip Stephens 2a150f2e7f Update athena 2019-09-26 06:54:24 -07:00
Lioncash 72732a1ea7 TypedVariant: Be explicit about athena's Endian type
Allows this code to still compile if the Endian enum is ever changed
into an enum class.
2019-09-20 17:56:15 -04:00
Lioncash 8814ecbc4c TypedVariant: Apply formatting to macros
Applies clang-format to the macros to prevent the changes from being
placed into the following change.
2019-09-20 17:52:28 -04:00
Phillip Stephens 35988aff00 Update athena 2019-09-14 08:46:41 -07:00
Lioncash aaf5bae201 General: Be explicit about athena's Endian type
Allows this code to build if the enumeration is ever changed into a
strongly-typed enumeration.
2019-09-14 10:59:39 -04:00
Lioncash 9901653634 Backend: Make ExtensionSlot's constructor constexpr
These are used within a file-scope lookup table in urde. Without this,
technically those constructors are runtime static constructors.

This allows the compiler to initialize them at compile-time.
2019-09-11 01:52:26 -04:00
Phillip Stephens d13559bf51 Update submdoules 2019-09-10 04:07:31 -07:00
Phillip Stephens b1438a88da Update athena 2019-09-09 04:20:29 -07:00
Phillip Stephens 23dabdaf37 Merge pull request #25 from lioncash/target
ApplicationTools: Link in boo and hecl-light
2019-09-09 04:19:37 -07:00
Phillip Stephens f35e4c27c2 Update submodules 2019-09-08 00:15:48 -07:00
Phillip Stephens 43611bd0b7 Merge pull request #26 from lioncash/enum
General: Be explicit about SeekOrigin type
2019-09-08 00:11:52 -07:00
Lioncash 8bac46508c General: Be explicit about SeekOrigin type
This will make turning SeekOrigin into an enum class a little smoother
without breaking hecl.
2019-09-07 12:33:03 -04:00
Phillip Stephens 7ab3ae5c30 Update athena 2019-09-07 07:07:42 -07:00
Phillip Stephens 822227a1ca Temporary xxhash fixes, update submodules 2019-09-06 23:30:53 -07:00
Lioncash c297c6c7a9 ApplicationTools: Link in boo and hecl-light
Ensures that the include paths are always automatically added to the
shader targets.
2019-09-06 02:10:58 -04:00
Phillip Stephens 6c8ffcddad Update athena 2019-09-05 01:10:05 -07:00
Phillip Stephens b263f29da2 Update athena 2019-09-04 19:37:52 -07:00
Lioncash 5e66bee28c General: Include necessary includes
Ensures all necessary includes are included and also removes headers
that aren't necessary
2019-09-04 19:23:55 -04:00
Jack Andersen c7ffe725ae Update submodules 2019-08-31 11:20:54 -10:00
Jack Andersen 0b30fedef5 Update boo 2019-08-31 11:20:43 -10:00
Jack Andersen cffb56a24e MacOS build fixes 2019-08-31 10:40:07 -10:00
Jack Andersen c180cbd529 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2019-08-31 10:38:33 -10:00
Jack Andersen a434118f27 Update submodules 2019-08-31 10:38:06 -10:00
Phillip Stephens fbb5b86401 Compile fixes 2019-08-31 01:59:38 -07:00
Lioncash 4f19e8623e Project: Eliminate local variable shadowing
Eliminates trivial variable shadowing warnings.
2019-08-30 11:47:18 -04:00
Phillip Stephens 1269cd74c3 Update athena 2019-08-26 16:00:29 -07:00
Phillip Stephens 41d87cf80e Update boo 2019-08-26 15:58:10 -07:00
Phillip Stephens 5a5194dd4a Update Boo 2019-08-25 18:29:01 -07:00
Lioncash 4ca9a57540 hecl/hecl: Remove windows ifdef in CaseInsensitiveCompare
This is technically still usable for non-Windows systems, given there's
nothing directly Windows-specific about the operator overload
2019-08-25 21:22:44 -04:00
Phillip Stephens 3daaeac76b Update boo 2019-08-24 17:58:26 -07:00
Phillip Stephens 34505ea557 Update boo 2019-08-24 14:45:57 -07:00
Phillip Stephens 9725c12c52 Merge pull request #21 from lioncash/move
CVar: std::move listeners within addListener()
2019-08-24 14:43:47 -07:00
Lioncash 3dc10e7473 CVar: std::move listeners within addListener()
std::function is allowed to heap allocate in order to hold any necessary
captures, so we should be std::move-ing instances here in order to avoid
potentially performing reallocations.
2019-08-24 16:27:29 -04:00
Lioncash 6968f8a301 hecl/hecl: Use nullptr where applicable 2019-08-24 16:14:59 -04:00
Lioncash e5a0d657b3 hecl/hecl: Remove pointer casts from GetTmpDir()
We can just make the pointers point to const data, eliminating the need
to cast away const.
2019-08-24 16:04:30 -04:00
Lioncash 40b2e3edde hecl/hecl: Dehardcode sizes where applicable
Queries the source arrays for the size instead of replicating it
elsewhere.
2019-08-24 16:00:49 -04:00
Lioncash 0a6edbad2c hecl/hecl: Tidy up GetSystemLocations()
Converts a define into a constexpr variable, also joins declarations
with assignments where applicable.
2019-08-24 16:00:44 -04:00
Lioncash bc7a6563cf hecl/hecl: Simplify SetThreadRes() 2019-08-24 15:36:35 -04:00
Lioncash 32fec587b5 hecl/hecl: Collapse InProgress() into std::any_of()
Same thing, more straightforward.
2019-08-24 15:32:18 -04:00
Lioncash e96eb4cac6 hecl/hecl: Include relevant headers
Ensures the translation unit includes exactly what it needs.
2019-08-24 15:28:54 -04:00
Lioncash 5e98cb139a hecl/hecl: Convert std::string/std::wstring to views
Gets rid of two static constructors.
2019-08-24 15:23:57 -04:00
Phillip Stephens d39caf54bb Update athena 2019-08-24 00:49:15 -07:00
Phillip Stephens 52f9922820 Merge pull request #18 from lioncash/noexcept
hecl/hecl: noexcept correctness changes
2019-08-24 00:47:45 -07:00
Lioncash 7088235bc4 hecl: Correct fmt formatting specifiers
These should be using {}-style formatting specifiers instead of printf
style. While we're at it, std::move the std::string instances where
applicable to potentially avoid reallocations.
2019-08-24 03:21:16 -04:00
Lioncash a7bd496698 hecl/hecl: Remove pointer casts from Hash constructor interface
The interface accepts const void* as the input type, so there's no need
to explicitly pointer cast the input data.
2019-08-24 02:55:09 -04:00
Lioncash e127fed0fd hecl/hecl: Mark Hash interface as noexcept
These are utilized within some hash implementations, which shouldn't
throw, so these member functions can be marked as noexcept.
2019-08-24 02:52:27 -04:00
Lioncash 09fe937bc3 hecl/hecl: Make hash_combine_impl noexcept
This is used to implement hashes, and since hash implementations
shouldn't throw, these shouldn't as well.
2019-08-24 02:46:47 -04:00
Lioncash f957dd594b hecl/hecl: Mark byte swapping functions as noexcept
These are frequently used within hash implementations, which should be
noexcept by default. Given it doesn't make sense to throw exceptions
from these functions anyways, they can be made noexcept.
2019-08-24 02:46:44 -04:00
Phillip Stephens e12e0057c3 Minor compile fixes 2019-08-23 16:58:15 -07:00
Phillip Stephens ff7e95546b Merge pull request #16 from lioncash/string
hecl/Compilers: Amend minor string related code
2019-08-23 16:36:53 -07:00
Lioncash 2d7dd9bf5b Connection: Collapse emplace_back(), back() pairs
emplace_back() already returns a reference to the constructed member, so
we don't need to query it via back() again.
2019-08-23 14:02:18 -04:00
Lioncash cbcfdcb67a Connection: Eliminate variable shadowing
Amends trivial cases of variable shadowing.
2019-08-23 13:56:11 -04:00
Lioncash 11b3bf0889 Connection: Alphabetize friend class/struct declarations 2019-08-23 13:44:33 -04:00
Lioncash 6492117d60 Connection: Remove <iostream> include
Avoids injecting a static constructor into translation units including
this source file, even if nothing in the source file uses the iostream
facilities.

Instead, we can replace this with an ostream include. While we're at it,
we can make sure we include everything necessary within the source file.
2019-08-23 13:44:30 -04:00
Lioncash 877ca7ad87 Connection: Make use of std::array where applicable
Uses std::array in place of C arrays where not used as a buffer.
2019-08-23 12:44:55 -04:00
Lioncash a3caa28483 Connection: Collapse definition of operator== for Vert
This can be collapsed down to a single tie comparison
2019-08-23 12:32:13 -04:00
Lioncash 8fdd9a15c4 Connection: Collapse VertInBank into std::any_of
Same thing, single line.
2019-08-23 12:26:14 -04:00
Lioncash 5d30a9d7ea Connection: Use nullptr instead of NULL where applicable
Same behavior, stronger typing.
2019-08-23 12:08:08 -04:00
Lioncash 2e16f882d2 hecl/Compilers: Make use of nullptr over NULL
Same behavior, stricter type.
2019-08-23 11:56:37 -04:00
Lioncash d59d453db3 hecl/Compilers: Convert fprintf calls over to fmt::print
Makes the Metal code more consistent with the other compilers. While
we're at it we can also fix accidental printf leftovers within the
existing fmt format strings.
2019-08-23 11:53:39 -04:00
Lioncash 73cf8df409 hecl/Compilers: Convert printf call over to fmt::print
Same behavior, but properly handles the case where the given string_view
may not be null terminated.
2019-08-23 11:49:55 -04:00
Lioncash 3b60cee576 hecl/Compilers: Make name strings constexpr
Same behavior (as of C++17), without the need to duplicate the variable
name.
2019-08-23 11:42:12 -04:00
Phillip Stephens e691b95cbf Merge pull request #15 from lioncash/file
hecl/hecl: Introduce FopenUnique
2019-08-21 23:16:25 -07:00
Lioncash fb9e4df372 hecl: Make use of FopenUnique
Makes use of the introduced API function to eliminate the need to
explicit fclose FILE* instances.
2019-08-22 01:16:48 -04:00
Lioncash 7bb3912d39 General: Make operator bool() explicit where applicable
Makes conversions to bool slightly less error-prone by requiring them to
be explicit in non-obvious contexts.
2019-08-22 01:15:38 -04:00
Phillip Stephens 120ed20bfa Merge pull request #14 from lioncash/string
Connection: Replace std::string _writeStr overload with std::string_view
2019-08-21 20:23:56 -07:00
Phillip Stephens 3ef555dba4 Merge pull request #11 from lioncash/lock
General: Make use of lock deduction guides
2019-08-21 20:23:43 -07:00
Lioncash 9dcf7e7f08 hecl/hecl: Add smart pointer variant of Fopen
Provides a wrapper API over Fopen in order to prevent resource leaks.
2019-08-21 19:28:14 -04:00
Lioncash d00cb36fc2 Connection: Amend clang-format discrepancies 2019-08-21 19:16:46 -04:00
Lioncash ac4858b857 Connection: Replace usages of goto 2019-08-21 19:16:02 -04:00
Lioncash 6c9fdfcbb7 Connection: Replace std::string _writeStr override with std::string_view
Same thing, but usable without the need to construct a std::string
instance for things like string literals.
2019-08-21 18:30:07 -04:00
Lioncash 5d157e97b3 General: Use override where applicable 2019-08-21 18:20:07 -04:00
Lioncash 82109b785d General: Make use of lock deduction guides
Allows dehardcoding the type within the locks.
2019-08-21 17:01:03 -04:00
Phillip Stephens bcfea9a09a Merge pull request #10 from lioncash/cv
CVar: Remove redundant const return for toLiteral() and toWideLiteral()
2019-08-20 19:31:06 -07:00
Lioncash b9e5417a94 CVar: Remove redundant const return for toLiteral() and toWideLiteral()
This can actually inhibit copy elision
2019-08-20 10:15:14 -04:00
Phillip Stephens f9bda234fa Update submodules 2019-08-20 06:57:52 -07:00
Phillip Stephens 138ab07089 Merge pull request #9 from lioncash/cvar
CVarManager: Minor changes
2019-08-20 06:56:24 -07:00
Phillip Stephens 31e9ee50b9 Merge pull request #8 from lioncash/db
Database: Minor cleanup
2019-08-20 06:56:17 -07:00
Lioncash 645f20c308 CVarManager: Deduplicate repetitive names
We can just assign the repeated portion of the expression to a reference
instead of continually re-accessing the same variable, making it nicer
to read.
2019-08-20 06:29:17 -04:00
Lioncash cfced1bf0a CVarManager: Eliminate redundant map lookups
We can simply utilize the iterator of the previous existence check to
access the member instead of hashing through the map again.
2019-08-20 06:23:25 -04:00
Lioncash 4818198e41 CVarManager: Brace multi-line statements
Makes intentions explicit.
2019-08-20 06:10:23 -04:00
Lioncash a16327df68 CVarManager: Use std::any_of for restartRequired()
Same thing, but more concise.
2019-08-20 06:08:12 -04:00
Lioncash a1a18c6816 CVarManager: Use insert_or_assign where applicable
Avoids the need to create an initial entry in the map which is then
overwritten with the value being assigned to it.
2019-08-20 06:06:55 -04:00
Phillip Stephens 3795e0e72c Update boo 2019-08-20 01:08:25 -07:00
Phillip Stephens 6a78383d2a Update boo 2019-08-20 00:34:25 -07:00
Phillip Stephens 5659c46170 Merge pull request #7 from lioncash/override
driver: Minor general cleanup
2019-08-19 23:02:46 -07:00
Lioncash 9b735a853c Database: Silence -Wdocumentation warnings
Amends two Doxygen parameter references.
2019-08-19 23:22:03 -04:00
Lioncash 7635b9c6c1 Database: Remove unused includes
Quite a few includes aren't directly used anywhere within the header
itself. We can remove these to avoid unintentionally propagating them
into other source files.
2019-08-19 23:14:27 -04:00
Lioncash 263c0697bc Database: Use nullptr instead of NULL where applicable 2019-08-19 23:09:41 -04:00
Lioncash 66125c2b3b Database: Convert typedefs into using aliases 2019-08-19 23:08:35 -04:00
Lioncash 93ec114e0c Database: Use [[maybe_unused]] instead of (void)
Same behavior, but without the need to duplicate the variable name.
2019-08-19 23:06:57 -04:00
Lioncash 19f49e071d driver: Use nullptr instead of NULL where applicable
Same thing, but more typesafe, given all NULL is, is a literal 0.
2019-08-19 22:52:35 -04:00
Lioncash 789650d4c0 driver/ToolBase: Convert typedef into using alias
Same thing, but a little nicer to read.
2019-08-19 22:51:07 -04:00
Lioncash f746b30b03 driver: Make tool constructors explicit
Enforces being explicit when constructing instances of these types.
2019-08-19 22:49:27 -04:00
Lioncash 11364cbd53 driver/ToolBase: Make operator bool() explicit
Prevents error-prone conversions to bool.
2019-08-19 22:35:32 -04:00
Lioncash c390f3d489 driver: Add missing override specifiers where applicable
Adds missing override specifiers to enforce correct virtual member
function signatures.
2019-08-19 22:34:15 -04:00
Lioncash d3ac48715f driver/main: Use separate variables for error checking in main()
Avoids reusing the same variable for two different areas of behavior and
uses separately named variables. This can help debugging if the first
condition isn't true, but the tool run condition is true, as it provides
an error count to compare against.
2019-08-19 21:57:25 -04:00
Lioncash 7647fa3ca6 driver/main: Factor out argument handling to its own function
Factors out the ToolPassInfo construction to its own function keep the
code isolated from everything else. Also simplifies the assignment in
main().

We can also migrate the global cwdbuf into this function to narrow its
scope down.
2019-08-19 21:50:02 -04:00
Lioncash d76d776a0e driver/main: Factor out tool construction code to its own function
Isolates the tool construction code and also makes the assignment within
main more straightforward. While we're at it, we can also make use of
std::make_unique within the relocated function.
2019-08-19 21:38:23 -04:00
Lioncash fd61ba6cc7 driver/main: Factor out project finding code to its own function
Keeps the logic contained within its own function and makes the
assignment more straightforward within main().
2019-08-19 21:18:05 -04:00
Phillip Stephens 1fb18dbf26 Update boo 2019-08-18 18:49:27 -07:00
Phillip Stephens 269ca8a7ec Update boo 2019-08-17 22:59:38 -07:00
Phillip Stephens e4d66745f5 Update submodules 2019-08-16 18:38:25 -07:00
Phillip Stephens c411f6e784 Update athena 2019-08-15 16:08:31 -07:00
Phillip Stephens 5ae5edfc46 Update athena 2019-08-15 08:41:04 -07:00
Phillip Stephens fb529992ca Update athena 2019-08-15 07:52:37 -07:00
Phillip Stephens 401ef19682 Merge pull request #5 from lioncash/fcc
hecl/FourCC: Remove undefined behavior and make rest of interface constexpr where applicable
2019-08-15 07:47:29 -07:00
Phillip Stephens 23551de349 Merge pull request #3 from lioncash/str
hecl/hecl: Minor changes and improvements to string utilities
2019-08-15 07:47:17 -07:00
Lioncash 477645f15d hecl/FourCC: Amend clang-format discrepancies
These were formatting discrepancies that existed before all of the
previous changes. We may as well resolve them so that others don't run
into them.
2019-08-15 06:49:20 -04:00
Lioncash 64ac2e423e hecl/FourCC: Make use of constexpr constructors where applicable 2019-08-15 06:48:38 -04:00
Lioncash 9e7661eb7a hecl/FourCC: Make rest of FourCC interface constexpr where applicable
Finally, we can make the rest of the interface constexpr, except for
toString().
2019-08-15 06:48:38 -04:00
Lioncash 2f9010bc9f hecl/FourCC: Eliminate magic values in DNAFourCC 2019-08-15 06:48:38 -04:00
Lioncash 1382bbf365 hecl/FourCC: Implement operator!= in terms of operator==
Deduplicates the amount of written code. Now code only needs to ever
change in operator== to automatically reflect across the two functions.
2019-08-15 06:48:38 -04:00
Lioncash 06c436b68d hecl/FourCC: Eliminate undefined behavior within FourCC interface
Type punning like this isn't actually well-defined behavior. Only
casting to char/unsigned char is well defined. This presents a problem
when using FourCC instances in constexpr contexts, given constexpr
contexts are forbidden from having undefined behavior in them.

Because of that, any attempt to use the const char* constructor within a
constexpr context would always result in a compilation error.
2019-08-15 06:48:31 -04:00
Lioncash 0f74cce2ca hecl/FourCC: Tidy up constructors
Marks constructors as noexcept and explicitly defaults the copy
constructor/assignment and move constructor/assignment.
2019-08-15 05:28:11 -04:00
Lioncash 9ec19d99cd hecl/hecl: Make hash constructors explicit where applicable 2019-08-15 03:06:56 -04:00
Lioncash 06548409f8 hecl/hecl: Make Hash constexpr 2019-08-15 03:00:42 -04:00
Lioncash 216b038a7d hecl/SystemChar: Unify StrLen implementations and make constexpr
We can utilize std::char_traits to generically handle the defined
character type. Since C++17, std::char_traits' length() function is
constexpr, so we can also make StrLen constexpr.
2019-08-15 02:28:31 -04:00
Lioncash 58e0c7eaa7 hecl/SystemChar: Cast to unsigned char before calling tolower/toupper
Performed for the same reasons outlined within
b32f16b519eafacb9de4852855486270f73d5e2e (avoiding undefined behavior).
2019-08-15 02:28:31 -04:00
Lioncash b63d848846 hecl/hecl: Amend lingering formatting inconsistencies
Amends formatting issues that were pre-existing to get them out of the
way.
2019-08-15 02:28:09 -04:00
Lioncash 485782e3a7 hecl/hecl: Convert typedefs to using aliases
Same thing, but slightly nicer to read.
2019-08-15 02:26:12 -04:00
Lioncash eb872cdf88 hecl/hecl: Assign ResourceLock's good member in the initializer list
Same behavior, but more idiomatic. While we're at it, we can make said
constructor and the conversion operator explicit to make the class a
little less error-prone.
2019-08-15 02:26:12 -04:00
Lioncash 92b87676c2 hecl/hecl: Make Entry take SystemString by value and move it
This allows callers to move into the constructor and subsequently move
into the member variable, avoiding copies altogether.
2019-08-15 02:26:12 -04:00
Lioncash dae3e6123f hecl/hecl: Make string conv operator+ instances friend functions
Makes both operators symmetrical to one another.
2019-08-15 02:26:12 -04:00
Lioncash c7aae83a75 hecl/hecl: Slightly improve resource usage within string conv operator+ funcs
We already construct a std::string instance, so we can just append to
it instead of creating another temporary with std::string's operator+.
We also change this to append using the string view getter functions, as
this allows the appending process to do less work. When a pointer is
passed in, a strlen call would need to be performed in order to
determine the total characters to append. However, we already know the
size (via the string view).
2019-08-15 02:26:12 -04:00
Lioncash c513a4b61f hecl/hecl: Make use of std::char_traits with StrNCmp
Same behavior, but allows removing the use of ifdefs, unifying the code
paths.
2019-08-15 02:26:12 -04:00
Lioncash ef6b41ea15 hecl/hecl: Amend string functions operating on string views to use interface functions
We don't really need to call out to the C functions to perform the
comparison behavior when the views already have a comparison function
as part of their interface.
2019-08-15 02:26:03 -04:00
Lioncash e0b5a4e2f7 hecl/hecl: Cast to unsigned char before calling std::isspace
std::string_view instances can contain character values that lie outside
the range of an unsigned char (negative values). If such a value is
passed into std::isspace, then the behavior of the function is
undefined. To avoid this, we add these casts.
2019-08-15 01:21:10 -04:00
Lioncash 91ff474c44 hecl/hecl: Handle bounded strings within CaseInsensitiveCompare
std::string_view instances aren't guaranteed to be null-terminated, so
we shouldn't be treating them as if they are in these functions, and
should instead use a bounded comparison based off their sizes.

This way we prevent an edge-case from ever becoming a problem and also
remove an ifdef, making the code uniform across all implementations.
2019-08-15 01:21:04 -04:00
Phillip Stephens 9dc1373201 Update boo 2019-08-14 06:52:24 -07:00
Phillip Stephens 78e88679a9 Update boo 2019-08-13 14:40:21 -07:00
Phillip Stephens a7c97b313c Update athena 2019-08-10 17:47:40 -07:00
Jack Andersen 0ab08daae7 Windows build fixes 2019-07-27 15:21:31 -10:00
Jack Andersen 7b05b41d34 Windows build fixes 2019-07-27 15:19:48 -10:00
Jack Andersen 5acf9ecbcf Graphics debug groups and bug fixes 2019-07-20 22:42:52 -10:00
Jack Andersen 08d15514a9 Update submodules 2019-07-20 22:42:03 -10:00
Jack Andersen 7a3da1f7a6 Massive fmtlib refactor 2019-07-19 18:27:21 -10:00
Jack Andersen 6988f86672 Massive fmtlib refactor 2019-07-19 18:22:58 -10:00
Jack Andersen e38a3ece89 More CBabygoth fixes 2019-07-06 22:22:35 -10:00
Jack Andersen b483acb8d3 Update submodules 2019-07-06 22:21:39 -10:00
Phillip Stephens 97ae6fbe98 Fix codesign failure 2019-07-01 02:22:17 -07:00
Phillip Stephens efa7463a9a shaderc metal "error" fix 2019-07-01 01:26:42 -07:00
Phillip Stephens c30703209f Fix macOS builds finally 2019-06-30 21:04:24 -07:00
Phillip Stephens cfd365bebe Update boo 2019-06-30 21:03:54 -07:00
Phillip Stephens 46c570f8a6 Update submodules 2019-06-30 20:41:06 -07:00
Phillip Stephens b251de5fd0 Update boo 2019-06-30 20:40:26 -07:00
Phillip Stephens 975b275334 Update submodules 2019-06-30 20:17:13 -07:00
Phillip Stephens 385f60cea3 Update boo 2019-06-30 20:15:40 -07:00
Jack Andersen 77af3f0ebd CPuddleToadGamma and animation system fixes 2019-06-20 20:02:56 -10:00
Jack Andersen 3256a05a99 Update boo 2019-06-20 20:02:34 -10:00
Jack Andersen 9ccc4227cb Initial support for asynchronous shader compilation 2019-06-15 20:25:29 -10:00
Jack Andersen 49eb971037 Update boo 2019-06-15 20:25:03 -10:00
Jack Andersen 37307e1cf6 Various CActorContraption fixes 2019-06-14 14:39:20 -10:00
Jack Andersen 4fa1a2f3b7 Fixes for ANCS cooking 2019-06-14 14:37:53 -10:00
Jack Andersen 6679f6de72 Windows build fixes 2019-06-12 15:33:35 -10:00
Jack Andersen 31caec79dd Windows build fixes 2019-06-12 15:29:52 -10:00
Jack Andersen e218b8aeb5 CActorContraption fixes, better CMake dependency handling 2019-06-11 16:05:17 -10:00
Jack Andersen 387f8fa864 Blender Python API updates and better CMake dependency handling 2019-06-11 16:01:19 -10:00
Jack Andersen b7aa3e06d2 Per-stage shader hashing 2019-06-05 14:07:50 -10:00
Jack Andersen 7cc157c8b9 Support for per-stage shader hashing 2019-06-05 14:07:29 -10:00
Jack Andersen 5e60131062 Metal Cubemaps 2019-06-02 21:51:44 -10:00
Jack Andersen 82fc24ebe6 Update boo 2019-06-02 21:51:26 -10:00
Jack Andersen 4a4cf58b6f HLSL cubemaps 2019-05-31 23:28:12 -10:00
Jack Andersen 4de7e2c0d6 Update boo 2019-05-31 23:27:44 -10:00
Jack Andersen 410d7896f7 Support for rendering dynamic cubemaps 2019-05-31 17:41:01 -10:00
Jack Andersen c8c6936e0c Update boo 2019-05-31 17:40:30 -10:00
Jack Andersen bf3ac9e34b macOS build fixes 2019-05-10 13:08:58 -10:00
Jack Andersen 50ca5553ab Ensure ApplicationReps.hpp is generated in binary directory 2019-05-10 13:08:05 -10:00
Jack Andersen 4554fc06bc Update hecl 2019-05-09 18:10:16 -10:00
Jack Andersen e1b01a0962 Update boo 2019-05-09 18:10:04 -10:00
Jack Andersen 5f4ebcb2f5 Windows fixes 2019-05-09 18:09:01 -10:00
Jack Andersen f596cbff83 Windows fixes for refactor 2019-05-09 18:07:48 -10:00
Jack Andersen 80d334ec69 Skinned CMDL fix 2019-05-08 13:38:22 -10:00
Jack Andersen 92e2c03a01 Fix skin binding unordered_map use 2019-05-08 13:38:00 -10:00
Jack Andersen 233d13ceb9 Refactor for blender 2.8 and new shader model 2019-05-07 17:50:21 -10:00
Jack Andersen 5c59acddf2 Blender 2.8 refactor 2019-05-07 17:47:34 -10:00
Jack Andersen 3a0d2930fa Numerous uninitialized memory fixes 2019-04-06 19:14:48 -10:00
Jack Andersen 8b1b674a7d Ensure uninitialized data is not accessed in normal operation 2019-04-06 18:54:58 -10:00
Jack Andersen b72cc490e8 Implement CFishCloud 2019-04-02 18:32:31 -10:00
Jack Andersen 2ab5c1436b Add True and False tests for bitwise enums 2019-04-02 18:29:04 -10:00
Jack Andersen a63a61fef8 Implement CWallCrawlerSwarm 2019-03-23 22:06:59 -10:00
Jack Andersen 6816fea5b8 Update athena 2019-03-23 22:05:36 -10:00
Jack Andersen 52b36795ac Proper handling for persistently resident resources 2019-03-09 23:37:36 -10:00
Jack Andersen 4bb697cbdf Update boo 2019-03-09 23:14:04 -10:00
Jack Andersen f40bf707f6 DCLN OBB transform fix 2019-03-07 18:16:42 -10:00
Jack Andersen 72b14a78a0 Correct indirect texture sampling swizzle 2019-03-07 17:33:50 -10:00
Jack Andersen 4b042f6f9a OpenGL memory leak fix 2019-03-04 22:34:43 -10:00
Jack Andersen 3759bf1b3d Avoid redundant pool destroy/allocs 2019-03-04 22:34:03 -10:00
Jack Andersen 54f0724de5 D3D fixes 2019-03-03 13:04:18 -10:00
Jack Andersen f262e59e68 Update boo 2019-03-03 13:03:33 -10:00
Jack Andersen 8b9f073635 Various rendering fixes 2019-03-02 20:19:42 -10:00
Jack Andersen 927be4e839 Proper blending modes for handling alpha test 2019-03-02 20:17:41 -10:00
Jack Andersen c45d5db182 Update hecl 2019-02-26 19:14:22 -10:00
Jack Andersen 1f04f7ae12 Add closefrom call to RunProcess 2019-02-26 19:13:19 -10:00
Jack Andersen 4cb26976bd More thermal visor fixes; face reflection fix 2019-02-26 18:52:01 -10:00
Jack Andersen 6626557cc4 TexGen bug fix with diffuse-only pass 2019-02-26 18:50:13 -10:00
Jack Andersen 67b9882dbe Thermal visor fixes 2019-02-24 22:14:59 -10:00
Jack Andersen 8e8ecaf4aa Add fallback for diffuse expression 2019-02-24 22:10:34 -10:00
Jack Andersen d78e90f593 Update hecl 2019-02-24 00:15:19 -10:00
Jack Andersen a9254f6643 Ensure pipes aren't duplicated between blender instances 2019-02-24 00:14:44 -10:00
Jack Andersen 8df0a4913c zeus constexpr refactor and thermal visor fixes 2019-02-23 21:15:54 -10:00
Jack Andersen 470182de06 Support for diffuse texture identification in IR 2019-02-23 21:14:43 -10:00
Jack Andersen 48eaa2545b Working CScriptGunTurret 2019-02-17 19:47:46 -10:00
Jack Andersen d13bd28281 Update boo 2019-02-17 19:46:29 -10:00
Jack Andersen fc40190933 Implicit switch fallthrough refactor 2019-02-17 19:44:46 -10:00
Jack Andersen 6441bcc3a2 GCC build fix 2019-02-15 15:32:05 -10:00
Jack Andersen fdbfbf74fd Update athena 2019-02-15 15:31:21 -10:00
Jack Andersen e815c4d461 Update hecl 2019-02-11 21:19:17 -10:00
Jack Andersen f46cd474a6 Update boo 2019-02-11 21:19:02 -10:00
Jack Andersen 01af7b735d Implement CScriptSpindleCamera 2019-02-09 18:41:35 -10:00
Jack Andersen 3cc65704d3 Disable contiguous surface splitting 2019-02-09 18:41:13 -10:00
Jack Andersen 88591f48f0 More bug fixes 2019-02-07 21:56:54 -10:00
Jack Andersen b6af26fa91 addColor term for standard shader model 2019-02-07 21:55:39 -10:00
Jack Andersen 2b022c7d72 Better CMake configuration for Xcode 2019-02-03 15:38:35 -10:00
Jack Andersen d88c9cc21b Debug mode for metal shaders 2019-02-03 15:38:14 -10:00
Jack Andersen a353c7ddcf Metal shader fixes 2019-02-03 14:01:44 -10:00
Jack Andersen 23a6d66a8c Add -j argument for hecl cooking 2019-02-03 14:01:12 -10:00
Jack Andersen ad2681f857 Windows fixes 2019-01-28 22:28:35 -10:00
Jack Andersen f35285b076 Windows fixes 2019-01-28 22:25:51 -10:00
Phillip Stephens 4dd40f519e Fix CScriptGenerator infinite recursion, update submodules 2019-01-26 15:22:51 -08:00
Phillip Stephens 7542cb9650 Minor fixes 2019-01-26 15:21:30 -08:00
Jack Andersen aeb6a9a147 More mouse events for pause screen 2019-01-21 18:23:51 -10:00
Jack Andersen 8cbb1e650f Update boo 2019-01-21 18:23:42 -10:00
Jack Andersen 851e113dc0 Implement CWarWasp 2019-01-15 18:22:44 -10:00
Jack Andersen 0178e8b7d6 PATH generation fixes for blender addon 2019-01-15 18:22:30 -10:00
Jack Andersen 5b55320e9b Implement CPlasmaProjectile 2019-01-02 17:47:28 -10:00
Jack Andersen 6ff366f214 Update boo 2019-01-02 17:47:07 -10:00
Jack Andersen 147a9396c4 CBeetle implementation 2018-12-30 19:01:42 -10:00
Jack Andersen 96895c6150 Update submodules 2018-12-30 19:01:30 -10:00
Jack Andersen ef63509bb3 Update lzokay 2018-12-26 11:40:01 -10:00
Jack Andersen 1d95cf9221 Update lzokay 2018-12-26 11:39:49 -10:00
Jack Andersen e716d05cec Switch to lzokay library 2018-12-19 17:45:48 -10:00
Jack Andersen 206e54210c Switch to lzokay library 2018-12-19 17:44:40 -10:00
Jack Andersen b7f35e0528 CRelAngle fix 2018-12-16 17:52:51 -10:00
Jack Andersen 838afd73ae Update athena 2018-12-16 17:52:24 -10:00
Jack Andersen f184291461 ANCS PAS I/O fix 2018-12-15 20:32:07 -10:00
Jack Andersen 0af86ab3c2 Update submodules 2018-12-15 20:30:35 -10:00
Jack Andersen ec1cb75b25 Finish CSpacePirate implementation 2018-12-12 21:39:16 -10:00
Jack Andersen f695aa44d4 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2018-12-12 21:39:03 -10:00
Jack Andersen d8da828d12 Update athena 2018-12-12 21:38:40 -10:00
Phillip Stephens f776f89bee Minor Console fixes 2018-12-09 21:12:10 -08:00
Jack Andersen 14747e39e1 Windows fixes 2018-12-07 20:46:17 -10:00
Jack Andersen 7a68a5350b Update athena 2018-12-07 20:44:26 -10:00
Jack Andersen 636c82a568 New code style refactor 2018-12-07 19:30:43 -10:00
Jack Andersen 72193079ae New code style refactor 2018-12-07 19:18:42 -10:00
Jack Andersen 7c7da6671a SIMD refactor 2018-12-07 15:49:15 -10:00
Jack Andersen 54c466276b SIMD refactor 2018-12-07 15:31:11 -10:00
Jack Andersen 9c88971df6 Initial CSpacePirate and rag doll imps 2018-11-23 22:09:35 -10:00
Jack Andersen 1b073abb76 Change cheats CVar key 2018-11-23 22:08:44 -10:00
Phillip Stephens 89ece2e9b2 Proper CRandom16 usage
More CScriptGunTurret imps
2018-11-09 18:48:06 -08:00
Phillip Stephens 6695e9596d Fix heclTest build 2018-11-09 15:31:51 -08:00
Jack Andersen 1aab0528f3 Various bug fixes 2018-11-07 14:53:38 -10:00
Jack Andersen e2ec1f69a3 Vertex shaders do rigging computations in object space 2018-11-07 14:53:00 -10:00
Jack Andersen 3ef7386978 Proper interleaved rendering of indirect-textured particle instances 2018-11-04 21:25:28 -10:00
Jack Andersen e140b16af8 Update boo 2018-11-04 21:25:18 -10:00
Jack Andersen 98c7525176 Initially working CEnvFxManager 2018-11-01 22:16:16 -10:00
Jack Andersen b2586432c7 Proper CRLF-handling for #define 2018-11-01 14:32:28 -10:00
Jack Andersen 45fb8db388 Integrate SDNA parser for checking .blend types 2018-10-21 23:29:44 -10:00