Esteban Papp
8c6cc2ea04
Removes EditorGradientComponentBase.cpp from Gems/GradientSignal
...
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com >
2022-01-20 16:06:47 -08:00
Steve Pham
59e43813f0
GCC Support for Linux
...
Updates and fixes to support GCC for Linux
Signed-off-by: Steve Pham <82231385+spham-amzn@users.noreply.github.com >
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com >
2022-01-20 13:00:02 -08:00
Mike Balfour
83878e6377
Change GetValues() to take in const positions. ( #6987 )
...
* Change GetValues() to take in const positions.
To support this, span needed some template deductions to correctly convert from non-const containers to const ones.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Removed the most problematic template deduction rules.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Remove duplicate validate_iterator methods.
iterator type is a pointer, not a value, so "const iterator" and "const const_iterator" produce the same function signature.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Fixed the span types.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2022-01-19 12:57:52 -06:00
Mike Balfour
4b9e53e623
Another batch of GetValues() overrides. ( #6915 )
...
* Another batch of GetValues() overrides.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Added missing headers.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Addressed PR feedback.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2022-01-18 15:05:17 -06:00
Mike Balfour
c403fa3db6
More GetValues() overrides ( #6896 )
...
* Benchmarks and tests for Image and Constant GetValues
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Verify GetValues for Perlin and Random Gradients
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Standardized the assert format for GetValues().
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* More GetValues unit tests and test cleanup
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Fixed typos
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* GetValues() unit tests for surface gradients.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Benchmarks for ShapeAreaFalloff Gradient
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Added benchmarks for all remaining gradients and cleaned up the helper methods.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Renamed class for better report formatting.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Added missing Mocks dependencies for the Editor tests.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* First batch of specific GetValues() overrides.
Each one is measurably faster than the generic version. Also, in ShapeAreaFalloffGradient, I optimized and simplified the logic a bit, so GetValue() is marginally faster too.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Change GetValues() to use span and add more overrides.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Convert GetValues() to use AZStd::span and added more overrides.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Add missing include.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* PR feedback - switch to fill
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Fixed the logic and added unit tests and comments.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2022-01-14 13:30:45 -06:00
Mike Balfour
79431f5e5f
First batch of GetValues() overrides ( #6852 )
...
* Benchmarks and tests for Image and Constant GetValues
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Verify GetValues for Perlin and Random Gradients
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Standardized the assert format for GetValues().
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* More GetValues unit tests and test cleanup
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Fixed typos
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* GetValues() unit tests for surface gradients.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Benchmarks for ShapeAreaFalloff Gradient
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Added benchmarks for all remaining gradients and cleaned up the helper methods.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Renamed class for better report formatting.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Added missing Mocks dependencies for the Editor tests.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* First batch of specific GetValues() overrides.
Each one is measurably faster than the generic version. Also, in ShapeAreaFalloffGradient, I optimized and simplified the logic a bit, so GetValue() is marginally faster too.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2022-01-13 14:50:54 -06:00
Mike Balfour
b0af08e61f
Moved GradientSignal component headers to Include directory.
...
All of the component headers in the gem have been moved to the Include directory to make them public to other gems. This allows "upstream" unit tests and benchmarks to easily create real non-mocked-out versions of these components to do more integration-level and system-level testing and benchmarking.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2022-01-03 16:12:15 -06:00
Mike Balfour
48260486fb
Change gradients to use cached GradientTransform instance ( #6591 )
...
* Change flow so that TerrainSystem stops responding during deactivation.
Some systems might accidentally try to call back to the TerrainSystem inside a DestroyBegin notification, so make sure it stops listening before sending out the notification.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Change gradients to cache and use a GradientTransform instance.
In my local test case, calling EBus on every call took 337 ms, using a lambda to wrap the calls took 197 ms, and using the fully cached version took 170 ms.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Remove the wrappingTransform function and go back to the switch statement.
There was a bit of overhead to each function call due to using AZStd::function that just isn't necessary for this use case.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Add profile markers to the heightfield updates so that they're more visible.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Cleared state while component is deactivated.
The state was getting refreshed even while the component was in a deactivated state, which meant that it wasn't properly notifying of state changes when it became active since it wasn't detecting an actual change. By clearing the state when deactivated, and ensuring the state isn't getting refreshed *while* deactivated, the notifications work properly.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Fixed compile warning on unit test.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Addressed PR feedback - changed comments, reduced mutex scope
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2021-12-30 12:43:00 -06:00
Mike Balfour
a10bf92739
Encapsulated gradient transform logic into separate class ( #6586 )
...
* First version of GradientTransform class.
The gradient transform logic is getting encapsulated into a class so that it can be cached and used by components in a much more optimal way than making ebus calls to the GradientTransform component on every transformed point.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Moved GradientTransform into its own source files.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Clean up and simplify GradientTransform logic.
Added extensive commenting and split TransformPositionToUVW into a separate method for normalizing (TransformPositionToUVWNormalized) so that there doesn't need to be any conditional logic. There's no runtime variance as to which one needs to be called from a given call site.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Added unit tests for GradientTransform.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Add comparison operators to GradientTransform so we can easily tell when it has changed.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Updated comments to be more Doxygen-friendly.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2021-12-29 13:44:03 -06:00
Mike Balfour
3e9b76cdee
Image Gradient: Switch to shared_mutex ( #6558 )
...
* Improve lock contention by switching to a shared_lock.
ImageGradient is accessed via a many-reader-one-writer pattern, so a shared_lock causes less contention in the common "read" case.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Remove chatty profile marker.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2021-12-23 14:16:22 -06:00
Mike Balfour
39ba06b84e
misc small terrain bugfixes ( #5834 )
...
* Removed "chatty" profile markers.
These three markers were making terrain refreshes take ~200% longer in profile builds.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Terrain surface data wasn't updating its AABB correctly.
The code was making an invalid assumption that changes to the world bounds would result in an invalid dirtyRegion. It actually gets a valid region encapsulating the old and new bounds. The fix is an additional check to see if the terrain bounds changed.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
* Addressed previous PR feedback that terrainSystem ought to be a local variable in each test.
Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com >
2021-11-23 09:21:27 -06:00
Artur K
f44169f7fa
Cleanup SerializeContext.h pt.1 ( #4264 )
...
* Remove AssetSerializer inclusion from SerializeContext header
Moved a few Reflect methods to new cpp files.
In addition, some preparations for further header dependency reductions.
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
* Fix smoke test lua failures.
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
* Windows build fixes.
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
* Missing license headers
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
* Fix white-space issues.
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
* Code review fix for AzToolsFramework/AssetEditor/AssetEditorBus.h
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com >
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
* Fix inheritance list wrapping broken by older clang-format
Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com >
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com >
2021-09-29 11:31:01 -05:00
Esteban Papp
35a7ad612b
Gems/GradientSignal
...
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com >
2021-09-10 20:18:37 -07:00
Esteban Papp
3ebf045cb5
Gems/GradientSignal
...
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com >
2021-08-20 18:01:03 -07:00
Jeremy Ong
df9b4d4a2f
Deprecate profiler categories based on global enum
...
(to be supplanted by registered budgets in the future)
Signed-off-by: Jeremy Ong <jcong@amazon.com >
2021-08-18 17:33:09 -06:00
Esteban Papp
b33a4db332
Merge branch 'development' into cmake/SPEC-2513_w4267
2021-08-02 18:03:04 -07:00
pappeste
0af39dd633
GradientSignal
...
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com >
2021-07-27 19:30:01 -07:00
dtamkin1
731640492e
Merge branch 'development' of https://github.com/o3de/o3de into GroupToggleSwitch
2021-07-23 16:28:45 -05:00
sphrose
9639003a7d
LYN-4774 Fix missing box icons inside the main Viewport ( #2297 )
...
* LYN-4774 Fix missing box icons inside the main Viewport
Signed-off-by: sphrose <82213493+sphrose@users.noreply.github.com >
* V2 icons
Signed-off-by: sphrose <82213493+sphrose@users.noreply.github.com >
* Bug fixes
Signed-off-by: sphrose <82213493+sphrose@users.noreply.github.com >
2021-07-21 16:33:04 -07:00
Esteban Papp
1f9b284de2
Merge branch 'development' into cmake/SPEC-7179
...
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com >
# Conflicts:
# Code/Editor/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin_precompiled.h
# Code/Editor/Plugins/EditorCommon/EditorCommon_precompiled.h
# Code/Editor/Plugins/EditorCommon/stdafx.cpp
# Code/Editor/Plugins/FFMPEGPlugin/FFMPEGPlugin_precompiled.h
# Code/Editor/Plugins/PerforcePlugin/PerforcePlugin_precompiled.h
# Code/Editor/Plugins/ProjectSettingsTool/ProjectSettingsTool_precompiled.h
# Code/Framework/AzToolsFramework/AzToolsFramework/AzToolsFramework_precompiled.h
# Code/Tools/AssetProcessor/native/precompiled.h
# Code/Tools/Standalone/StandaloneTools_precompiled.h
# Gems/AssetMemoryAnalyzer/Code/Source/AssetMemoryAnalyzer_precompiled.h
# Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageProcessing_precompiled.h
# Gems/Atom/RHI/DX12/Code/Source/RHI/Atom_RHI_DX12_precompiled.h
# Gems/Atom/RHI/Metal/Code/Include/Platform/Mac/Atom_RHI_Metal_precompiled_Platform.h
# Gems/Atom/RHI/Metal/Code/Include/Platform/iOS/Atom_RHI_Metal_precompiled_Platform.h
# Gems/Atom/RHI/Metal/Code/Source/Atom_RHI_Metal_precompiled.h
# Gems/Atom/RHI/Metal/Code/atom_rhi_metal_common_files.cmake
# Gems/Atom/RHI/Null/Code/Source/Atom_RHI_Null_precompiled.h
# Gems/Atom/RHI/Null/Code/atom_rhi_null_common_files.cmake
# Gems/Atom/RHI/Vulkan/Code/Include/Platform/Android/Atom_RHI_Vulkan_precompiled_Platform.h
# Gems/Atom/RHI/Vulkan/Code/Include/Platform/Linux/Atom_RHI_Vulkan_precompiled_Platform.h
# Gems/Atom/RHI/Vulkan/Code/Include/Platform/Mac/Atom_RHI_Vulkan_precompiled_Platform.h
# Gems/Atom/RHI/Vulkan/Code/Include/Platform/Windows/Atom_RHI_Vulkan_precompiled_Platform.h
# Gems/Atom/RHI/Vulkan/Code/Source/Atom_RHI_Vulkan_precompiled.h
# Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp
# Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_common_files.cmake
# Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/AtomFont_precompiled.h
# Gems/Blast/Code/Source/StdAfx.cpp
# Gems/Camera/Code/Source/Camera_precompiled.h
# Gems/EMotionFX/Code/Source/EMotionFX_precompiled.h
# Gems/FastNoise/Code/Source/FastNoise_precompiled.h
# Gems/Gestures/Code/Source/Gestures_precompiled.h
# Gems/GradientSignal/Code/Source/GradientSignal_precompiled.h
# Gems/GraphCanvas/Code/precompiled.h
# Gems/ImGui/Code/Source/ImGui_precompiled.h
# Gems/InAppPurchases/Code/Source/InAppPurchases_precompiled.h
# Gems/LmbrCentral/Code/Source/LmbrCentral_precompiled.h
# Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp
# Gems/LyShine/Code/Editor/UiCanvasEditor_precompiled.h
# Gems/LyShine/Code/Source/Animation/LyShine_precompiled.h
# Gems/LyShine/Code/Source/LyShine_precompiled.h
# Gems/LyShineExamples/Code/Source/LyShineExamples_precompiled.h
# Gems/Maestro/Code/Source/Cinematics/Maestro_precompiled.h
# Gems/Maestro/Code/Source/Maestro_precompiled.h
# Gems/MessagePopup/Code/Source/MessagePopup_precompiled.h
# Gems/Metastream/Code/Source/Metastream_precompiled.h
# Gems/Microphone/Code/Source/Microphone_precompiled.h
# Gems/Multiplayer/Code/Source/Multiplayer_precompiled.h
# Gems/PhysX/Code/NumericalMethods/Source/NumericalMethods_precompiled.h
# Gems/PhysX/Code/Source/PhysXUnsupported_precompiled.h
# Gems/PhysX/Code/Source/PhysX_precompiled.h
# Gems/PhysX/Code/physx_unsupported_files.cmake
# Gems/PhysXDebug/Code/Source/PhysXDebugUnsupported_precompiled.h
# Gems/PhysXDebug/Code/Source/PhysXDebug_precompiled.h
# Gems/ScriptCanvas/Code/Editor/precompiled.h
# Gems/ScriptCanvas/Code/Source/precompiled.h
# Gems/ScriptCanvasDeveloper/Code/Source/precompiled.h
# Gems/ScriptCanvasPhysics/Code/Source/ScriptCanvasPhysics_precompiled.h
# Gems/ScriptEvents/Code/Source/precompiled.h
# Gems/ScriptEvents/Code/Tests/Editor/EditorTests.cpp
# Gems/ScriptedEntityTweener/Code/Source/ScriptedEntityTweener_precompiled.h
# Gems/SliceFavorites/Code/Source/SliceFavorites_precompiled.h
# Gems/StartingPointCamera/Code/Source/StartingPointCamera_precompiled.h
# Gems/StartingPointInput/Code/Source/StartingPointInput_precompiled.h
# Gems/StartingPointMovement/Code/Source/StartingPointMovement_precompiled.h
# Gems/SurfaceData/Code/Source/SurfaceData_precompiled.h
# Gems/TextureAtlas/Code/Source/TextureAtlas_precompiled.h
# Gems/TickBusOrderViewer/Code/Source/TickBusOrderViewer_precompiled.h
# Gems/Twitch/Code/Source/Twitch_precompiled.h
# Gems/VirtualGamepad/Code/Source/VirtualGamepad_precompiled.h
# Gems/WhiteBox/Code/Source/WhiteBoxUnsupported_precompiled.h
# Gems/WhiteBox/Code/Source/WhiteBox_precompiled.h
2021-07-16 15:42:37 -07:00
Steve Pham
38261d0800
Shorten copyright headers by splitting into 2 lines ( #2213 )
...
* Updated all copyright headers to split the longer original copyright line into 2 shorter lines
Signed-off-by: Steve Pham <spham@amazon.com >
2021-07-16 15:25:48 -07:00
dtamkin1
fed37e8e6d
Removed the ChangeNotify event in each attribute
...
Signed-off-by: dtamkin1 <jotamkin@amazon.com >
2021-07-13 18:02:25 -05:00
Jose
bc9d0eb0e1
Added unit tests for groups and toggle groups, fixed comments and syntax
...
Signed-off-by: Jose <jotamkin@amazon.com >
2021-07-13 14:55:05 -05:00
Esteban Papp
33a19b05bc
GradientSignal
...
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com >
2021-07-12 19:51:39 -07:00
Jose
0502475fa6
Created a toggle switch to enable and disable groups through the EditContext
...
Signed-off-by: Jose <jotamkin@amazon.com >
2021-07-07 14:09:26 -05:00
Steve Pham
b4a2edec6a
Final update copyright headers to reference license files at the repo root ( #1693 )
...
* Final update copyright headers to reference license files at the repo root
Signed-off-by: spham <spham@amazon.com >
* Fix copyright validator unit tests to support the stale O3DE header scenario
Signed-off-by: spham <spham@amazon.com >
2021-06-30 19:51:55 -07:00
Terry Michaels
21ebff5709
Updated help search and all docs.o3de.org links to o3de.org ( #1594 )
2021-06-25 15:23:57 -05:00
Terry Michaels
1e457928f5
Update help URLs and remove unneeded links ( #1520 )
2021-06-23 14:42:33 -05:00
Steve Pham
70042fcdcd
O3DE Copyright Updates for Linux Foundation ( #1504 )
2021-06-23 10:55:22 -07:00
Esteban Papp
36cb0f6d40
SPEC-7178 Removal of precompiled cpp files ( #1171 )
...
* SPEC-7178 Removal of precompiled cpp files
* Missing files...
2021-06-07 15:59:58 -07:00
greerdv
fcfb5a7941
refactor vector scale transform function usages in GradientSignal
2021-05-28 10:50:35 +01:00
greerdv
7def4741cd
merge from main
2021-05-19 12:14:25 +01:00
greerdv
059f69e5e6
tidy up NonUniformScaleService compatibility
2021-05-12 21:20:23 +01:00
mbalfour
704443ac89
Fix up incorrect autoDelete use and handling.
...
Several UI property handlers were incorrectly using the autoDelete feature by calling UnregisterPropertyType and deleting the pointer themselves, which caused double-delete crashes on application shutdown. PropertyManagerComponent now gracefully handles that condition but also explicitly asserts explaining how the code should be changed, and the "known offenders" have been fixed up to use autoDelete correctly.
2021-05-11 10:25:03 -05:00
bosnichd
d7b796fd73
Remove I3DEngine CryCommon Interface ( #567 )
...
Delete:
- I3DEngine
- Missions
- Time of day
- GameEffectsSystem Gem
- ImageProcessing Gem
- SVOGI Gem
- Various other things that don't do anything now that the legacy renderer has been removed.
2021-05-05 09:07:28 -06:00
Aristo7
f4def0c93f
Minor compile warning cleanup
2021-05-03 16:33:06 -05:00
Aristo7
64d980bc03
Deleted AzFramework::AtomActiveInterface
2021-05-03 15:40:32 -05:00
greerdv
b113f09a71
first pass of changing transform to use float for scale internally rather than Vector3
2021-04-27 18:12:46 +01:00
Chris Burel
28170ffe41
Add newlines to the end of all files
2021-04-23 09:43:40 -07:00
alexpete
1044dc3da1
Integrating github/staging through commit ab87ed9
2021-04-09 11:27:37 -07:00
alexpete
75dc720198
Integrating latest 47acbe8
2021-03-25 13:57:57 -07:00
alexpete
a10351f38d
Initial commit
2021-03-08 14:30:57 -08:00