31 static bool instantiated =
false;
33 tk::fatal(
"Cannot reuse the same template instanciation for two edits.");
37 pub::Profile* profile =
static_cast<pub::Profile*>(Profile::get(ID));
41 const ActorCreateInfo* mCreateInfo;
42 bool mCreateInfoModified;
46 bool mDrawPriorityModified;
48 bool mExecutePriorityModified;
49 sead::SafeString* mResources;
52 bool mResourcesModified;
54 .mCreateInfo =
this->mCreateInfo,
55 .mCreateInfoModified =
this->mCreateInfoModified,
57 .mFlagModified =
this->mFlagModified,
58 .mDrawPriority =
this->mDrawPriority,
59 .mDrawPriorityModified =
this->mDrawPriorityModified,
60 .mExecutePriority =
this->mExecutePriority,
61 .mExecutePriorityModified =
this->mExecutePriorityModified,
62 .mResources =
this->mResources,
63 .mResourceCount =
this->mResourceCount,
64 .mResourceType =
this->mResourceType,
65 .mResourcesModified =
this->mResourcesModified
68 static red::StaticInitEvent::Listener listener([](red::StaticInitEvent&) {
69 pub::Profile* profile =
static_cast<pub::Profile*>(Profile::get(ID));
71 if (sSnapshot.mCreateInfoModified) {
72 profile->mActorCreateInfo = sSnapshot.mCreateInfo;
75 if (sSnapshot.mFlagModified) {
76 profile->mFlag = sSnapshot.mFlag;
79 if (sSnapshot.mDrawPriorityModified) {
80 tk::privilegedWrite(&ProfileInfo::cDrawPriority[ID], &sSnapshot.mDrawPriority,
sizeof(ProfileInfo::cDrawPriority[ID]));
83 if (sSnapshot.mExecutePriorityModified) {
84 ProfileEx::setExecutePriority(ID, sSnapshot.mExecutePriority);
87 if (sSnapshot.mResourcesModified) {
88 tk::privilegedWrite(&ProfileInfo::cResList[ID], &sSnapshot.mResources,
sizeof(ProfileInfo::cResList[ID]));
89 tk::privilegedWrite(&ProfileInfo::cResNum[ID], &sSnapshot.mResourceCount,
sizeof(ProfileInfo::cResNum[ID]));
90 tk::privilegedWrite(&ProfileInfo::cResType[ID], &sSnapshot.mResourceType,
sizeof(ProfileInfo::cResType[ID]));