Announcement

Collapse
No announcement yet.

Niagra particle effect spawning issue

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Niagra particle effect spawning issue

    I can't find an official UE4 example/tutorial on how to do this in c++.

    So far I've got:
    Code:
    #include "NiagaraComponent.h"
    #include "NiagaraFunctionLibrary.h"
    
    // Character init
    NSDust = LoadObject<UNiagaraSystem>(nullptr, TEXT("/Game/A_Surface_Footstep/Niagara_FX/ParticleSystems/PEN_General1_Dust.PEN_General1_Dust"), nullptr, LOAD_None, nullptr);
    
    // Character Jump
    UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), NSDust, location, FRotator::ZeroRotator, FVector(5, 5 ,5));
    // GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, NSDust->GetName());
    Nothing appears...? :S
    If I uncomment the DebugMsg() it crashes when the game reaches that line.

    Struggling to work out best to debug why it's not spawning. But perhaps I've completlly misunderstood how I should be doing this?

    Any pointers would be greatly appreciated

    #2
    Maybe the "NSDust" isn't valid and the particle system failed to load.

    BTW, this way of loading objects worked for me so far in every case except with Niagara particle system.
    Code:
    // Setup references
    static ConstructorHelpers::FObjectFinder<UNiagaraSystem> LclMapLvlLoc(TEXT("/Game/Particles/MapLvlLoc/MapLvlLoc"));
    MapLvlLoc = LclMapLvlLoc.Object;
    So, the work around that I use is wraping the the Niagara system into UNiagaraComponent in an actor class, which gets inherited by a Blueprint class, where I assign the the Niagara system and then spawn the Blueprint class instead.

    Comment


      #3
      Originally posted by ArNavart View Post
      Maybe the "NSDust" isn't valid and the particle system failed to load.

      BTW, this way of loading objects worked for me so far in every case except with Niagara particle system.
      Code:
      // Setup references
      static ConstructorHelpers::FObjectFinder<UNiagaraSystem> LclMapLvlLoc(TEXT("/Game/Particles/MapLvlLoc/MapLvlLoc"));
      MapLvlLoc = LclMapLvlLoc.Object;
      So, the work around that I use is wraping the the Niagara system into UNiagaraComponent in an actor class, which gets inherited by a Blueprint class, where I assign the the Niagara system and then spawn the Blueprint class instead.
      Yeah I read others had success by doing similar. To be clear, youre created a custom actor with a NiagraComp, then creating a BP - and setting the Niagra component inside the Editor, saving. Then in your c++ you reference this new BP and spawn that?

      Just seems like this should be do able without the BP step, right ?

      Comment


        #4
        Originally posted by axelZellalex View Post

        Yeah I read others had success by doing similar. To be clear, youre created a custom actor with a NiagraComp, then creating a BP - and setting the Niagra component inside the Editor, saving. Then in your c++ you reference this new BP and spawn that?

        Just seems like this should be do able without the BP step, right ?
        Yep, exactly.

        Originally posted by axelZellalex View Post
        Just seems like this should be do able without the BP step, right ?
        Yes, if you could get Niagara particle system reference in C++, which seems to fail in this case.

        Comment

        Working...
        X