mirror of
https://github.com/whoahq/whoa.git
synced 2026-02-01 00:02:45 +03:00
chore(component): render prep funcs are not static
This commit is contained in:
parent
794003086b
commit
b370d86f7d
@ -18,7 +18,7 @@ uint32_t CCharacterComponent::s_chrVarArrayLength;
|
||||
EGxTexFormat CCharacterComponent::s_gxFormat;
|
||||
ITEM_FUNC CCharacterComponent::s_itemFunc[];
|
||||
uint32_t CCharacterComponent::s_mipLevels;
|
||||
PREP_FUNC* CCharacterComponent::s_prepFunc[];
|
||||
PREP_FUNC CCharacterComponent::s_prepFunc[];
|
||||
CompSectionInfo CCharacterComponent::s_sectionInfo[];
|
||||
MipBits* CCharacterComponent::s_textureBuffer;
|
||||
MipBits* CCharacterComponent::s_textureBufferCompressed;
|
||||
@ -401,230 +401,6 @@ void CCharacterComponent::PasteTransparent8Bit(void* srcTexture, const BlpPalPix
|
||||
// TODO
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepAL(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_ARM_LOWER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_ARM_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_AL_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_ARM_LOWER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepAU(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_ARM_UPPER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_ARM_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_AU_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_ARM_UPPER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepFO(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_FOOT];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_FOOT, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_FO_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_FOOT, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepHA(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_HAND];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_HAND, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_HA_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HAND, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepHL(CCharacterComponent* component) {
|
||||
auto sectionsRec = component->GetSectionsRecord(VARIATION_SKIN, 0, component->m_data.skinColorID, nullptr);
|
||||
|
||||
// Skin texture
|
||||
|
||||
if (sectionsRec && sectionsRec->m_flags & 0x8) {
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_HEAD_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Face texture
|
||||
|
||||
auto faceLowerTexture = component->m_texture[TEXTURE_INDEX(VARIATION_FACE, 0)];
|
||||
if (faceLowerTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_LOWER, faceLowerTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Hair textures
|
||||
|
||||
auto facialHairLowerTexture = component->m_texture[TEXTURE_INDEX(VARIATION_FACIAL_HAIR, 0)];
|
||||
if (facialHairLowerTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_LOWER, facialHairLowerTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
auto hairLowerTexture = component->m_texture[TEXTURE_INDEX(VARIATION_HAIR, 1)];
|
||||
if (hairLowerTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_LOWER, hairLowerTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepHU(CCharacterComponent* component) {
|
||||
auto sectionsRec = component->GetSectionsRecord(VARIATION_SKIN, 0, component->m_data.skinColorID, nullptr);
|
||||
|
||||
// Skin texture
|
||||
|
||||
if (sectionsRec && sectionsRec->m_flags & 0x8) {
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_HEAD_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Face texture
|
||||
|
||||
auto faceUpperTexture = component->m_texture[TEXTURE_INDEX(VARIATION_FACE, 1)];
|
||||
if (faceUpperTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_UPPER, faceUpperTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Hair textures
|
||||
|
||||
auto facialHairUpperTexture = component->m_texture[TEXTURE_INDEX(VARIATION_FACIAL_HAIR, 1)];
|
||||
if (facialHairUpperTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_UPPER, facialHairUpperTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
auto hairUpperTexture = component->m_texture[TEXTURE_INDEX(VARIATION_HAIR, 2)];
|
||||
if (hairUpperTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_UPPER, hairUpperTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepLL(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_LEG_LOWER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_LEG_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
auto firstPriority = 0;
|
||||
auto itemPriorities = SECTION_LL_ITEM_PRIORITIES;
|
||||
|
||||
if (component->m_flags & 0x20) {
|
||||
firstPriority = 1;
|
||||
itemPriorities = SECTION_LL_ITEM_PRIORITIES - 2;
|
||||
}
|
||||
|
||||
for (int32_t priority = firstPriority; priority < itemPriorities; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_LEG_LOWER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepLU(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_LEG_UPPER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_LEG_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Underwear texture
|
||||
|
||||
if ((component->m_flags & 0x20) || !(itemDisplay.priorityDirty & ((1 << 0) | (1 << 1)))) {
|
||||
auto bottomUnderwearTexture = component->m_texture[TEXTURE_INDEX(VARIATION_UNDERWEAR, 0)];
|
||||
if (bottomUnderwearTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_LEG_UPPER, bottomUnderwearTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
// Item textures
|
||||
|
||||
auto firstPriority = (component->m_flags & 0x20) ? 1 : 0;
|
||||
|
||||
for (int32_t priority = firstPriority; priority < SECTION_LU_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_LEG_UPPER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepTL(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_TORSO_LOWER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_TORSO_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_TL_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_TORSO_LOWER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepTU(CCharacterComponent* component) {
|
||||
auto& itemDisplay = component->m_itemDisplays[SECTION_TORSO_UPPER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = component->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_TORSO_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Underwear texture
|
||||
|
||||
if (!(itemDisplay.priorityDirty & ((1 << 0) | (1 << 1) | (1 << 2)))) {
|
||||
auto topUnderwearTexture = component->m_texture[TEXTURE_INDEX(VARIATION_UNDERWEAR, 1)];
|
||||
if (topUnderwearTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_TORSO_UPPER, topUnderwearTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_TU_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_TORSO_UPPER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::UpdateBaseTexture(EGxTexCommand cmd, uint32_t width, uint32_t height, uint32_t depth, uint32_t mipLevel, void* userArg, uint32_t& texelStrideInBytes, const void*& texels) {
|
||||
auto component = static_cast<CCharacterComponent*>(userArg);
|
||||
|
||||
@ -847,6 +623,230 @@ int32_t CCharacterComponent::RenderPrep(int32_t a2) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepAL() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_ARM_LOWER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_ARM_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_AL_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_ARM_LOWER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepAU() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_ARM_UPPER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_ARM_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_AU_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_ARM_UPPER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepFO() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_FOOT];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_FOOT, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_FO_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_FOOT, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepHA() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_HAND];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_HAND, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_HA_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HAND, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepHL() {
|
||||
auto sectionsRec = this->GetSectionsRecord(VARIATION_SKIN, 0, this->m_data.skinColorID, nullptr);
|
||||
|
||||
// Skin texture
|
||||
|
||||
if (sectionsRec && sectionsRec->m_flags & 0x8) {
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_HEAD_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Face texture
|
||||
|
||||
auto faceLowerTexture = this->m_texture[TEXTURE_INDEX(VARIATION_FACE, 0)];
|
||||
if (faceLowerTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_LOWER, faceLowerTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Hair textures
|
||||
|
||||
auto facialHairLowerTexture = this->m_texture[TEXTURE_INDEX(VARIATION_FACIAL_HAIR, 0)];
|
||||
if (facialHairLowerTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_LOWER, facialHairLowerTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
auto hairLowerTexture = this->m_texture[TEXTURE_INDEX(VARIATION_HAIR, 1)];
|
||||
if (hairLowerTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_LOWER, hairLowerTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepHU() {
|
||||
auto sectionsRec = this->GetSectionsRecord(VARIATION_SKIN, 0, this->m_data.skinColorID, nullptr);
|
||||
|
||||
// Skin texture
|
||||
|
||||
if (sectionsRec && sectionsRec->m_flags & 0x8) {
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_HEAD_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Face texture
|
||||
|
||||
auto faceUpperTexture = this->m_texture[TEXTURE_INDEX(VARIATION_FACE, 1)];
|
||||
if (faceUpperTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_UPPER, faceUpperTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
// Hair textures
|
||||
|
||||
auto facialHairUpperTexture = this->m_texture[TEXTURE_INDEX(VARIATION_FACIAL_HAIR, 1)];
|
||||
if (facialHairUpperTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_UPPER, facialHairUpperTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
|
||||
auto hairUpperTexture = this->m_texture[TEXTURE_INDEX(VARIATION_HAIR, 2)];
|
||||
if (hairUpperTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_HEAD_UPPER, hairUpperTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepLL() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_LEG_LOWER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_LEG_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
auto firstPriority = 0;
|
||||
auto itemPriorities = SECTION_LL_ITEM_PRIORITIES;
|
||||
|
||||
if (this->m_flags & 0x20) {
|
||||
firstPriority = 1;
|
||||
itemPriorities = SECTION_LL_ITEM_PRIORITIES - 2;
|
||||
}
|
||||
|
||||
for (int32_t priority = firstPriority; priority < itemPriorities; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_LEG_LOWER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepLU() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_LEG_UPPER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_LEG_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Underwear texture
|
||||
|
||||
if ((this->m_flags & 0x20) || !(itemDisplay.priorityDirty & ((1 << 0) | (1 << 1)))) {
|
||||
auto bottomUnderwearTexture = this->m_texture[TEXTURE_INDEX(VARIATION_UNDERWEAR, 0)];
|
||||
if (bottomUnderwearTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_LEG_UPPER, bottomUnderwearTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
// Item textures
|
||||
|
||||
auto firstPriority = (this->m_flags & 0x20) ? 1 : 0;
|
||||
|
||||
for (int32_t priority = firstPriority; priority < SECTION_LU_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_LEG_UPPER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepTL() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_TORSO_LOWER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_TORSO_LOWER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_TL_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_TORSO_LOWER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepTU() {
|
||||
auto& itemDisplay = this->m_itemDisplays[SECTION_TORSO_UPPER];
|
||||
|
||||
// Skin texture
|
||||
|
||||
auto skinTexture = this->m_texture[TEXTURE_INDEX(VARIATION_SKIN, 0)];
|
||||
CCharacterComponent::PasteFromSkin(SECTION_TORSO_UPPER, skinTexture, CCharacterComponent::s_textureBuffer);
|
||||
|
||||
// Underwear texture
|
||||
|
||||
if (!(itemDisplay.priorityDirty & ((1 << 0) | (1 << 1) | (1 << 2)))) {
|
||||
auto topUnderwearTexture = this->m_texture[TEXTURE_INDEX(VARIATION_UNDERWEAR, 1)];
|
||||
if (topUnderwearTexture) {
|
||||
CCharacterComponent::PasteToSection(SECTION_TORSO_UPPER, topUnderwearTexture, CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
// Item textures
|
||||
|
||||
for (int32_t priority = 0; priority < SECTION_TU_ITEM_PRIORITIES; priority++) {
|
||||
if (itemDisplay.priorityDirty & (1 << priority)) {
|
||||
CCharacterComponent::PasteToSection(SECTION_TORSO_UPPER, itemDisplay.texture[priority], CCharacterComponent::s_textureBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCharacterComponent::RenderPrepAll() {
|
||||
// TODO
|
||||
|
||||
@ -856,7 +856,7 @@ void CCharacterComponent::RenderPrepAll() {
|
||||
this->ItemsLoaded(1);
|
||||
|
||||
for (uint32_t i = 0; i < NUM_COMPONENT_SECTIONS; i++) {
|
||||
CCharacterComponent::s_prepFunc[i](this);
|
||||
(this->*CCharacterComponent::s_prepFunc[i])();
|
||||
}
|
||||
|
||||
// TODO
|
||||
|
||||
@ -16,7 +16,7 @@ struct st_race;
|
||||
struct TCTEXTUREINFO;
|
||||
|
||||
typedef void (CCharacterComponent::*ITEM_FUNC)(ITEM_SLOT itemSlot, const ItemDisplayInfoRec* displayRec, bool update);
|
||||
typedef void (PREP_FUNC)(CCharacterComponent* component);
|
||||
typedef void (CCharacterComponent::*PREP_FUNC)();
|
||||
|
||||
struct CompSectionInfo {
|
||||
C2iVector pos;
|
||||
@ -38,7 +38,7 @@ class CCharacterComponent {
|
||||
static EGxTexFormat s_gxFormat;
|
||||
static ITEM_FUNC s_itemFunc[NUM_COMPONENT_SECTIONS];
|
||||
static uint32_t s_mipLevels;
|
||||
static PREP_FUNC* s_prepFunc[NUM_COMPONENT_SECTIONS];
|
||||
static PREP_FUNC s_prepFunc[NUM_COMPONENT_SECTIONS];
|
||||
static CompSectionInfo s_sectionInfo[NUM_COMPONENT_SECTIONS];
|
||||
static CompSectionInfo s_sectionInfoRaw[NUM_COMPONENT_SECTIONS];
|
||||
static MipBits* s_textureBuffer;
|
||||
@ -51,16 +51,6 @@ class CCharacterComponent {
|
||||
static void Initialize();
|
||||
static void Initialize(EGxTexFormat textureFormat, uint32_t textureLevel, int32_t thread, int32_t compress);
|
||||
static void InitDbData();
|
||||
static void RenderPrepAL(CCharacterComponent* component);
|
||||
static void RenderPrepAU(CCharacterComponent* component);
|
||||
static void RenderPrepFO(CCharacterComponent* component);
|
||||
static void RenderPrepHA(CCharacterComponent* component);
|
||||
static void RenderPrepHL(CCharacterComponent* component);
|
||||
static void RenderPrepHU(CCharacterComponent* component);
|
||||
static void RenderPrepLL(CCharacterComponent* component);
|
||||
static void RenderPrepLU(CCharacterComponent* component);
|
||||
static void RenderPrepTL(CCharacterComponent* component);
|
||||
static void RenderPrepTU(CCharacterComponent* component);
|
||||
static void Paste(void* srcTexture, MipBits* dstMips, const C2iVector& a3, const C2iVector& a4, const C2iVector& a5, TCTEXTUREINFO& srcInfo, int32_t srcMipLevel);
|
||||
static void PasteFromSkin(COMPONENT_SECTIONS section, void* srcTexture, MipBits* dstMips);
|
||||
static void PasteOpaque(void* srcTexture, const BlpPalPixel* srcPal, MipBits* dstMips, const C2iVector& dstPos, uint32_t dstWidth, const C2iVector& srcPos, const C2iVector& srcSize, TCTEXTUREINFO& srcInfo, int32_t srcMipLevel, int32_t dstMipLevelOfs);
|
||||
@ -91,6 +81,16 @@ class CCharacterComponent {
|
||||
void LoadBaseVariation(COMPONENT_VARIATIONS sectionIndex, int32_t textureIndex, int32_t variationIndex, int32_t colorIndex, COMPONENT_SECTIONS section, const char* a7);
|
||||
void PrepSections();
|
||||
int32_t RenderPrep(int32_t a2);
|
||||
void RenderPrepAL();
|
||||
void RenderPrepAU();
|
||||
void RenderPrepFO();
|
||||
void RenderPrepHA();
|
||||
void RenderPrepHL();
|
||||
void RenderPrepHU();
|
||||
void RenderPrepLL();
|
||||
void RenderPrepLU();
|
||||
void RenderPrepTL();
|
||||
void RenderPrepTU();
|
||||
void RenderPrepAll();
|
||||
void RenderPrepSections();
|
||||
void ReplaceExtraSkinTexture(const char* a2);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user