summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-08-24 18:34:43 +0200
committerGitHub <noreply@github.com>2021-08-24 18:34:43 +0200
commit867c812e3618a44d276ef93df488980e7aefbdcb (patch)
treeefb5621b826851849ff9ad541f96339cab13b217
parentb6cefb983d8f1d91e8944a52e3c1f6e1b192a187 (diff)
parent612aeac49f5c8c81ce8b628f692fa1bd1d094b68 (diff)
Merge pull request #63 from MonsterDruide1/ParticleConfig
gsys: Add ParticleConfig
-rw-r--r--CMakeLists.txt3
-rw-r--r--data/uking_functions.csv16
-rw-r--r--lib/gsys/.clang-format74
-rw-r--r--lib/gsys/CMakeLists.txt22
-rw-r--r--lib/gsys/include/gsys/gsysORUtil.h19
-rw-r--r--lib/gsys/include/gsys/gsysParticleConfig.h37
-rw-r--r--lib/gsys/src/gsys/gsysParticleConfig.cpp67
7 files changed, 230 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3d166a6d..3da992cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,9 @@ target_link_libraries(uking PUBLIC agl)
add_subdirectory(lib/aal)
target_link_libraries(uking PRIVATE aal)
+add_subdirectory(lib/gsys)
+target_link_libraries(uking PRIVATE gsys)
+
add_subdirectory(lib/EventFlow)
target_link_libraries(uking PRIVATE evfl)
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index ddb2066f..01c761aa 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -69725,15 +69725,15 @@ Address,Quality,Size,Name
0x0000007100c4efdc,U,001068,
0x0000007100c4f408,U,000008,
0x0000007100c4f410,U,000840,
-0x0000007100c4f758,U,002596,_ZN4gsys14ParticleConfigC2Ev
+0x0000007100c4f758,O,002596,_ZN4gsys14ParticleConfigC1Ev
0x0000007100c5017c,m,000400,_ZN3agl3utl9ParameterIN4sead15FixedSafeStringILi64EEEEC1ERKS4_RKNS2_14SafeStringBaseIcEESB_PNS0_13IParameterObjE
-0x0000007100c5030c,U,000064,_ZN4gsys14ParticleConfig12applyResouceEPKv
-0x0000007100c5034c,U,000264,
-0x0000007100c50454,U,000008,_ZN4gsys14ParticleConfig10initializeEPN4sead4HeapES3_
-0x0000007100c5045c,U,000116,
-0x0000007100c504d0,U,000004,j__ZdlPv_815
-0x0000007100c504d4,U,000120,
-0x0000007100c5054c,U,000008,
+0x0000007100c5030c,O,000064,_ZN4gsys14ParticleConfig12applyResouceEPKv
+0x0000007100c5034c,m,000264,_ZNK4gsys14ParticleConfig15getLightMapNameEj
+0x0000007100c50454,O,000008,_ZN4gsys14ParticleConfig10initializeEPN4sead4HeapES3_
+0x0000007100c5045c,O,000116,_ZN4gsys14ParticleConfigD2Ev
+0x0000007100c504d0,O,000004,_ZN4gsys14ParticleConfigD0Ev
+0x0000007100c504d4,O,000120,_ZThn8_N4gsys14ParticleConfigD1Ev
+0x0000007100c5054c,O,000008,_ZThn8_N4gsys14ParticleConfigD0Ev
0x0000007100c50554,U,000824,_ZN4gsys15ParticleDrawArgC2Ei
0x0000007100c5088c,U,000392,_ZN4gsys15ParticleDrawArgD2Ev
0x0000007100c50a14,U,000036,
diff --git a/lib/gsys/.clang-format b/lib/gsys/.clang-format
new file mode 100644
index 00000000..ef862606
--- /dev/null
+++ b/lib/gsys/.clang-format
@@ -0,0 +1,74 @@
+---
+Language: Cpp
+AccessModifierOffset: -4
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: false
+AlignConsecutiveDeclarations: false
+AlignOperands: true
+AlignTrailingComments: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: Never
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: Inline
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: Yes
+BinPackArguments: true
+BinPackParameters: true
+BreakBeforeBinaryOperators: None
+BreakBeforeBraces: Attach
+BreakBeforeTernaryOperators: false
+BreakConstructorInitializersBeforeComma: false
+ColumnLimit: 100
+CommentPragmas: '^ (IWYU pragma:|NOLINT)'
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
+DerivePointerAlignment: false
+DisableFormat: false
+ForEachMacros: []
+IncludeCategories:
+ - Regex: '^<[Ww]indows\.h>$'
+ Priority: 1
+ - Regex: '^<'
+ Priority: 2
+ - Regex: '^"'
+ Priority: 3
+IndentCaseLabels: false
+IndentWidth: 4
+IndentWrappedFunctionNames: false
+KeepEmptyLinesAtTheStartOfBlocks: false
+MacroBlockBegin: ''
+MacroBlockEnd: ''
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCBlockIndentWidth: 4
+ObjCSpaceAfterProperty: false
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 300
+PenaltyBreakFirstLessLess: 120
+PenaltyBreakString: 1000
+PenaltyExcessCharacter: 1000000
+PenaltyReturnTypeOnItsOwnLine: 60
+PointerAlignment: Left
+ReflowComments: true
+SortIncludes: true
+SpaceAfterCStyleCast: false
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 2
+SpacesInAngles: false
+SpacesInContainerLiterals: true
+SpacesInCStyleCastParentheses: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+Standard: c++17
+TabWidth: 4
+UseTab: Never
+...
diff --git a/lib/gsys/CMakeLists.txt b/lib/gsys/CMakeLists.txt
new file mode 100644
index 00000000..1c8707f4
--- /dev/null
+++ b/lib/gsys/CMakeLists.txt
@@ -0,0 +1,22 @@
+project(gsys CXX ASM)
+
+add_library(gsys OBJECT
+ include/gsys/gsysORUtil.h
+ include/gsys/gsysParticleConfig.h
+ src/gsys/gsysParticleConfig.cpp
+)
+
+target_compile_options(gsys PRIVATE -fno-exceptions)
+target_compile_options(gsys PRIVATE -fno-strict-aliasing)
+target_compile_options(gsys PRIVATE -Wno-invalid-offsetof)
+target_include_directories(gsys PUBLIC include/)
+
+if(NOT TARGET sead)
+ add_subdirectory(../sead)
+endif()
+target_link_libraries(gsys PUBLIC sead)
+
+if(NOT TARGET agl)
+ add_subdirectory(../agl)
+endif()
+target_link_libraries(gsys PUBLIC agl)
diff --git a/lib/gsys/include/gsys/gsysORUtil.h b/lib/gsys/include/gsys/gsysORUtil.h
new file mode 100644
index 00000000..83fa18dc
--- /dev/null
+++ b/lib/gsys/include/gsys/gsysORUtil.h
@@ -0,0 +1,19 @@
+#pragma once
+
+namespace sead {
+class Heap;
+
+namespace hostio {
+class Node;
+}
+} // namespace sead
+
+namespace gsys::ORUtil {
+
+enum class Icon {
+ _b = 0xB,
+};
+
+void setNodeMetaIcon(sead::hostio::Node* node, Icon icon, sead::Heap* heap);
+
+} // namespace gsys::ORUtil
diff --git a/lib/gsys/include/gsys/gsysParticleConfig.h b/lib/gsys/include/gsys/gsysParticleConfig.h
new file mode 100644
index 00000000..806f7d3b
--- /dev/null
+++ b/lib/gsys/include/gsys/gsysParticleConfig.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <agl/Utils/aglParameter.h>
+#include <agl/Utils/aglParameterIO.h>
+#include <agl/Utils/aglParameterObj.h>
+#include <hostio/seadHostIONode.h>
+
+namespace gsys {
+
+class ParticleConfig : public sead::hostio::Node, public agl::utl::IParameterIO {
+public:
+ ParticleConfig();
+ const char* getLightMapName(unsigned int index) const;
+ void initialize(sead::Heap* heap, sead::Heap* hio_heap);
+ void applyResouce(const void* data);
+
+private:
+ [[maybe_unused]] agl::utl::IParameterObj _1d8; // unused
+ [[maybe_unused]] short _208 = 0; // unused
+ [[maybe_unused]] sead::FixedSafeString<0x40> _210; // unused
+ agl::utl::ParameterObj mData2;
+ agl::utl::Parameter<u32> mGpuParticleHeapSize;
+ agl::utl::Parameter<u32> mEffectModelHeapSize;
+ agl::utl::Parameter<u32> mPtclEmitCallbackHeapSize;
+ agl::utl::Parameter<bool> mEnableParticleLinearDepth;
+ agl::utl::Parameter<bool> mEnableBatchProcessStreamOut;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName0;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName1;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName2;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName3;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName4;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName5;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName6;
+ agl::utl::Parameter<sead::FixedSafeString<0x40>> mLightMapName7;
+};
+
+} // namespace gsys
diff --git a/lib/gsys/src/gsys/gsysParticleConfig.cpp b/lib/gsys/src/gsys/gsysParticleConfig.cpp
new file mode 100644
index 00000000..6b882551
--- /dev/null
+++ b/lib/gsys/src/gsys/gsysParticleConfig.cpp
@@ -0,0 +1,67 @@
+#include "gsys/gsysParticleConfig.h"
+
+#include "gsys/gsysORUtil.h"
+
+namespace gsys {
+
+ParticleConfig::ParticleConfig()
+ : IParameterIO("ptclconf", 0),
+ mGpuParticleHeapSize(0x100000, "gpu_particle_heap_size", "GpuParticleHeapSize", &mData2),
+ mEffectModelHeapSize(0x20000, "EffectModelHeapSize", "effect_model_heap_size", &mData2),
+ mPtclEmitCallbackHeapSize(0x10000, "ptcl_emit_callback_heap_size", "PtclEmitCallbackHeapSize",
+ &mData2),
+ mEnableParticleLinearDepth(true, "enable_particle_lineardepth", "EnableParticleLinearDepth",
+ &mData2),
+ mEnableBatchProcessStreamOut(true, "enable_batck_process_streamout",
+ "EnableBatchProcessStreamOut", &mData2), // typo: batck
+ mLightMapName0(sead::FixedSafeString<0x40>("Default"), "light_map_name_0", "ライトマップ0",
+ &mData2),
+ mLightMapName1(sead::FixedSafeString<0x40>("Default"), "light_map_name_1", "ライトマップ1",
+ &mData2),
+ mLightMapName2(sead::FixedSafeString<0x40>("Default"), "light_map_name_2", "ライトマップ2",
+ &mData2),
+ mLightMapName3(sead::FixedSafeString<0x40>("Default"), "light_map_name_3", "ライトマップ3",
+ &mData2),
+ mLightMapName4(sead::FixedSafeString<0x40>("Default"), "light_map_name_4", "ライトマップ4",
+ &mData2),
+ mLightMapName5(sead::FixedSafeString<0x40>("Default"), "light_map_name_5", "ライトマップ5",
+ &mData2),
+ mLightMapName6(sead::FixedSafeString<0x40>("Default"), "light_map_name_6", "ライトマップ6",
+ &mData2),
+ mLightMapName7(sead::FixedSafeString<0x40>("Default"), "light_map_name_7", "ライトマップ7",
+ &mData2) {
+ addObj(&mData2, "ParticleConfig");
+}
+
+const char* ParticleConfig::getLightMapName(unsigned int index) const {
+ switch (index) {
+ case 0:
+ return mLightMapName0->cstr();
+ case 1:
+ return mLightMapName1->cstr();
+ case 2:
+ return mLightMapName2->cstr();
+ case 3:
+ return mLightMapName3->cstr();
+ case 4:
+ return mLightMapName4->cstr();
+ case 5:
+ return mLightMapName5->cstr();
+ case 6:
+ return mLightMapName6->cstr();
+ case 7:
+ return mLightMapName7->cstr();
+ default:
+ return "";
+ }
+}
+
+void ParticleConfig::initialize(sead::Heap* heap, sead::Heap* hio_heap) {
+ ORUtil::setNodeMetaIcon(this, ORUtil::Icon::_b, hio_heap);
+}
+
+void ParticleConfig::applyResouce(const void* data) {
+ applyResParameterArchive(agl::utl::ResParameterArchive{data});
+}
+
+} // namespace gsys