ksys/chm: Add Root

This commit is contained in:
Léo Lam 2021-03-21 17:56:36 +01:00
parent 1394d3536d
commit 46dc4bf31c
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 204 additions and 52 deletions

View File

@ -94676,57 +94676,57 @@
0x000000710127e42c,Element::rtti2,92,
0x000000710127e488,sub_710127E488,288,
0x000000710127e5a8,sub_710127E5A8,92,
0x000000710127e604,sub_710127E604,308,
0x000000710127e738,sub_710127E738,296,
0x000000710127e860,sub_710127E860,36,
0x000000710127e884,sub_710127E884,680,
0x000000710127e604,sub_710127E604,308,_ZN4ksys3chm4RootC1Ev
0x000000710127e738,sub_710127E738,296,_ZN4ksys3chm4RootD1Ev
0x000000710127e860,sub_710127E860,36,_ZN4ksys3chm4RootD0Ev
0x000000710127e884,sub_710127E884,680,_ZN4ksys3chm4Root5parseERKN3agl3utl16ResParameterListEPN4sead4HeapE
0x000000710127eb2c,sub_710127EB2C,784,_ZN4ksys3chm5RigidC1Ev
0x000000710127ee3c,sub_710127EE3C,8,
0x000000710127ee44,sub_710127EE44,32,
0x000000710127ee64,sub_710127EE64,36,
0x000000710127ee88,sub_710127EE88,36,
0x000000710127eeac,sub_710127EEAC,32,
0x000000710127eecc,sub_710127EECC,36,
0x000000710127eef0,sub_710127EEF0,32,
0x000000710127ef10,sub_710127EF10,40,
0x000000710127ef38,sub_710127EF38,32,
0x000000710127ef58,sub_710127EF58,36,
0x000000710127ef7c,sub_710127EF7C,36,
0x000000710127efa0,sub_710127EFA0,32,
0x000000710127efc0,sub_710127EFC0,36,
0x000000710127efe4,sub_710127EFE4,36,
0x000000710127f008,sub_710127F008,32,
0x000000710127f028,sub_710127F028,52,
0x000000710127f05c,sub_710127F05C,36,
0x000000710127f080,sub_710127F080,36,
0x000000710127f0a4,sub_710127F0A4,36,
0x000000710127f0c8,sub_710127F0C8,36,
0x000000710127f0ec,sub_710127F0EC,36,
0x000000710127f110,sub_710127F110,36,
0x000000710127f134,sub_710127F134,36,
0x000000710127f158,sub_710127F158,8,
0x000000710127f160,sub_710127F160,32,
0x000000710127f180,sub_710127F180,36,
0x000000710127f1a4,sub_710127F1A4,36,
0x000000710127f1c8,sub_710127F1C8,32,
0x000000710127f1e8,sub_710127F1E8,36,
0x000000710127f20c,sub_710127F20C,32,
0x000000710127f22c,sub_710127F22C,40,
0x000000710127f254,sub_710127F254,32,
0x000000710127f274,sub_710127F274,36,
0x000000710127f298,sub_710127F298,36,
0x000000710127f2bc,sub_710127F2BC,32,
0x000000710127f2dc,sub_710127F2DC,36,
0x000000710127f300,sub_710127F300,36,
0x000000710127f324,sub_710127F324,32,
0x000000710127f344,sub_710127F344,56,
0x000000710127f37c,sub_710127F37C,36,
0x000000710127f3a0,sub_710127F3A0,36,
0x000000710127f3c4,sub_710127F3C4,36,
0x000000710127f3e8,sub_710127F3E8,36,
0x000000710127f40c,sub_710127F40C,36,
0x000000710127f430,sub_710127F430,36,
0x000000710127f454,sub_710127F454,36,
0x000000710127ee3c,sub_710127EE3C,8,_ZNK4ksys3chm4Root12getNumShapesEv
0x000000710127ee44,sub_710127EE44,32,_ZNK4ksys3chm4Root8getShapeEi
0x000000710127ee64,sub_710127EE64,36,_ZNK4ksys3chm4Root20isRigidAttribute0SetEi
0x000000710127ee88,sub_710127EE88,36,_ZNK4ksys3chm4Root20isRigidAttribute1SetEi
0x000000710127eeac,sub_710127EEAC,32,_ZNK4ksys3chm4Root15getRigidSetNameEi
0x000000710127eecc,sub_710127EECC,36,_ZNK4ksys3chm4Root20isRigidAttribute2SetEi
0x000000710127eef0,sub_710127EEF0,32,_ZNK4ksys3chm4Root12getRigidNameEi
0x000000710127ef10,sub_710127EF10,40,_ZNK4ksys3chm4Root19rigidHasBurnOutTimeEi
0x000000710127ef38,sub_710127EF38,32,_ZNK4ksys3chm4Root19getRigidBurnOutTimeEi
0x000000710127ef58,sub_710127EF58,36,_ZNK4ksys3chm4Root20isRigidAttribute3SetEi
0x000000710127ef7c,sub_710127EF7C,36,_ZNK4ksys3chm4Root21isRigidAttribute15SetEi
0x000000710127efa0,sub_710127EFA0,32,_ZNK4ksys3chm4Root14getRigidVolumeEi
0x000000710127efc0,sub_710127EFC0,36,_ZNK4ksys3chm4Root20isRigidAttribute9SetEi
0x000000710127efe4,sub_710127EFE4,36,_ZNK4ksys3chm4Root21isRigidAttribute10SetEi
0x000000710127f008,sub_710127F008,32,_ZNK4ksys3chm4Root12getRigidMassEi
0x000000710127f028,sub_710127F028,52,_ZNK4ksys3chm4Root24isRigidAttribute6Or14SetEi
0x000000710127f05c,sub_710127F05C,36,_ZNK4ksys3chm4Root20isRigidAttribute5SetEi
0x000000710127f080,sub_710127F080,36,_ZNK4ksys3chm4Root20isRigidAttribute4SetEi
0x000000710127f0a4,sub_710127F0A4,36,_ZNK4ksys3chm4Root21isRigidAttribute11SetEi
0x000000710127f0c8,sub_710127F0C8,36,_ZNK4ksys3chm4Root21isRigidAttribute12SetEi
0x000000710127f0ec,sub_710127F0EC,36,_ZNK4ksys3chm4Root21isRigidAttribute13SetEi
0x000000710127f110,sub_710127F110,36,_ZNK4ksys3chm4Root21isRigidAttribute14SetEi
0x000000710127f134,sub_710127F134,36,_ZNK4ksys3chm4Root21isRigidAttribute16SetEi
0x000000710127f158,sub_710127F158,8,_ZThn80_NK4ksys3chm4Root12getNumShapesEv
0x000000710127f160,sub_710127F160,32,_ZThn80_NK4ksys3chm4Root8getShapeEi
0x000000710127f180,sub_710127F180,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute0SetEi
0x000000710127f1a4,sub_710127F1A4,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute1SetEi
0x000000710127f1c8,sub_710127F1C8,32,_ZThn80_NK4ksys3chm4Root15getRigidSetNameEi
0x000000710127f1e8,sub_710127F1E8,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute2SetEi
0x000000710127f20c,sub_710127F20C,32,_ZThn80_NK4ksys3chm4Root12getRigidNameEi
0x000000710127f22c,sub_710127F22C,40,_ZThn80_NK4ksys3chm4Root19rigidHasBurnOutTimeEi
0x000000710127f254,sub_710127F254,32,_ZThn80_NK4ksys3chm4Root19getRigidBurnOutTimeEi
0x000000710127f274,sub_710127F274,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute3SetEi
0x000000710127f298,sub_710127F298,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute15SetEi
0x000000710127f2bc,sub_710127F2BC,32,_ZThn80_NK4ksys3chm4Root14getRigidVolumeEi
0x000000710127f2dc,sub_710127F2DC,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute9SetEi
0x000000710127f300,sub_710127F300,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute10SetEi
0x000000710127f324,sub_710127F324,32,_ZThn80_NK4ksys3chm4Root12getRigidMassEi
0x000000710127f344,sub_710127F344,56,_ZThn80_NK4ksys3chm4Root24isRigidAttribute6Or14SetEi
0x000000710127f37c,sub_710127F37C,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute5SetEi
0x000000710127f3a0,sub_710127F3A0,36,_ZThn80_NK4ksys3chm4Root20isRigidAttribute4SetEi
0x000000710127f3c4,sub_710127F3C4,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute11SetEi
0x000000710127f3e8,sub_710127F3E8,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute12SetEi
0x000000710127f40c,sub_710127F40C,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute13SetEi
0x000000710127f430,sub_710127F430,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute14SetEi
0x000000710127f454,sub_710127F454,36,_ZThn80_NK4ksys3chm4Root21isRigidAttribute16SetEi
0x000000710127f478,sub_710127F478,56,_ZN4ksys3chm5RigidD2Ev
0x000000710127f4b0,j__ZdlPv_1277,4,_ZN4ksys3chm5RigidD0Ev
0x000000710127f4b4,EventMgr1Struct1::ctor,200,

Can't render this file because it is too large.

View File

@ -1,6 +1,8 @@
target_sources(uking PRIVATE
chmShape.cpp
chmShape.h
chmRigid.cpp
chmRigid.h
chmRoot.cpp
chmRoot.h
chmShape.cpp
chmShape.h
)

View File

@ -0,0 +1,34 @@
#include "KingSystem/Chemical/chmRoot.h"
namespace ksys::chm {
Root::Root() : res_shape_num(0, "res_shape_num", "シェイプ", "Min=0 ,Max=10", &chemical_header) {
addObj(&chemical_header, "chemical_header");
addList(&chemical_body, "chemical_body");
}
Root::~Root() {
shapes.freeBuffer();
rigids.freeBuffer();
}
void Root::parse(const agl::utl::ResParameterList& res_list, sead::Heap* heap) {
const auto header_obj = agl::utl::getResParameterObj(res_list, "chemical_header");
chemical_header.applyResParameterObj(header_obj, nullptr);
if (res_shape_num.ref() != 0) {
shapes.allocBufferAssert(res_shape_num.ref(), heap);
rigids.allocBufferAssert(res_shape_num.ref(), heap);
}
const auto body_list = agl::utl::getResParameterList(res_list, "chemical_body");
for (auto it = shapes.begin(), end = shapes.end(); it != end; ++it) {
chemical_body.addObj(std::addressof(*it),
sead::FormatFixedSafeString<16>("shape_%02d", it.getIndex()));
chemical_body.addObj(&rigids[it.getIndex()],
sead::FormatFixedSafeString<16>("rigid_c_%02d", it.getIndex()));
}
chemical_body.applyResParameterList(body_list);
}
} // namespace ksys::chm

View File

@ -0,0 +1,116 @@
#pragma once
#include <agl/Utils/aglParameter.h>
#include <agl/Utils/aglParameterIO.h>
#include <agl/Utils/aglParameterList.h>
#include <agl/Utils/aglParameterObj.h>
#include <container/seadBuffer.h>
#include <hostio/seadHostIONode.h>
#include "KingSystem/Chemical/chmRigid.h"
#include "KingSystem/Chemical/chmShape.h"
#include "KingSystem/Utils/Types.h"
namespace ksys::chm {
class IRoot {
public:
virtual int getNumShapes() const = 0;
virtual const IShape& getShape(int idx) const = 0;
virtual bool isRigidAttribute0Set(int idx) const = 0;
virtual bool isRigidAttribute1Set(int idx) const = 0;
virtual const sead::SafeString& getRigidSetName(int idx) const = 0;
virtual bool isRigidAttribute2Set(int idx) const = 0;
virtual const sead::SafeString& getRigidName(int idx) const = 0;
virtual bool rigidHasBurnOutTime(int idx) const = 0;
virtual float getRigidBurnOutTime(int idx) const = 0;
virtual bool isRigidAttribute3Set(int idx) const = 0;
virtual bool isRigidAttribute15Set(int idx) const = 0;
virtual float getRigidVolume(int idx) const = 0;
virtual bool isRigidAttribute9Set(int idx) const = 0;
virtual bool isRigidAttribute10Set(int idx) const = 0;
virtual float getRigidMass(int idx) const = 0;
virtual bool isRigidAttribute6Or14Set(int idx) const = 0;
virtual bool isRigidAttribute5Set(int idx) const = 0;
virtual bool isRigidAttribute4Set(int idx) const = 0;
virtual bool isRigidAttribute11Set(int idx) const = 0;
virtual bool isRigidAttribute12Set(int idx) const = 0;
virtual bool isRigidAttribute13Set(int idx) const = 0;
virtual bool isRigidAttribute14Set(int idx) const = 0;
virtual bool isRigidAttribute16Set(int idx) const = 0;
};
class Root : public agl::utl::ParameterList, public sead::hostio::Node, public IRoot {
public:
Root();
~Root() override;
void parse(const agl::utl::ResParameterList& res_list, sead::Heap* heap);
int getNumShapes() const override { return shapes.size(); }
const IShape& getShape(int idx) const override { return shapes[idx]; }
bool isRigidAttribute0Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 0);
}
bool isRigidAttribute1Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 1);
}
const sead::SafeString& getRigidSetName(int idx) const override {
return rigids[idx].getRigidSetName();
}
bool isRigidAttribute2Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 2);
}
const sead::SafeString& getRigidName(int idx) const override {
return rigids[idx].getRigidName();
}
bool rigidHasBurnOutTime(int idx) const override { return rigids[idx].getBurnOutTime() > 0.0; }
float getRigidBurnOutTime(int idx) const override { return rigids[idx].getBurnOutTime(); }
bool isRigidAttribute3Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 3);
}
bool isRigidAttribute15Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 15);
}
float getRigidVolume(int idx) const override { return rigids[idx].getVolume(); }
bool isRigidAttribute9Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 9);
}
bool isRigidAttribute10Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 10);
}
float getRigidMass(int idx) const override { return rigids[idx].getMass(); }
bool isRigidAttribute6Or14Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 6) || isRigidAttribute14Set(idx);
}
bool isRigidAttribute5Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 5);
}
bool isRigidAttribute4Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 4);
}
bool isRigidAttribute11Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 11);
}
bool isRigidAttribute12Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 12);
}
bool isRigidAttribute13Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 13);
}
bool isRigidAttribute14Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 14);
}
bool isRigidAttribute16Set(int idx) const override {
return rigids[idx].getAttribute() & (1 << 16);
}
private:
agl::utl::ParameterObj chemical_header;
agl::utl::Parameter<u32> res_shape_num;
agl::utl::ParameterList chemical_body;
sead::Buffer<Shape> shapes;
sead::Buffer<Rigid> rigids;
};
} // namespace ksys::chm