mirror of https://github.com/zeldaret/botw.git
ksys/chm: Add Root
This commit is contained in:
parent
1394d3536d
commit
46dc4bf31c
|
@ -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.
|
|
@ -1,6 +1,8 @@
|
|||
target_sources(uking PRIVATE
|
||||
chmShape.cpp
|
||||
chmShape.h
|
||||
chmRigid.cpp
|
||||
chmRigid.h
|
||||
chmRoot.cpp
|
||||
chmRoot.h
|
||||
chmShape.cpp
|
||||
chmShape.h
|
||||
)
|
||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue