include ../unreal/prelude
import ../unreal/bindings/[engine]
# import ../unreal/bindings/exported/[slate, slatecore]
# import ../unreal/bindings/exported/nimforue
import ../codegen/[uemeta]
# uStruct FNimTableRowBase of FTableRowBase:
#     montage: UAnimMontagePtr
# uStruct FNimPPSettings:# of FPostProcessSettings:
#   uprops(EditAnywhere, BlueprintType):
proc getOwner2*(obj : UActorComponentPtr): AActorPtr {.importcpp: "#->GetOwner()".}
uClass ANimEngineActor of AActor:
  (BlueprintType, Blueprintable)
  uprops(EditAnywhere, BlueprintReadWrite):
    settings : FNimPPSettings
    settings.testProperty = "TestCDOOutter"
    testProperty = "TestCDOInner"
      self.settings.testProperty = "Test2"
uClass UNimActorComponentTest of UActorComponent:
  (BlueprintType, Blueprintable)
  uprops(EditAnywhere, BlueprintReadWrite):
  ufuncs(BlueprintCallable):
      UE_Log "Test function 2 called"
      # findObject[UPackage](nil, convertToLongScriptPackageName(packageName))
      # UE_Log $self.getOwner()
      let name = "BP_StaticMeshActor_C_1"
      # let actor = findObject[UObject](nil, name)
      let actor = self.getOwner2()
      # let world = getCurrentActiveWorld()