本文整理汇总了C++中ABrush::GetActorScale方法的典型用法代码示例。如果您正苦于以下问题:C++ ABrush::GetActorScale方法的具体用法?C++ ABrush::GetActorScale怎么用?C++ ABrush::GetActorScale使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ABrush
的用法示例。
在下文中一共展示了ABrush::GetActorScale方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AlignSurf
void UTexAlignerDefault::AlignSurf( ETexAlign InTexAlignType, UModel* InModel, FBspSurfIdx* InSurfIdx, FPoly* InPoly, FVector* InNormal )
{
InPoly->Base = InPoly->Vertices[0];
InPoly->TextureU = FVector::ZeroVector;
InPoly->TextureV = FVector::ZeroVector;
InPoly->Finalize( NULL, 0 );
InPoly->TextureU *= UTile;
InPoly->TextureV *= VTile;
ABrush* Actor = InSurfIdx->Surf->Actor;
const FVector PrePivot = Actor->GetPivotOffset();
const FVector Location = Actor->GetActorLocation();
const FRotator Rotation = Actor->GetActorRotation();
const FVector Scale = Actor->GetActorScale();
const FRotationMatrix RotMatrix(Rotation);
FVector Base = RotMatrix.TransformVector((InPoly->Base - PrePivot) * Scale) + Location;
FVector TextureU = RotMatrix.TransformVector(InPoly->TextureU / Scale);
FVector TextureV = RotMatrix.TransformVector(InPoly->TextureV / Scale);
InSurfIdx->Surf->pBase = FBSPOps::bspAddPoint(InModel, &Base, 0);
InSurfIdx->Surf->vTextureU = FBSPOps::bspAddVector( InModel, &TextureU, 0);
InSurfIdx->Surf->vTextureV = FBSPOps::bspAddVector( InModel, &TextureV, 0);
}
示例2:
void UEditorEngine::polyUpdateMaster
(
UModel* Model,
int32 iSurf,
int32 UpdateTexCoords
)
{
FBspSurf &Surf = Model->Surfs[iSurf];
ABrush* Actor = Surf.Actor;
if( !Actor )
return;
UModel* Brush = Actor->Brush;
check(Brush);
FVector ActorLocation;
FVector ActorPrePivot;
FVector ActorScale;
FRotator ActorRotation;
if (Brush->bCachedOwnerTransformValid)
{
// Use transform cached when the geometry was last built, in case the current Actor transform has changed since then
// (e.g. because Auto Update BSP is disabled)
ActorLocation = Brush->OwnerLocationWhenLastBuilt;
ActorPrePivot = Brush->OwnerPrepivotWhenLastBuilt;
ActorScale = Brush->OwnerScaleWhenLastBuilt;
ActorRotation = -Brush->OwnerRotationWhenLastBuilt;
}
else
{
// No cached owner transform, so use the current one
ActorLocation = Actor->GetActorLocation();
ActorPrePivot = Actor->GetPrePivot();
ActorScale = Actor->GetActorScale();
ActorRotation = -Actor->GetActorRotation();
}
for( int32 iEdPoly = Surf.iBrushPoly; iEdPoly < Brush->Polys->Element.Num(); iEdPoly++ )
{
FPoly& MasterEdPoly = Brush->Polys->Element[iEdPoly];
if( iEdPoly==Surf.iBrushPoly || MasterEdPoly.iLink==Surf.iBrushPoly )
{
MasterEdPoly.Material = Surf.Material;
MasterEdPoly.PolyFlags = Surf.PolyFlags & ~(PF_NoEdit);
if( UpdateTexCoords )
{
MasterEdPoly.Base = ActorRotation.RotateVector(Model->Points[Surf.pBase] - ActorLocation) / ActorScale + ActorPrePivot;
MasterEdPoly.TextureU = ActorRotation.RotateVector(Model->Vectors[Surf.vTextureU]) * ActorScale;
MasterEdPoly.TextureV = ActorRotation.RotateVector(Model->Vectors[Surf.vTextureV]) * ActorScale;
}
}
}
Model->InvalidSurfaces = true;
}