// // Generated By: dol2asm // Translation Unit: J2DPane // #include "JSystem/J2DGraph/J2DPane.h" #include "JSystem/J2DGraph/J2DManage.h" #include "JSystem/J2DGraph/J2DOrthoGraph.h" #include "JSystem/J2DGraph/J2DScreen.h" #include "JSystem/J3DGraphBase/J3DTransform.h" #include "JSystem/JUtility/JUTResource.h" #include "dol2asm.h" #include "dolphin/types.h" // // Declarations: // /* 802F5BF8-802F5CB8 2F0538 00C0+00 0/0 10/10 0/0 .text __ct__7J2DPaneFv */ J2DPane::J2DPane() : mBounds(), mGlobalBounds(), mClipRect(), mPaneTree(this) { mTransform = NULL; id = 'PAN1'; mVisible = true; mInfoTag = 0; mUserInfoTag = 0; mBounds.set(0, 0, 0, 0); initiate(); changeUseTrans(NULL); calcMtx(); } /* 802F5CB8-802F5D40 2F05F8 0088+00 3/3 0/0 0/0 .text initiate__7J2DPaneFv */ void J2DPane::initiate() { _4 = -1; mRotateOffsetY = mRotateOffsetX = mRotateZ = mRotateY = mRotateX = 0; mBasePosition = 0; mRotAxis = ROTATE_Z; mScaleY = mScaleX = 1; mCullMode = GX_CULL_NONE; mAlpha = 0xFF; mIsInfluencedAlpha = true; mColorAlpha = 0xFF; mConnected = false; calcMtx(); } /* 802F5D40-802F5DD0 2F0680 0090+00 0/0 1/1 0/0 .text * __ct__7J2DPaneFP7J2DPanebUxRCQ29JGeometry8TBox2 */ J2DPane::J2DPane(J2DPane* param_0, bool param_1, u64 tag, JGeometry::TBox2 const& box) : mBounds(), mGlobalBounds(), mClipRect(), mPaneTree(this) { mTransform = NULL; this->initialize(param_0, param_1, tag, box); } /* 802F5DD0-802F5E88 2F0710 00B8+00 1/1 0/0 0/0 .text * initialize__7J2DPaneFP7J2DPanebUxRCQ29JGeometry8TBox2 */ void J2DPane::initialize(J2DPane* pane, bool visible, u64 infoTag, JGeometry::TBox2 const& box) { id = 'PAN1'; mVisible = visible; mInfoTag = infoTag; mUserInfoTag = 0; mBounds.set(box); if (pane != NULL) { pane->mPaneTree.appendChild(&this->mPaneTree); } this->initiate(); this->changeUseTrans(pane); this->calcMtx(); } /* 802F5E88-802F5F08 2F07C8 0080+00 0/0 3/3 0/0 .text __ct__7J2DPaneFUxRCQ29JGeometry8TBox2 */ J2DPane::J2DPane(u64 infoTag, JGeometry::TBox2 const& box) : mBounds(), mGlobalBounds(), mClipRect(), mPaneTree(this) { mTransform = NULL; this->initialize(infoTag, box); } /* 802F5F08-802F5F9C 2F0848 0094+00 1/1 0/0 0/0 .text * initialize__7J2DPaneFUxRCQ29JGeometry8TBox2 */ void J2DPane::initialize(u64 tag, const JGeometry::TBox2& dim) { id = 'PAN1'; mVisible = true; mInfoTag = tag; mUserInfoTag = 0; mBounds.set(dim); initiate(); changeUseTrans(NULL); calcMtx(); } /* 802F5F9C-802F60C4 2F08DC 0128+00 0/0 1/1 0/0 .text * __ct__7J2DPaneFP7J2DPaneP20JSURandomInputStreamUc */ J2DPane::J2DPane(J2DPane* pane, JSURandomInputStream* inputStream, u8 isEx) : mPaneTree(this) { mTransform = NULL; if (isEx == 0) { s32 position = inputStream->getPosition(); s32 buf[2]; inputStream->read(&buf, sizeof(buf)); id = buf[0]; position += buf[1]; this->makePaneStream(pane, inputStream); inputStream->seek(position, JSUStreamSeekFrom_SET); } else { s32 position = inputStream->getPosition(); s32 buf[2]; inputStream->peek(&buf, sizeof(buf)); id = buf[0]; position += buf[1]; this->makePaneExStream(pane, inputStream); inputStream->seek(position, JSUStreamSeekFrom_SET); } } /* 802F60C4-802F63F8 2F0A04 0334+00 1/1 3/3 0/0 .text * makePaneStream__7J2DPaneFP7J2DPaneP20JSURandomInputStream */ void J2DPane::makePaneStream(J2DPane* pane, JSURandomInputStream* inputStream) { u8 unk; inputStream->read(&unk, 1); inputStream->read(&mVisible, 1); inputStream->skip(2); mInfoTag = inputStream->read32b(); f32 x0 = inputStream->readS16(); f32 y0 = inputStream->readS16(); f32 x1 = x0 + inputStream->readS16(); f32 y1 = y0 + inputStream->readS16(); mBounds.set(x0, y0, x1, y1); unk -= 6; mRotateX = 0; mRotateY = 0; mRotateZ = 0; if (unk != 0) { mRotateZ = inputStream->readU16(); unk--; } if (unk != 0) { mBasePosition = inputStream->readU8(); unk--; } else { mBasePosition = 0; } mRotAxis = ROTATE_Z; mAlpha = 0xFF; if (unk != 0) { mAlpha = inputStream->readU8(); unk--; } mIsInfluencedAlpha = true; if (unk != 0) { mIsInfluencedAlpha = inputStream->readU8(); unk--; } inputStream->align(4); if (pane != NULL) { pane->mPaneTree.appendChild(&this->mPaneTree); } mCullMode = GX_CULL_NONE; mColorAlpha = 0xFF; mConnected = false; _4 = 0xFFFF; mScaleX = 1; mScaleY = 1; mUserInfoTag = 0; this->changeUseTrans(pane); this->calcMtx(); } /* 802F63F8-802F658C 2F0D38 0194+00 4/4 0/0 0/0 .text changeUseTrans__7J2DPaneFP7J2DPane */ void J2DPane::changeUseTrans(J2DPane* pane) { f32 xOffset = 0; f32 yOffset = 0; if (mBasePosition % 3 == 1) { xOffset = mBounds.getWidth() / 2; } else if (mBasePosition % 3 == 2) { xOffset = mBounds.getWidth(); } if (mBasePosition / 3 == 1) { yOffset = mBounds.getHeight() / 2; } else if (mBasePosition / 3 == 2) { yOffset = mBounds.getHeight(); } mTranslateX = mBounds.i.x + xOffset; mTranslateY = mBounds.i.y + yOffset; mRotateOffsetX = xOffset; mRotateOffsetY = yOffset; f32 f1 = -mTranslateX; f32 f2 = -mTranslateY; mBounds.addPos(f1, f2); if (pane != NULL) { u8 otherBasePos = pane->mBasePosition; f32 width = pane->getWidth(); f32 height = pane->getHeight(); if (otherBasePos % 3 == 1) { mTranslateX -= width / 2; } else if (otherBasePos % 3 == 2) { mTranslateX -= width; } if (otherBasePos / 3 == 1) { mTranslateY -= height / 2; } else if (otherBasePos / 3 == 2) { mTranslateY -= height; } } } /* 802F658C-802F666C 2F0ECC 00E0+00 1/0 4/4 0/0 .text __dt__7J2DPaneFv */ J2DPane::~J2DPane() { JSUTreeIterator iterator; for (iterator = mPaneTree.getFirstChild(); iterator != mPaneTree.getEndChild();) { J2DPane* child = (iterator++).getObject(); delete child; } } /* 802F666C-802F6714 2F0FAC 00A8+00 0/0 2/2 0/0 .text appendChild__7J2DPaneFP7J2DPane */ bool J2DPane::appendChild(J2DPane* pChild) { if (pChild == NULL) return false; const J2DPane* parent = pChild->getParentPane(); bool result = mPaneTree.appendChild(&pChild->mPaneTree); if (result && parent == NULL) { pChild->add(mBounds.i.x, mBounds.i.y); pChild->calcMtx(); } return result; } /* 802F6714-802F67E0 2F1054 00CC+00 0/0 1/1 0/0 .text insertChild__7J2DPaneFP7J2DPaneP7J2DPane */ bool J2DPane::insertChild(J2DPane* before, J2DPane* child) { if (child == NULL) return false; const J2DPane* parent = child->getParentPane(); bool result = mPaneTree.insertChild(before != NULL ? &before->mPaneTree : NULL, &child->mPaneTree); if (result && parent == NULL) { child->add(mBounds.i.x, mBounds.i.y); child->calcMtx(); } return result; } /* 802F67E0-802F6D18 2F1120 0538+00 0/0 1/1 0/0 .text draw__7J2DPaneFffPC14J2DGrafContextbb */ void J2DPane::draw(f32 x, f32 y, J2DGrafContext const* grafCtx, bool isOrthoGraf, bool param_4) { bool unkBool = param_4 && mVisible; if (grafCtx->getGrafType() != 1) { isOrthoGraf = false; } JSUTree* parentTree = mPaneTree.getParent(); J2DPane* parent = NULL; if (parentTree != NULL) { parent = parentTree->getObject(); } if (mBounds.isValid()) { mGlobalBounds = mBounds; f32 tX = mTranslateX; f32 tY = mTranslateY; mGlobalBounds.addPos(tX, tY); if (unkBool) { mClipRect = mBounds; this->rewriteAlpha(); } if (parent != NULL) { f32 width = parent->mGlobalBounds.i.x - parent->mBounds.i.x; f32 height = parent->mGlobalBounds.i.y - parent->mBounds.i.y; mGlobalBounds.addPos(width, height); PSMTXConcat(parent->mGlobalMtx, this->mPositionMtx, this->mGlobalMtx); if (unkBool) { if (isOrthoGraf) { mClipRect = mGlobalBounds; mClipRect.intersect(parent->mClipRect); } mColorAlpha = mAlpha; if (mIsInfluencedAlpha) { mColorAlpha = (mAlpha * parent->mColorAlpha) / 0xFF; } } } else { mGlobalBounds.addPos(x, y); this->makeMatrix(mTranslateX + x, mTranslateY + y); PSMTXCopy(mPositionMtx, mGlobalMtx); mClipRect = mGlobalBounds; mColorAlpha = mAlpha; } JGeometry::TBox2 scissorBounds(0, 0, 0, 0); if (unkBool && isOrthoGraf) { ((J2DOrthoGraph*)grafCtx)->scissorBounds(&scissorBounds, &mClipRect); } if (unkBool && (mClipRect.isValid() || !isOrthoGraf)) { J2DGrafContext tmpGraf(*grafCtx); if (isOrthoGraf) { tmpGraf.scissor(scissorBounds); tmpGraf.setScissor(); } GXSetCullMode((GXCullMode)mCullMode); this->drawSelf(x, y, &tmpGraf.mPosMtx); } JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->draw(0, 0, grafCtx, isOrthoGraf, unkBool); } } } /* 802F6D18-802F6F60 2F1658 0248+00 2/2 4/4 0/0 .text place__7J2DPaneFRCQ29JGeometry8TBox2 */ void J2DPane::place(JGeometry::TBox2 const& box) { JGeometry::TBox2 tmpBox; if (mBounds.i.x == 0) { tmpBox.i.x = 0; tmpBox.f.x = box.getWidth(); mTranslateX = box.i.x; } else if (mBounds.f.x == 0) { tmpBox.i.x = -box.getWidth(); tmpBox.f.x = 0; mTranslateX = box.f.x; } else { tmpBox.i.x = -(box.getWidth() / 2); tmpBox.f.x = box.getWidth() / 2; mTranslateX = (box.i.x + box.f.x) / 2; } if (mBounds.i.y == 0) { tmpBox.i.y = 0; tmpBox.f.y = box.getHeight(); mTranslateY = box.i.y; } else if (mBounds.f.y == 0) { tmpBox.i.y = -box.getHeight(); tmpBox.f.y = 0; mTranslateY = box.f.y; } else { tmpBox.i.y = -(box.getHeight() / 2); tmpBox.f.y = box.getHeight() / 2; mTranslateY = (box.i.y + box.f.y) / 2; } f32 xOff = tmpBox.i.x - mBounds.i.x; f32 yOff = tmpBox.i.y - mBounds.i.y; for (J2DPane* childPane = this->getFirstChildPane(); childPane != NULL; childPane = childPane->getNextChildPane()) { childPane->mTranslateX += xOff; childPane->mTranslateY += yOff; if (xOff != 0 || yOff != 0) { childPane->calcMtx(); } } mBounds = tmpBox; J2DPane* parent = this->getParentPane(); if (parent != NULL) { mTranslateX += parent->mBounds.i.x; mTranslateY += parent->mBounds.i.y; } this->calcMtx(); } /* 802F6F60-802F6FB4 2F18A0 0054+00 1/0 7/0 0/0 .text move__7J2DPaneFff */ void J2DPane::move(f32 x, f32 y) { f32 width = getWidth(); f32 height = getHeight(); place(JGeometry::TBox2(x, y, x + width, y + height)); } /* 802F6FB4-802F6FF8 2F18F4 0044+00 1/0 7/0 0/0 .text add__7J2DPaneFff */ void J2DPane::add(f32 x, f32 y) { mTranslateX += x; mTranslateY += y; calcMtx(); } /* 802F6FF8-802F7100 2F1938 0108+00 1/0 5/2 0/0 .text resize__7J2DPaneFff */ void J2DPane::resize(f32 x, f32 y) { JGeometry::TBox2 box = mBounds; f32 tX = mTranslateX; f32 tY = mTranslateY; box.addPos(tX, tY); const J2DPane* parent = getParentPane(); if (parent != NULL) { f32 xAdd = -parent->mBounds.i.x; f32 yAdd = -parent->mBounds.i.y; box.addPos(xAdd, yAdd); } box.f.x = box.i.x + x; box.f.y = box.i.y + y; place(box); } /* ############################################################################################## */ /* 804349B0-804349C0 0616D0 0010+00 2/2 0/0 0/0 .bss static_mBounds__7J2DPane */ JGeometry::TBox2 J2DPane::static_mBounds(0, 0, 0, 0); /* 802F7100-802F71DC 2F1A40 00DC+00 0/0 25/25 1/1 .text getBounds__7J2DPaneFv */ JGeometry::TBox2& J2DPane::getBounds() { static_mBounds = mBounds; f32 tX = mTranslateX; f32 tY = mTranslateY; static_mBounds.addPos(tX, tY); const J2DPane* parent = getParentPane(); if (parent != NULL) { f32 xAdd = -parent->mBounds.i.x; f32 yAdd = -parent->mBounds.i.y; static_mBounds.addPos(xAdd, yAdd); } return static_mBounds; } /* 802F71DC-802F720C 2F1B1C 0030+00 0/0 12/12 0/0 .text rotate__7J2DPaneFff13J2DRotateAxisf */ void J2DPane::rotate(f32 offsetX, f32 offsetY, J2DRotateAxis axis, f32 angle) { mRotateOffsetX = offsetX; mRotateOffsetY = offsetY; mRotAxis = axis; rotate(angle); } /* 802F720C-802F7264 2F1B4C 0058+00 1/1 0/0 0/0 .text rotate__7J2DPaneFf */ void J2DPane::rotate(f32 angle) { if (mRotAxis == ROTATE_X) { mRotateX = angle; } else if (mRotAxis == ROTATE_Y) { mRotateY = angle; } else { mRotateZ = angle; } calcMtx(); } /* 802F7264-802F72E0 2F1BA4 007C+00 0/0 2/2 0/0 .text clip__7J2DPaneFRCQ29JGeometry8TBox2 */ void J2DPane::clip(JGeometry::TBox2 const& box) { JGeometry::TBox2 boxA(box); JGeometry::TBox2 boxB(mGlobalBounds); boxA.addPos(boxB.i); mClipRect.intersect(boxA); } /* 802F72E0-802F7388 2F1C20 00A8+00 1/0 7/1 0/0 .text search__7J2DPaneFUx */ J2DPane* J2DPane::search(u64 tag) { if (tag == mInfoTag) { return this; } JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { if (J2DPane* result = iter.getObject()->search(tag)) { return result; } } return NULL; } /* 802F7388-802F7430 2F1CC8 00A8+00 1/0 7/1 0/0 .text searchUserInfo__7J2DPaneFUx */ J2DPane* J2DPane::searchUserInfo(u64 tag) { if (tag == mUserInfoTag) { return this; } JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { if (J2DPane* result = iter.getObject()->searchUserInfo(tag)) { return result; } } return NULL; } /* 802F7430-802F74B8 2F1D70 0088+00 1/0 7/7 0/0 .text isUsed__7J2DPaneFPC7ResTIMG */ bool J2DPane::isUsed(const ResTIMG* timg) { JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { if (iter.getObject()->isUsed(timg)) return true; } return false; } /* 802F74B8-802F7540 2F1DF8 0088+00 1/0 7/7 0/0 .text isUsed__7J2DPaneFPC7ResFONT */ bool J2DPane::isUsed(const ResFONT* font) { JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { if (iter.getObject()->isUsed(font)) return true; } return false; } /* 802F7540-802F7680 2F1E80 0140+00 1/0 7/0 0/0 .text makeMatrix__7J2DPaneFffff */ void J2DPane::makeMatrix(f32 param_0, f32 param_1, f32 param_2, f32 param_3) { f32 tmpX = mRotateOffsetX - param_2; f32 tmpY = mRotateOffsetY - param_3; Mtx rotX, rotY, rotZ, rotMtx, mtx, tmp; PSMTXTrans(mtx, -tmpX, -tmpY, 0); PSMTXRotRad(rotX, 'x', 0.01745329238474369f * mRotateX); PSMTXRotRad(rotY, 'y', 0.01745329238474369f * mRotateY); PSMTXRotRad(rotZ, 'z', 0.01745329238474369f * -mRotateZ); PSMTXConcat(rotZ, rotX, tmp); PSMTXConcat(rotY, tmp, rotMtx); PSMTXScaleApply(mtx, mPositionMtx, mScaleX, mScaleY, 1); PSMTXConcat(rotMtx, mPositionMtx, tmp); PSMTXTransApply(tmp, mPositionMtx, param_0 + tmpX, param_1 + tmpY, 0); } /* 802F7680-802F76F8 2F1FC0 0078+00 1/0 7/3 0/0 .text setCullBack__7J2DPaneF11_GXCullMode */ void J2DPane::setCullBack(_GXCullMode mode) { mCullMode = mode; JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->setCullBack(mode); } } /* 802F76F8-802F77D0 2F2038 00D8+00 0/0 8/8 0/0 .text setBasePosition__7J2DPaneF15J2DBasePosition */ void J2DPane::setBasePosition(J2DBasePosition position) { mBasePosition = position; mRotAxis = ROTATE_Z; mRotateOffsetX = 0; if (position % 3 == 1) { f32 width = getWidth(); mRotateOffsetX = width / 2; } else if (position % 3 == 2) { f32 width = getWidth(); mRotateOffsetX = width; } mRotateOffsetY = 0; if (position / 3 == 1) { f32 height = getHeight(); mRotateOffsetY = height / 2; } else if (position / 3 == 2) { f32 height = getHeight(); mRotateOffsetY = height; } calcMtx(); } /* 802F77D0-802F79A8 2F2110 01D8+00 0/0 1/1 0/0 .text setInfluencedAlpha__7J2DPaneFbb */ void J2DPane::setInfluencedAlpha(bool param_0, bool param_1) { if (param_1 && mIsInfluencedAlpha != param_0) { J2DPane* parent = this->getParentPane(); u8 alpha = 255; for (; parent != NULL; parent = parent->getParentPane()) { if (parent->getAlpha() == 0) { alpha = 0; break; } alpha = (((f32)alpha) * parent->getAlpha() / 255); if (!parent->mIsInfluencedAlpha) { break; } } if (param_0) { if (alpha == 0) { this->setAlpha(0); } else { f32 fAlpha = ((f32)mAlpha) / alpha * 255; u8 alpha; if (fAlpha > 255) { alpha = 255; } else { alpha = fAlpha; } this->setAlpha(alpha); } } else { this->setAlpha((f32)(alpha * mAlpha) / 255); } } mIsInfluencedAlpha = param_0; } /* 802F79A8-802F7A8C 2F22E8 00E4+00 0/0 3/3 0/0 .text getGlbVtx__7J2DPaneCFUc */ JGeometry::TVec3 J2DPane::getGlbVtx(u8 param_0) const { JGeometry::TVec3 out; if (param_0 >= 4) { out.x = 0; out.y = 0; out.z = 0; return out; } else { f32 x, y; if (param_0 & 1) { x = mBounds.f.x; } else { x = mBounds.i.x; } if (param_0 & 2) { y = mBounds.f.y; } else { y = mBounds.i.y; } out.x = x * mGlobalMtx[0][0] + y * mGlobalMtx[0][1] + mGlobalMtx[0][3]; out.y = x * mGlobalMtx[1][0] + y * mGlobalMtx[1][1] + mGlobalMtx[1][3]; out.z = x * mGlobalMtx[2][0] + y * mGlobalMtx[2][1] + mGlobalMtx[2][3]; return out; } } /* 802F7A8C-802F7AC4 2F23CC 0038+00 1/1 15/15 0/0 .text getFirstChildPane__7J2DPaneFv */ J2DPane* J2DPane::getFirstChildPane() { if (!getFirstChild()) return NULL; return getFirstChild()->getObject(); } /* 802F7AC4-802F7AFC 2F2404 0038+00 1/1 8/8 0/0 .text getNextChildPane__7J2DPaneFv */ J2DPane* J2DPane::getNextChildPane() { if (getPaneTree()->getNextChild() == NULL) return NULL; return getPaneTree()->getNextChild()->getObject(); } /* 802F7AFC-802F7B18 2F243C 001C+00 6/6 11/11 0/0 .text getParentPane__7J2DPaneFv */ J2DPane* J2DPane::getParentPane() { if (getPaneTree()->getParent() == NULL) return NULL; return getPaneTree()->getParent()->getObject(); } struct J2DPaneInit { /* name unknown */ u8 field_0x0[10]; u16 field_0xa; u8 isVisible; u8 mBasePosition; // padding u64 mInfoTag; u64 mUserInfoTag; f32 rotationOffsetX; f32 rotationOffsetY; f32 scaleX; f32 scaleY; f32 rotXDegrees; f32 rotYDegrees; f32 rotZDegrees; f32 translateX; f32 translateY; u8 field_0x44[4]; }; /* 802F7B18-802F7D00 2F2458 01E8+00 1/1 6/6 0/0 .text * makePaneExStream__7J2DPaneFP7J2DPaneP20JSURandomInputStream */ void J2DPane::makePaneExStream(J2DPane* parent, JSURandomInputStream* stream) { stream->getPosition(); J2DPaneInit data; stream->read(&data, sizeof(data)); _4 = data.field_0xa; mVisible = !!data.isVisible; mInfoTag = data.mInfoTag; mUserInfoTag = data.mUserInfoTag; mScaleX = data.scaleX; mScaleY = data.scaleY; mRotateX = data.rotXDegrees; mRotateY = data.rotYDegrees; mRotateZ = data.rotZDegrees; mTranslateX = data.translateX; mTranslateY = data.translateY; mRotAxis = ROTATE_Z; if (data.mBasePosition % 3 == 0) { mRotateOffsetX = 0; } else if (data.mBasePosition % 3 == 1) { mRotateOffsetX = data.rotationOffsetX / 2; } else { mRotateOffsetX = data.rotationOffsetX; } if (data.mBasePosition / 3 == 0) { mRotateOffsetY = 0; } else if (data.mBasePosition / 3 == 1) { mRotateOffsetY = data.rotationOffsetY / 2; } else { mRotateOffsetY = data.rotationOffsetY; } mBounds.set(-mRotateOffsetX, -mRotateOffsetY, data.rotationOffsetX - mRotateOffsetX, data.rotationOffsetY - mRotateOffsetY); mBasePosition = data.mBasePosition; mAlpha = 255; mIsInfluencedAlpha = false; if (parent != NULL) { parent->mPaneTree.appendChild(&this->mPaneTree); } mCullMode = GX_CULL_NONE; mColorAlpha = 255; mConnected = false; this->calcMtx(); } /* 802F7D00-802F7DB8 2F2640 00B8+00 0/0 1/1 0/0 .text J2DCast_F32_to_S16__7J2DPaneFfUc */ s16 J2DPane::J2DCast_F32_to_S16(f32 value, u8 arg2) { if (arg2 >= 0xF) { return 0; } else { f32 tmpF; tmpF = value; if (value < 0) { tmpF = -value; } int tmp = tmpF * (1 << arg2); if (tmp >= 0x8000) { if (value < 0) { return 0x8000; } else { return 0x7FFF; } } else if (value < 0) { return ~tmp + 1; } else { return tmp; } } } /* 802F7DB8-802F7EF4 2F26F8 013C+00 0/0 3/3 0/0 .text * getPointer__7J2DPaneFP20JSURandomInputStreamUlP10JKRArchive */ void* J2DPane::getPointer(JSURandomInputStream* inputStream, u32 param_1, JKRArchive* archive) { JUTResReference resRef; void* result; if (archive == NULL) { if (J2DScreen::getDataManage() == NULL) { result = resRef.getResource(inputStream, param_1, NULL); } else { s32 prevPos = inputStream->getPosition(); result = resRef.getResource(inputStream, param_1, NULL); if (result == 0) { inputStream->seek(prevPos, JSUStreamSeekFrom_SET); result = J2DScreen::getDataManage()->get(inputStream); } } } else { s32 prevPos = inputStream->getPosition(); result = resRef.getResource(inputStream, param_1, archive); if (result == NULL) { inputStream->seek(prevPos, JSUStreamSeekFrom_SET); result = resRef.getResource(inputStream, param_1, NULL); } if (result == NULL) { if (J2DScreen::getDataManage() != NULL) { inputStream->seek(prevPos, JSUStreamSeekFrom_SET); result = J2DScreen::getDataManage()->get(inputStream); } } } return result; } /* 802F7EF4-802F7FC4 2F2834 00D0+00 2/0 7/4 0/0 .text setAnimation__7J2DPaneFP10J2DAnmBase */ void J2DPane::setAnimation(J2DAnmBase* anm) { if (anm != NULL) { switch (anm->getKind()) { default: break; case 0: setAnimation(static_cast(anm)); break; case 1: setAnimation(static_cast(anm)); break; case 7: setAnimation(static_cast(anm)); break; case 4: setAnimation(static_cast(anm)); break; case 2: setAnimation(static_cast(anm)); break; case 6: setAnimation(static_cast(anm)); break; case 5: setAnimation(static_cast(anm)); break; } } } /* 802F7FC4-802F7FCC -00001 0008+00 0/0 0/0 0/0 .text setAnimation__7J2DPaneFP15J2DAnmTransform */ void J2DPane::setAnimation(J2DAnmTransform* anm) { mTransform = anm; } /* 802F7FCC-802F8004 2F290C 0038+00 0/0 57/57 0/0 .text animationTransform__7J2DPaneFv */ void J2DPane::animationTransform() { if (mTransform != NULL) animationTransform(mTransform); } /* 802F8004-802F8080 2F2944 007C+00 1/0 7/1 0/0 .text clearAnmTransform__7J2DPaneFv */ void J2DPane::clearAnmTransform() { J2DAnmTransform* none = NULL; setAnimation(none); JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->clearAnmTransform(); } } /* 802F8080-802F8118 2F29C0 0098+00 1/0 7/0 0/0 .text * animationTransform__7J2DPaneFPC15J2DAnmTransform */ const J2DAnmTransform* J2DPane::animationTransform(const J2DAnmTransform* transform) { const J2DAnmTransform* p = transform; if (mTransform != NULL) p = mTransform; JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->animationTransform(p); } updateTransform(p); return p; } /* 802F8118-802F81A0 2F2A58 0088+00 1/0 8/1 0/0 .text * setVisibileAnimation__7J2DPaneFP20J2DAnmVisibilityFull */ void J2DPane::setVisibileAnimation(J2DAnmVisibilityFull* visibility) { setAnimationVF(visibility); JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->setVisibileAnimation(visibility); } } /* 802F81A0-802F8228 2F2AE0 0088+00 1/0 8/1 0/0 .text * setVtxColorAnimation__7J2DPaneFP14J2DAnmVtxColor */ void J2DPane::setVtxColorAnimation(J2DAnmVtxColor* vtx_color) { setAnimationVC(vtx_color); JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->setVtxColorAnimation(vtx_color); } } /* 802F8228-802F82C0 2F2B68 0098+00 1/0 7/3 0/0 .text animationPane__7J2DPaneFPC15J2DAnmTransform */ const J2DAnmTransform* J2DPane::animationPane(const J2DAnmTransform* transform) { const J2DAnmTransform* p = transform; if (mTransform != NULL) p = mTransform; JSUTreeIterator iter; for (iter = mPaneTree.getFirstChild(); iter != mPaneTree.getEndChild(); ++iter) { iter.getObject()->animationPane(p); } updateTransform(p); return p; } /* 802F82C0-802F83C8 2F2C00 0108+00 2/2 0/0 0/0 .text * updateTransform__7J2DPaneFPC15J2DAnmTransform */ void J2DPane::updateTransform(J2DAnmTransform const* anmTransform) { if (_4 != 0xFFFF && anmTransform != NULL) { J3DTransformInfo info; anmTransform->getTransform(_4, &info); mScaleX = info.mScale.x; mScaleY = info.mScale.z; mRotateX = (u16)info.mRotation.x * 360.0f / 65535.0f; mRotateY = (u16)info.mRotation.z * 360.0f / 65535.0f; mRotateZ = (u16)info.mRotation.y * 360.0f / 65535.0f; mTranslateX = info.mTranslate.x; mTranslateY = info.mTranslate.z; this->calcMtx(); } } /* 802F83C8-802F83CC 2F2D08 0004+00 1/0 0/0 0/0 .text drawSelf__7J2DPaneFffPA3_A4_f */ void J2DPane::drawSelf(f32 param_0, f32 param_1, f32 (*param_2)[3][4]) { /* empty function */ } /* 802F83CC-802F83D0 2F2D0C 0004+00 1/0 1/0 0/0 .text rewriteAlpha__7J2DPaneFv */ void J2DPane::rewriteAlpha() { /* empty function */ } /* 802F83D0-802F83FC 2F2D10 002C+00 1/0 6/0 0/0 .text * setAnimationVF__7J2DPaneFP20J2DAnmVisibilityFull */ void J2DPane::setAnimationVF(J2DAnmVisibilityFull* visibility) { setAnimation(visibility); } /* 802F83FC-802F8428 2F2D3C 002C+00 1/0 6/0 0/0 .text setAnimationVC__7J2DPaneFP14J2DAnmVtxColor */ void J2DPane::setAnimationVC(J2DAnmVtxColor* vtx_color) { setAnimation(vtx_color); } /* 802F8428-802F8464 2F2D68 003C+00 1/0 4/0 0/0 .text setCullBack__7J2DPaneFb */ void J2DPane::setCullBack(bool cull) { GXCullMode mode; if (!cull) mode = GX_CULL_NONE; else mode = GX_CULL_BACK; setCullBack(mode); } /* 802F8464-802F8474 2F2DA4 0010+00 1/0 5/0 0/0 .text setConnectParent__7J2DPaneFb */ bool J2DPane::setConnectParent(bool connected) { mConnected = false; return false; } /* 802F8474-802F8478 2F2DB4 0004+00 1/0 7/0 0/0 .text update__7J2DPaneFv */ void J2DPane::update() { /* empty function */ } /* 802F8478-802F847C 2F2DB8 0004+00 1/0 1/0 0/0 .text drawSelf__7J2DPaneFff */ void J2DPane::drawSelf(f32 param_0, f32 param_1) { /* empty function */ }