(39) 's Extra Blueprint Nodes for You as a Plugin, No C++ Required!

@Veexr I tried today with the 4.24 version and like you couldn’t see the VictoryEdEngine. I think the documentation on is just a bit out dated. I can’t comment on the vertex snapping but I did manage to combine SM’s to 1 ISM at runtime. Once enabling the plugin, here are the steps I used to test it:

  1. Create an Actor BP using your SM of choice
  2. Place a bunch of these actors into your level
  3. Run the ‘stat rhi’ console command and note down the *DrawPrimitives *count
  4. Create a new BP of class ‘VictoryISM
  5. Right click and place the node 'Victory ISM Convert to Victory ISMActors’
  6. Link the EventBeginPlay to the node ‘Victory ISM Convert to Victory ISMActors
  7. Select the BP created in step 1 under ‘Actor Class’ of the previous node
  8. Place BP into your level

Now hit Run (stat rhi should still be active) and look at the same statistic. It should be much lower confirming that the placed actors have been cmobined into a single ISM.

Hope that helps.

hi, thanks for the great plugin,

i wanted to use **getsoundWaveFromFile **node but it’s not working :confused:
it loads up an **instance **without any errors, but it has no sound or anything when i try to play the sound instance, what could be the problem?

someone got the plugin, epic slashed the community wiki…

one question, is a source build you have to build for every version or more of a plugin you can enable/disable? I would love to have some nodes here.

Hello ,
Thanks for your awesome plugin!
While using **Load Texture 2D From File **Plugin I am finding that loading a PNG image with alpha gets lost and becomes white. Is a known, or am I doing something wrong. The same images when imported into UE4 retain their alpha.
Thanks

it works with .ogg files only

I don’t know if you fixed it or still need a fix, but just in case, you should download the engine-appropriate zip (i.e. the 4.24 version for 4.24, the 4.25 version for 4.25) from the first post in thread, as the the [FONT=Courier New]IImageWrapper::GetRaw signature changed in 4.25. So the error comes from the .cpp being made for the wrong signature.

yea fixed it. I was trying to use it with the chaos demo project and it didn’t like it at . had to disable the build chaos line to get it to compile. chaos sets some variable the plugin didnt like. already fixed in an update i guess since now i can add compile chaos.
once i took out the build chaos i added to enable chaos it started working. it was an oddity

is a great idea! I will work on when I have !

is also a great node idea, I wll look into !
​​​​​​​
:heart:

4.26 Update Is Here!

Dear Victory Plugin Users,

Here is 4.26 !!!
http://www.mediafire.com/file/0q10k9…gin26.zip/file

Enjooooooy!

:heart:

thank you ~

Thank you so much :heart:

btw I got 4.26 working on a 4.25 version of the victory plugin just by changing one line:

VictoryPC.cpp:79 to

auto Request = Http->CreateRequest();

Was faster than downloading it from the link :smiley:

Hi,
I have recently created a plugin to import the audio files with mp3, wav, flac in runtime.
/Respirant/RuntimeAudioImporter

1 Like

hi, first let me thank you very much for very useful plugin !!!
i mainly use it for storing load/savegame thumbs-textures.
i have one question about it:
the textures stored seem very dark compared to my screen output of the scene.
is there any way to get the exact screen output ?
i tried messing with brightness in the 2d capture texture, but it wont make any difference …
kind regards
stucki

Hi,

Thanks for the great plugin @, It works like a charm and helped me a lot with my game. But I am currently trying to port my game to and I think it is causing the app to crash (I am on 4.26), I was wondering does plugin support android? Or am I just doing something wrong and that’s the reason for the crash?
Here the error I am getting before the crash happens.

Thanks :slight_smile:

In case you are still looking for an answer, these settings inside the texture render target should make the image look the same as in the engine :slight_smile:

settings.PNG

I figured it out in case someone is having the same:
Open the .uplugin and add to the target platform wite list, then build it for and it works like a charm.
Thanks again for the great plugin :slight_smile:

2 Likes

For the sake of documenting what was a really long struggle getting seeking / start from / any deeper audio issues with an vorbis OGG -> soundwave importer, i found that UE4 relies on both the RawData and RawPCMData part of a soundwave to perform tasks deeper than just playing audio, the solution i found was to use the SerializeWaveFile function on pcm data to make a normal .wav type rawdata and then set the rawdata that way. I’m not certain if works in packaged games. Code for setting the RawData:


 //SERIALIZE PCM AND FILL IN RAW DATA
TArray < uint8 > rawSerialized;
SerializeWaveFile(rawSerialized, sw->RawPCMData, info.SampleDataSize, info.NumChannels, info.SampleRate);
sw->RawData.Lock(LOCK_READ_WRITE);
void* LockedData = sw->RawData.Realloc(rawSerialized.Num());
FMemory::Memcpy(LockedData, rawSerialized.GetData(), info.SampleDataSize);
sw->RawData.Unlock();

**Full Frankenstein OGG import code: **


USoundWave* **XXXXXXXXX**::GetSoundWaveFromOGGFile(const FString& filePath, bool& Success){
if (filePath == "") { Success = false; return nullptr; }
char* filePathChar = TCHAR_TO_ANSI(*filePath);
USoundWave* sw = NewObject<USoundWave>(USoundWave::StaticClass());
if (!sw) { Success = false; return nullptr; }
TArray < uint8 > rawFile1;
FFileHelper::LoadFileToArray(rawFile1, filePath.GetCharArray().GetData());
FByteBulkData* bulkData = &sw->CompressedFormatData.GetFormat(TEXT("OGG"));
bulkData->Lock(LOCK_READ_WRITE);
FMemory::Memcpy(bulkData->Realloc(rawFile1.Num()), rawFile1.GetData(), rawFile1.Num());
bulkData->Unlock();
FSoundQualityInfo info;
FVorbisAudioInfo vorbis_obj;
if (!vorbis_obj.ReadCompressedInfo(rawFile1.GetData(), rawFile1.Num(), &info))
{
return nullptr;
}
else
{
sw->SoundGroup = ESoundGroup::SOUNDGROUP_Default;
sw->NumChannels = info.NumChannels;
sw->Duration = info.Duration;
//sw->TotalSamples = info.SampleDataSize;
sw->RawPCMDataSize = info.SampleDataSize;
sw->SetSampleRate(info.SampleRate);
// - Decompress and bake PCM Data from file into SoundWave
sw->RawPCMData = (uint8*)FMemory::Malloc(sw->RawPCMDataSize);
vorbis_obj.ExpandFile(sw->RawPCMData, &info);
sw->bDecompressedFromOgg = true;
//SERIALIZE PCM AND FILL IN RAW DATA
TArray < uint8 > rawSerialized;
SerializeWaveFile(rawSerialized, sw->RawPCMData, info.SampleDataSize, info.NumChannels, info.SampleRate);
sw->RawData.Lock(LOCK_READ_WRITE);
void* LockedData = sw->RawData.Realloc(rawSerialized.Num());
FMemory::Memcpy(LockedData, rawSerialized.GetData(), info.SampleDataSize);
sw->RawData.Unlock();
}

if (!sw) { Success = false; return nullptr; }

Success = true;
return sw;
}

1 Like

Hey !!
I think I remember you had a plugin that allowed for much better performance when dealing with thousands of destructible meshes? Thanks man and great to hear from you as always,
Dj