コード例 #1
0
void AAmbitionOfNobunagaPlayerController::PlayerTick(float DeltaTime)
{
	Super::PlayerTick(DeltaTime);

	if(Hud)
	{
		CurrentMouseXY = GetMouseScreenPosition();
		TArray<FHitResult> Hits;
		bool res;
		FVector WorldOrigin;
		FVector WorldDirection;
		FCollisionObjectQueryParams CollisionQuery;
		CollisionQuery.AddObjectTypesToQuery(ECC_WorldStatic);
		if (UGameplayStatics::DeprojectScreenToWorld(this, CurrentMouseXY, WorldOrigin, WorldDirection) == true)
		{
			res = GetWorld()->LineTraceMultiByObjectType(Hits, WorldOrigin, WorldOrigin + WorldDirection * HitResultTraceDistance,
			        CollisionQuery);
		}
		// 只trace 地板的actor
		// 地板名可以自定義
		FVector HitPoint(0, 0, 0);
		if (Hits.Num() > 0)
		{
			for (FHitResult Hit : Hits)
			{
				if (Hit.Actor.IsValid() && Hit.Actor->GetFName().GetPlainNameString() == FloorActorName)
				{
					HitPoint = Hit.ImpactPoint;
				}
				// all landscape can click
				if (Hit.Actor.IsValid())
				{
					FString ResStr;
					Hit.Actor->GetClass()->GetName(ResStr);
					if (ResStr == "Landscape")
					{
						HitPoint = Hit.ImpactPoint;
					}
				}
			}
		}
		Hud->OnMouseMove(CurrentMouseXY, HitPoint);
	}
}
コード例 #2
0
ファイル: PisaList.cpp プロジェクト: 275958081/netfox
bool CPisaList::Select(CPoint& pt,bool IsChuPai )
{
	Node* nd=HitPoint(pt);
	if(!nd)
	{
		return false;
	}
	if(IsChuPai)
	{
		if(nd->IsSelect)return true;
		return false;
	}
	
	if(nd->IsSelect)
	{
		nd->IsSelect=false;
		return true;
	}
	else 
	{
		nd->IsSelect=true;
		return true;
	}
}
コード例 #3
0
 TEST(HitPointInterval, ShouldAddSingleHitPoint) {
   HitPointInterval interval;
   interval.add(HitPoint());
 }
コード例 #4
0
 TEST(HitPointInterval, ShouldAddTwoHitPointsAsPair) {
   HitPointInterval interval;
   interval.add(HitPoint(), HitPoint());
 }
コード例 #5
0
 TEST(HitPointInterval, ShouldInitializeWithTwoHitPoints) {
   HitPointInterval interval((HitPoint()), HitPoint());
 }