EReimportResult::Type UPaperSpriteSheetReimportFactory::Reimport(UObject* Obj)
{
	UPaperSpriteSheet* SpriteSheet = Cast<UPaperSpriteSheet>(Obj);
	if (!SpriteSheet)
	{
		return EReimportResult::Failed;
	}

	// Make sure file is valid and exists
	const FString Filename = SpriteSheet->AssetImportData->GetFirstFilename();
	if (!Filename.Len() || IFileManager::Get().FileSize(*Filename) == INDEX_NONE)
	{
		return EReimportResult::Failed;
	}

	// Configure the importer with the reimport settings
	Importer.SetReimportData(SpriteSheet->SpriteNames, SpriteSheet->Sprites);
	Importer.ExistingBaseTextureName = SpriteSheet->TextureName;
	Importer.ExistingBaseTexture = SpriteSheet->Texture;
	Importer.ExistingNormalMapTextureName = SpriteSheet->NormalMapTextureName;
	Importer.ExistingNormalMapTexture = SpriteSheet->NormalMapTexture;

	// Run the import again
	EReimportResult::Type Result = EReimportResult::Failed;
	bool OutCanceled = false;

	if (ImportObject(SpriteSheet->GetClass(), SpriteSheet->GetOuter(), *SpriteSheet->GetName(), RF_Public | RF_Standalone, Filename, nullptr, OutCanceled) != nullptr)
	{
		UE_LOG(LogPaperSpriteSheetImporter, Log, TEXT("Imported successfully"));

		SpriteSheet->AssetImportData->Update(Filename);
		
		// Try to find the outer package so we can dirty it up
		if (SpriteSheet->GetOuter())
		{
			SpriteSheet->GetOuter()->MarkPackageDirty();
		}
		else
		{
			SpriteSheet->MarkPackageDirty();
		}
		Result = EReimportResult::Succeeded;
	}
	else
	{
		if (OutCanceled)
		{
			UE_LOG(LogPaperSpriteSheetImporter, Warning, TEXT("-- import canceled"));
		}
		else
		{
			UE_LOG(LogPaperSpriteSheetImporter, Warning, TEXT("-- import failed"));
		}

		Result = EReimportResult::Failed;
	}

	return Result;
}
EReimportResult::Type UReimportSpeedTreeFactory::Reimport(UObject* Obj)
{
#if WITH_SPEEDTREE
	UStaticMesh* Mesh = Cast<UStaticMesh>(Obj);
	if (!Mesh)
	{
		return EReimportResult::Failed;
	}

	const FString Filename = Mesh->AssetImportData->GetFirstFilename();
	const FString FileExtension = FPaths::GetExtension(Filename);
	const bool bIsSRT = FCString::Stricmp(*FileExtension, TEXT("SRT")) == 0;

	if (!bIsSRT)
	{
		return EReimportResult::Failed;
	}

	if (!(Filename.Len()))
	{
		// Since this is a new system most static meshes don't have paths, so logging has been commented out
		//UE_LOG(LogEditorFactories, Warning, TEXT("-- cannot reimport: static mesh resource does not have path stored."));
		return EReimportResult::Failed;
	}

	UE_LOG(LogEditorFactories, Log, TEXT("Performing atomic reimport of [%s]"), *Filename);

	bool OutCanceled = false;

	if (ImportObject(Mesh->GetClass(), Mesh->GetOuter(), *Mesh->GetName(), RF_Public | RF_Standalone, Filename, nullptr, OutCanceled) != nullptr)
	{
		UE_LOG(LogEditorFactories, Log, TEXT("-- imported successfully"));

		Mesh->AssetImportData->Update(Filename);
		Mesh->MarkPackageDirty();

		return EReimportResult::Succeeded;
	}
	else if (OutCanceled)
	{
		UE_LOG(LogEditorFactories, Warning, TEXT("-- import canceled"));
	}
	else
	{
		UE_LOG(LogEditorFactories, Warning, TEXT("-- import failed"));
	}
#endif // #if WITH_SPEEDTREE

	return EReimportResult::Failed;
}
Пример #3
0
LONG ALMCALLBACK	admnProc(
	OBJECTID				theObject,
  pAObjMessage		system
	)
  {
	LONG				lRet						= A_OK;
  KBRECORD    kbRec;

  switch (system->message1)
    {
		case AOBJ_CREATED:
			kbRec.active = 1L;
      kbRec.version = DATAVersion;
			AObjAddData(theObject, &kbRec, sizeof(kbRec));
      break;
          
		case AOBJ_ASSIGNOBJECT:
			{
			KBRECORD*			kbRecSrc;
			OBJECTID			sourceObject;

		 	sourceObject = (OBJECTID)(system->message3);

			kbRecSrc = (KBRECORD*) AObjLockData(sourceObject, DATA0);
      kbRecSrc->version = DATAVersion;  // set if previously not set

      AObjSetData(
					theObject,
					DATA0,
					kbRecSrc,
          sizeof(KBRECORD));

      AEvtPostStandard(
					theObject,
					AEVENT_OBJECTCHANGED, 
					0,
          AEVT_ATTAIL|AEVT_KILLDUPLICATES);

			AObjUnlockData(sourceObject, DATA0);

			break;
			}

		case AOBJ_READ:
			{
			KBRECORD*		kbRec			= (KBRECORD*) AObjLockData(theObject, DATA0);

			// for all keyboard objects of version 1
			// translate the signals to match the MAC version, MAY 27, 1993
			if (kbRec->version < CORRECTSIGNALVERSION)
				{
				TranslateSignals(theObject);
        }

			kbRec->version = DATAVersion;  // set if previously not set

			if (kbRec->active != 0)
        kbRec->active = 1L;

			AObjUnlockData(theObject, DATA0);
			}
      break;
			
		case AOBJ_IMPORTOBJECT:
			ImportObject(theObject);
      break;

		case AOBJ_EXPORTOBJECT:
			ExportObject(theObject);
      break;

    case AOBJ_EDITOBJECT:
      if (EditKey(theObject))   // To manage description dlg
				lRet = A_MODIFIED;
      break;

    case AOBJ_CHECKOBJECT:
      break;

    case AOBJ_BUILDSIGNALS:
      doBuildSignals(system);
      break;

    default:
			lRet = A_NOTHANDLED;
      break;
    }

	return lRet;
  }