Add CParticleData

Former-commit-id: 3d5758b0ff
This commit is contained in:
Phillip Stephens 2023-01-07 18:11:54 -08:00
parent 4b120a5418
commit eec994634a
11 changed files with 40 additions and 17 deletions

View File

@ -350,7 +350,7 @@ lbl_802F7F64:
/* 802F8048 002F4FA8 7C 7F 1B 78 */ mr r31, r3
/* 802F804C 002F4FAC 88 0D A7 6C */ lbz r0, lbl_805A932C@sda21(r13)
/* 802F8050 002F4FB0 98 01 00 08 */ stb r0, 8(r1)
/* 802F8054 002F4FB4 4B D6 14 A5 */ bl sub_800594f8
/* 802F8054 002F4FB4 4B D6 14 A5 */ bl "cinput_stream_helper<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>__FRC82TType<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>R12CInputStream"
/* 802F8058 002F4FB8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802F805C 002F4FBC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802F8060 002F4FC0 7C 08 03 A6 */ mtlr r0

View File

@ -752,7 +752,7 @@ sub_802de18c:
/* 802DE1A4 002DB104 7C 7F 1B 78 */ mr r31, r3
/* 802DE1A8 002DB108 88 0D A6 C4 */ lbz r0, lbl_805A9284@sda21(r13)
/* 802DE1AC 002DB10C 98 01 00 08 */ stb r0, 8(r1)
/* 802DE1B0 002DB110 4B D7 B3 49 */ bl sub_800594f8
/* 802DE1B0 002DB110 4B D7 B3 49 */ bl "cinput_stream_helper<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>__FRC82TType<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>R12CInputStream"
/* 802DE1B4 002DB114 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802DE1B8 002DB118 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802DE1BC 002DB11C 7C 08 03 A6 */ mtlr r0

View File

@ -66,7 +66,7 @@ __ct__13CParticleDataFR12CInputStream:
/* 803574BC 0035441C 7C 7F 1B 78 */ mr r31, r3
/* 803574C0 00354420 88 0D AA 94 */ lbz r0, lbl_805A9654@sda21(r13)
/* 803574C4 00354424 98 01 00 08 */ stb r0, 8(r1)
/* 803574C8 00354428 4B D0 20 31 */ bl sub_800594f8
/* 803574C8 00354428 4B D0 20 31 */ bl "cinput_stream_helper<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>__FRC82TType<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>R12CInputStream"
/* 803574CC 0035442C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803574D0 00354430 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803574D4 00354434 7C 08 03 A6 */ mtlr r0

View File

@ -4226,15 +4226,15 @@ sub_800594bc:
/* 800594D4 00056434 7C 7F 1B 78 */ mr r31, r3
/* 800594D8 00056438 88 0D A2 24 */ lbz r0, lbl_805A8DE4@sda21(r13)
/* 800594DC 0005643C 98 01 00 08 */ stb r0, 8(r1)
/* 800594E0 00056440 48 00 00 19 */ bl sub_800594f8
/* 800594E0 00056440 48 00 00 19 */ bl "cinput_stream_helper<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>__FRC82TType<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>R12CInputStream"
/* 800594E4 00056444 80 01 00 24 */ lwz r0, 0x24(r1)
/* 800594E8 00056448 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 800594EC 0005644C 7C 08 03 A6 */ mtlr r0
/* 800594F0 00056450 38 21 00 20 */ addi r1, r1, 0x20
/* 800594F4 00056454 4E 80 00 20 */ blr
.global sub_800594f8
sub_800594f8:
.global "cinput_stream_helper<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>__FRC82TType<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>R12CInputStream"
"cinput_stream_helper<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>__FRC82TType<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>R12CInputStream":
/* 800594F8 00056458 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800594FC 0005645C 7C 08 02 A6 */ mflr r0
/* 80059500 00056460 7C A4 2B 78 */ mr r4, r5

View File

@ -665,7 +665,7 @@ LIBS = [
["Kyoto/Text/CStringTable", True],
"Kyoto/Particles/CEmitterElement",
"Kyoto/Particles/CEffectComponent",
"Kyoto/Particles/CParticleData",
["Kyoto/Particles/CParticleData", False],
"Kyoto/Animation/CVertexMorphEffect",
"Kyoto/Animation/CSkinnedModelWithAvgNormals",
["Kyoto/CTimeProvider", True],

View File

@ -3,7 +3,7 @@
#include "types.h"
#include "Kyoto/Animation/CParticleData.hpp"
#include "Kyoto/Particles/CParticleData.hpp"
class CEffectComponent {
private:

View File

@ -4,7 +4,7 @@
#include "types.h"
#include "Kyoto/Animation/CCharAnimTime.hpp"
#include "Kyoto/Animation/CParticleData.hpp"
#include "Kyoto/Particles/CParticleData.hpp"
#include "rstl/string.hpp"

View File

@ -8,6 +8,7 @@
#include "rstl/string.hpp"
class CInputStream;
class CParticleData {
public:
enum EParentedMode {
@ -16,8 +17,18 @@ public:
kPM_ContinuousSystem,
};
CParticleData(int duration, const SObjectTag& tag, const rstl::string& boneName, float scale,
EParentedMode mode)
: x0_duration(duration)
, x4_particle(tag)
, xc_boneName(boneName)
, x1c_scale(scale)
, x20_parentMode(mode) {}
CParticleData(CInputStream& in);
private:
uint x0_duration;
int x0_duration;
SObjectTag x4_particle;
rstl::string xc_boneName;
float x1c_scale;

View File

@ -11,6 +11,11 @@ struct TType {};
template < typename T >
T cinput_stream_helper(const TType< T >& type, CInputStream& in);
template < typename T >
TType< T > TGetType() {
return TType< T >();
}
class CInputStream {
public:
CInputStream(int len);
@ -56,8 +61,8 @@ private:
uint x20_bitOffset;
};
template <typename T>
inline T cinput_stream_helper(const TType<T>& type, CInputStream& in) {
template < typename T >
inline T cinput_stream_helper(const TType< T >& type, CInputStream& in) {
return T(in);
}
template <>
@ -118,13 +123,10 @@ inline rstl::vector< T, Alloc >::vector(CInputStream& in, const Alloc& allocator
#include "rstl/reserved_vector.hpp"
template < typename T, int N >
inline rstl::reserved_vector< T, N >::reserved_vector(CInputStream& in)
: x0_count(in.ReadInt32()) {
inline rstl::reserved_vector< T, N >::reserved_vector(CInputStream& in) : x0_count(in.ReadInt32()) {
for (int i = 0; i < x0_count; i++) {
construct(&data()[i], in.Get(TType< T >()));
}
}
#endif // _CINPUTSTREAM

View File

@ -1,7 +1,7 @@
#ifndef _CPARTICLEGENINFO
#define _CPARTICLEGENINFO
#include "Kyoto/Animation/CParticleData.hpp"
#include "Kyoto/Particles/CParticleData.hpp"
#include "MetroidPrime/TGameTypes.hpp"

View File

@ -0,0 +1,10 @@
#include "Kyoto/Particles/CParticleData.hpp"
#include "Kyoto/Streams/CInputStream.hpp"
CParticleData::CParticleData(CInputStream& in)
: x0_duration(in.ReadLong())
, x4_particle(in.ReadLong(), in.ReadLong())
, xc_boneName(in.Get<rstl::string>())
, x1c_scale(in.ReadFloat())
, x20_parentMode(EParentedMode(in.ReadLong())) {}