// 選択オブジェクト変更 void AnimationForm::slot_changeSelectObject(QModelIndex index) { // m_pEditData->setSelIndex(index) ; if ( !index.isValid() ) { return ; } CObjectModel *pModel = m_pEditData->getObjectModel() ; if ( pModel->isLayer(index) ) { bool valid ; ObjectItem *pItem = pModel->getItemFromIndex(index) ; FrameData data = pItem->getDisplayFrameData(m_pEditData->getSelectFrame(), &valid) ; if ( valid ) { slot_setUI(data) ; } emit sig_changeSelectLayer(index) ; } ObjectItem *pObj = pModel->getObject(index) ; if ( pObj ) { ui->spinBox_loop->setValue(pObj->getLoop()); ui->spinBox_fps->setValue(pObj->getFps()) ; } m_pDataMarker->repaint(); m_pGlWidget->update(); }
bool Anm2DAsm::makeFromEditData(EditData &rEditData) { m_pModel = rEditData.getObjectModel(); if (m_bFlat) { ObjectModel *p = new ObjectModel(); p->copy(m_pModel); p->flat(); m_pModel = p; } ObjectItem *pRoot = m_pModel->getItemFromIndex(QModelIndex()); // 画像をラベル化 // 未使用画像をスキップするテーブル構築 int nVram = 0; { for (int i = 0; i < rEditData.getImageDataListSize(); i++) { if (i >= KM_VRAM_MAX) { return false; } EditData::ImageData *p = rEditData.getImageData(i); if (!p) continue; QFileInfo fi(p->fileName); QString sImageLabel = fi.fileName(); sImageLabel = QString("ID_") + sImageLabel.replace(".", "_").toUpper(); sImageLabel = sImageLabel.toUtf8(); m_aqsVramID[i] = sImageLabel; m_bUnused[i] = true; } for (int i = 0; i < pRoot->childCount(); i++) { ObjectItem *pObj = pRoot->child(i); for (int j = 0; j < pObj->childCount(); j++) { ObjectItem *pChild = pObj->child(j); subUnusedVramSkip(pChild); } } for (int i = 0; i < rEditData.getImageDataListSize(); i++) { if (m_bUnused[i] == false) nVram++; } } addString(";----------------------------------------------------------------\n"); addString("; @kamefile\t" + pRoot->getName().toUtf8() + "\n"); addString(";---------------------------------------------------------------- HEADER\n"); addString("\t\t\%include\t\"../imageid.inc\"\n"); addString("\n"); addString(";---------------------------------------------------------------- DATA\n"); addString("%define\t\tNO_READ\t\t0\n"); addString("%define\t\tF32(f32)\t\t__float32__(f32)\n"); addString("data:\n"); addString(";---------------------------------------------------------------- ANM_HEAD\n"); addString("\t\t\tdb\t\t'ANM0'\t\t; ANM0\n"); addString("\t\t\tdd\t\t00000003h\t\t; uVersion\n"); addString("\t\t\tdd\t\t" + QString("%1").arg(/*rEditData.getImageDataListSize()*/ nVram) + "\t\t; nVram\n"); addString("\t\t\tdd\t\t.vram\t\t; pauVram\n"); addString("\t\t\tdd\t\t" + QString("%1").arg(pRoot->childCount()) + "\t\t; nObject\n"); addString("\t\t\tdd\t\t.object\t\t; paObj\n"); addString("\t\n"); addString("\t.vram:\n"); for (int i = 0; i < rEditData.getImageDataListSize(); i++) { if (i >= KM_VRAM_MAX) { return false; } if (m_bUnused[i]) continue; EditData::ImageData *p = rEditData.getImageData(i); if (!p) continue; QFileInfo fi(p->fileName); QString sImageLabel = fi.fileName(); sImageLabel = QString("ID_") + sImageLabel.replace(".", "_").toUpper(); sImageLabel = sImageLabel.toUtf8(); m_aqsVramID[i] = sImageLabel; addString("\t\t\tdd\t\t" + m_aqsVramID[i] + "\n"); } addString("\t\n"); addString("\t.object:\n"); for (int i = 0; i < pRoot->childCount(); i++) { addString("\t\t\tdd\t\tanmobj" + QString("%1").arg(i) + "\n"); } addString("\n"); for (int i = 0; i < pRoot->childCount(); i++) { ObjectItem *pObj = pRoot->child(i); QVector4D qv4AreaMin = QVector4D(FLT_MAX, FLT_MAX, FLT_MAX, 0); QVector4D qv4AreaMax = QVector4D(FLT_MIN, FLT_MIN, FLT_MIN, 0); addString(";---------------------------------------------------------------- ANM_OBJ\n"); addString("; " + QString(pObj->getName().toUtf8()) + "\n"); addString("anmobj" + QString("%1").arg(i) + ":\n"); if (pObj->childCount()) { if (pObj->getLoop()) { addString("\t\t\tdd\t\t00000001h\t\t; bFlag\n"); } else { addString("\t\t\tdd\t\t00000000h\t\t; bFlag\n"); } // 最小矩形算出 for (int j = 0; j < pObj->childCount(); j++) { ObjectItem *pChild = pObj->child(j); makeFromEditDataArea(pChild, &qv4AreaMin, &qv4AreaMax, true); } addString("\t\t\tdd\t\t" + QString("F32(%1), F32(%2), F32(%3), F32(%4)").arg(qv4AreaMin.x(), 0, 'f').arg(qv4AreaMin.y(), 0, 'f').arg(qv4AreaMax.x(), 0, 'f').arg(qv4AreaMax.y(), 0, 'f') + "\t\t; fvArea\n"); addString("\t\t\tdd\t\t" + QString("%1").arg(pObj->childCount()) + "\t\t; nTip\n"); addString("\t\t\tdd\t\t.tips\t\t; papTip\n"); addString("\t\n"); addString("\t.tips:\n"); for (int j = 0; j < pObj->childCount(); j++) { addString("\t\t\tdd\t\tobj" + QString("%1").arg(i) + "tip" + QString("%1").arg(j) + "\n"); } addString("\n"); for (int j = 0; j < pObj->childCount(); j++) { QString qsLabel = "obj" + QString("%1").arg(i) + "tip" + QString("%1").arg(j); ObjectItem *pChild = pObj->child(j); if (!makeFromEditDataTip(qsLabel, pChild)) { return false; } } } else { addString("\t\t\tdd\t\t00000000h\t\t; bFlag\n"); addString("\t\t\tdd\t\t0, 0, 0, 0\t\t; fvArea\n"); addString("\t\t\tdd\t\t" + QString("%1").arg(pObj->childCount()) + "\t\t; nTip\n"); addString("\t\t\tdd\t\tNO_READ\t\t; papTip\n"); } } addString("\n"); return true; }