当前位置: 首页>>代码示例>>C++>>正文


C++ FRotator::Equals方法代码示例

本文整理汇总了C++中FRotator::Equals方法的典型用法代码示例。如果您正苦于以下问题:C++ FRotator::Equals方法的具体用法?C++ FRotator::Equals怎么用?C++ FRotator::Equals使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在FRotator的用法示例。


在下文中一共展示了FRotator::Equals方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: TickComponent

void UGTCaptureComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
// void UGTCaptureComponent::Tick(float DeltaTime) // This tick function should be called by the scene instead of been
{
    // Render pixels out in the next tick. To allow time to render images out.

    // Update rotation of each frame
    // from ab237f46dc0eee40263acbacbe938312eb0dffbb:CameraComponent.cpp:232
    check(this->Pawn); // this GTCapturer should be released, if the Pawn is deleted.
    const APawn* OwningPawn = this->Pawn;
    const AController* OwningController = OwningPawn ? OwningPawn->GetController() : nullptr;
    if (OwningController && OwningController->IsLocalPlayerController())
    {
        const FRotator PawnViewRotation = OwningPawn->GetViewRotation();
        for (auto Elem : CaptureComponents)
        {
            USceneCaptureComponent2D* CaptureComponent = Elem.Value;
            if (!PawnViewRotation.Equals(CaptureComponent->GetComponentRotation()))
            {
                CaptureComponent->SetWorldRotation(PawnViewRotation);
            }
        }
    }

    while (!PendingTasks.IsEmpty())
    {
        FGTCaptureTask Task;
        PendingTasks.Peek(Task);
        uint64 CurrentFrame = GFrameCounter;

        int32 SkipFrame = 1;
        if (!(CurrentFrame > Task.CurrentFrame + SkipFrame)) // TODO: This is not an elegant solution, fix it later.
        { // Wait for the rendering thread to catch up game thread.
            break;
        }

        PendingTasks.Dequeue(Task);
        USceneCaptureComponent2D* CaptureComponent = this->CaptureComponents.FindRef(Task.Mode);
        if (CaptureComponent == nullptr)
        {
            UE_LOG(LogUnrealCV, Warning, TEXT("Unrecognized capture mode %s"), *Task.Mode);
        }
        else
        {
            FString LowerCaseFilename = Task.Filename.ToLower();
            if (LowerCaseFilename.EndsWith("png"))
            {
                SavePng(CaptureComponent->TextureTarget, Task.Filename);
            }
            else if (LowerCaseFilename.EndsWith("exr"))
            {
                SaveExr(CaptureComponent->TextureTarget, Task.Filename);
            }
            else
            {
                UE_LOG(LogUnrealCV, Warning, TEXT("Unrecognized image file extension %s"), *LowerCaseFilename);
            }
        }
        Task.AsyncRecord->bIsCompleted = true;
    }
}
开发者ID:Batname,项目名称:unrealcv,代码行数:60,代码来源:GTCaptureComponent.cpp

示例2: GetCameraView

void UCameraComponent::GetCameraView(float DeltaTime, FMinimalViewInfo& DesiredView)
{
    if (bUsePawnControlRotation)
    {
        if (APawn* OwningPawn = Cast<APawn>(GetOwner()))
        {
            const FRotator PawnViewRotation = OwningPawn->GetViewRotation();
            if (!PawnViewRotation.Equals(GetComponentRotation()))
            {
                SetWorldRotation(PawnViewRotation);
            }
        }
    }

    DesiredView.Location = GetComponentLocation();
    DesiredView.Rotation = GetComponentRotation();

    DesiredView.FOV = FieldOfView;
    DesiredView.AspectRatio = AspectRatio;
    DesiredView.bConstrainAspectRatio = bConstrainAspectRatio;
    DesiredView.ProjectionMode = ProjectionMode;
    DesiredView.OrthoWidth = OrthoWidth;

    // See if the CameraActor wants to override the PostProcess settings used.
    DesiredView.PostProcessBlendWeight = PostProcessBlendWeight;
    if (PostProcessBlendWeight > 0.0f)
    {
        DesiredView.PostProcessSettings = PostProcessSettings;
    }
}
开发者ID:1vanK,项目名称:AHRUnrealEngine,代码行数:30,代码来源:CameraComponent.cpp

示例3: TEXT

TArray<uint8> UGTCaptureComponent::CaptureNpyFloat16(FString Mode, int32 Channels)
{
    // Flush location and rotation
    check(CaptureComponents.Num() != 0);
    USceneCaptureComponent2D* CaptureComponent = CaptureComponents.FindRef(Mode);

    TArray<uint8> NpyData;
    if (CaptureComponent == nullptr) {
      UE_LOG(LogUnrealCV, Error, TEXT("Component for mode %s not found. Returning empty array."), *Mode);
        return NpyData;
  }

    // Attach this to something, for example, a real camera
    const FRotator PawnViewRotation = Pawn->GetViewRotation();
    if (!PawnViewRotation.Equals(CaptureComponent->GetComponentRotation()))
    {
        CaptureComponent->SetWorldRotation(PawnViewRotation);
    }

    UTextureRenderTarget2D* RenderTarget = CaptureComponent->TextureTarget;
    int32 Width = RenderTarget->SizeX, Height = RenderTarget->SizeY;
    TArray<FFloat16Color> ImageData;
    FTextureRenderTargetResource* RenderTargetResource;
    ImageData.AddUninitialized(Width * Height);
    RenderTargetResource = RenderTarget->GameThread_GetRenderTargetResource();
    RenderTargetResource->ReadFloat16Pixels(ImageData);

    // Check the byte order of data
    // Compress image data to npy array
    // Generate a header for the numpy array
    NpyData = NpySerialization(ImageData, Width, Height, Channels);

    return NpyData;
}
开发者ID:Batname,项目名称:unrealcv,代码行数:34,代码来源:GTCaptureComponent.cpp

示例4:

TArray<uint8> UGTCaptureComponent::CapturePng(FString Mode)
{
    // Flush location and rotation
    check(CaptureComponents.Num() != 0);
    USceneCaptureComponent2D* CaptureComponent = CaptureComponents.FindRef(Mode);

    TArray<uint8> ImgData;
    if (CaptureComponent == nullptr)
        return ImgData;

    // Attach this to something, for example, a real camera
    const FRotator PawnViewRotation = Pawn->GetViewRotation();
    if (!PawnViewRotation.Equals(CaptureComponent->GetComponentRotation()))
    {
        CaptureComponent->SetWorldRotation(PawnViewRotation);
    }

    UTextureRenderTarget2D* RenderTarget = CaptureComponent->TextureTarget;
    static IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
    static TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::PNG);
    int32 Width = RenderTarget->SizeX, Height = RenderTarget->SizeY;
    TArray<FColor> Image;
    FTextureRenderTargetResource* RenderTargetResource;
    Image.AddZeroed(Width * Height);
    RenderTargetResource = RenderTarget->GameThread_GetRenderTargetResource();

    FReadSurfaceDataFlags ReadSurfaceDataFlags;
    ReadSurfaceDataFlags.SetLinearToGamma(false); // This is super important to disable this!
                                                  // Instead of using this flag, we will set the gamma to the correct value directly
    RenderTargetResource->ReadPixels(Image, ReadSurfaceDataFlags);
    ImageWrapper->SetRaw(Image.GetData(), Image.GetAllocatedSize(), Width, Height, ERGBFormat::BGRA, 8);
    ImgData = ImageWrapper->GetCompressed();

    return ImgData;
}
开发者ID:Batname,项目名称:unrealcv,代码行数:35,代码来源:GTCaptureComponent.cpp

示例5: Capture

FAsyncRecord* UGTCaptureComponent::Capture(FString Mode, FString InFilename)
{
    // Flush location and rotation

    check(CaptureComponents.Num() != 0);
    USceneCaptureComponent2D* CaptureComponent = CaptureComponents.FindRef(Mode);
    if (CaptureComponent == nullptr)
        return nullptr;

    const FRotator PawnViewRotation = Pawn->GetViewRotation();
    if (!PawnViewRotation.Equals(CaptureComponent->GetComponentRotation()))
    {
        CaptureComponent->SetWorldRotation(PawnViewRotation);
    }

    FAsyncRecord* AsyncRecord = FAsyncRecord::Create();
    FGTCaptureTask GTCaptureTask = FGTCaptureTask(Mode, InFilename, GFrameCounter, AsyncRecord);
    this->PendingTasks.Enqueue(GTCaptureTask);

    return AsyncRecord;
}
开发者ID:Batname,项目名称:unrealcv,代码行数:21,代码来源:GTCaptureComponent.cpp

示例6: RunTest

bool FLightingPromotionPointLightPlaceRotScaleTest::RunTest(const FString& Parameters)
{
    //** SETUP **//
    // Create the world.
    UWorld* World = AutomationEditorCommonUtils::CreateNewMap();
    ULevel* CurrentLevel = World->GetCurrentLevel();
    // Test Summary
    AddLogItem(TEXT("Place, Scale, and Rotate.\n- A Point light is placed into the world.\n- The light is moved.\n- The light is rotated.\n- The light is scaled up."));

    if (!LightingTestHelpers::DoesActorExistInTheLevel(CurrentLevel, TEXT("PointLight"), APointLight::StaticClass()))
    {
        //** TEST **//
        // Add a point light to the level.
        APointLight* PointLight = Cast<APointLight>(GEditor->AddActor(World->GetCurrentLevel(), APointLight::StaticClass(), FTransform()));
        // Set the actors location, rotation, and scale3D.
        PointLight->SetActorLocation(POINT_LIGHT_UPDATED_LOCATION);
        PointLight->SetActorRotation(POINT_LIGHT_UPDATED_ROTATION);
        PointLight->SetActorScale3D(POINT_LIGHT_UPDATED_SCALE3D);

        //** VERIFY **//
        FVector CurrentLocation;
        LightingTestHelpers::GetActorCurrentLocation(CurrentLevel, PointLight->GetName(), CurrentLocation);
        FRotator CurrentRotation;
        LightingTestHelpers::GetActorCurrentRotation(CurrentLevel, PointLight->GetName(), CurrentRotation);
        FVector CurrentScale3D;
        LightingTestHelpers::GetActorCurrentScale3D(CurrentLevel, PointLight->GetName(), CurrentScale3D);
        bool RotationsAreEqual = CurrentRotation.Equals(POINT_LIGHT_UPDATED_ROTATION, 1);

        TestTrue(TEXT("The placed point light was not found."), LightingTestHelpers::DoesActorExistInTheLevel(CurrentLevel, PointLight->GetName(), PointLight->GetClass()));
        TestEqual<FVector>(TEXT("The point light is not in correct location"), POINT_LIGHT_UPDATED_LOCATION, CurrentLocation);
        TestTrue(TEXT("The point light is not rotated correctly."), RotationsAreEqual);
        TestEqual<FVector>(TEXT("The point light is not scaled correctly."), POINT_LIGHT_UPDATED_SCALE3D, CurrentScale3D);

        return true;
    }

    AddError(TEXT("A point light already exists in this level which will block the verification of a new point light."));
    return false;
}
开发者ID:amyvmiwei,项目名称:UnrealEngine4,代码行数:39,代码来源:LightingTests.cpp

示例7: UpdateControlRotation

void AAIController::UpdateControlRotation(float DeltaTime, bool bUpdatePawn)
{
    APawn* const MyPawn = GetPawn();
    if (MyPawn)
    {
        FRotator NewControlRotation = GetControlRotation();

        // Look toward focus
        const FVector FocalPoint = GetFocalPoint();
        if (FAISystem::IsValidLocation(FocalPoint))
        {
            NewControlRotation = (FocalPoint - MyPawn->GetPawnViewLocation()).Rotation();
        }
        else if (bSetControlRotationFromPawnOrientation)
        {
            NewControlRotation = MyPawn->GetActorRotation();
        }

        // Don't pitch view unless looking at another pawn
        if (NewControlRotation.Pitch != 0 && Cast<APawn>(GetFocusActor()) == nullptr)
        {
            NewControlRotation.Pitch = 0.f;
        }

        SetControlRotation(NewControlRotation);

        if (bUpdatePawn)
        {
            const FRotator CurrentPawnRotation = MyPawn->GetActorRotation();

            if (CurrentPawnRotation.Equals(NewControlRotation, 1e-3f) == false)
            {
                MyPawn->FaceRotation(NewControlRotation, DeltaTime);
            }
        }
    }
}
开发者ID:zhaoyizheng0930,项目名称:UnrealEngine,代码行数:37,代码来源:AIController.cpp

示例8: NotEqual_RotatorRotator

bool UKismetMathLibrary::NotEqual_RotatorRotator(FRotator A, FRotator B, float ErrorTolerance)
{
    return !A.Equals(B, ErrorTolerance);
}	
开发者ID:didixp,项目名称:Ark-Dev-Kit,代码行数:4,代码来源:KismetMathLibrary.cpp


注:本文中的FRotator::Equals方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。