1. void AHUD::GetActorsInSelectionRectangle(TSubclassOf<class AActor> ClassFilter, const FVector2D& FirstPoint, const FVector2D& SecondPoint, TArray<AActor*>& OutActors, bool bIncludeNonCollidingComponents, bool bActorMustBeFullyEnclosed)
  2. {
  3. // Because this is a HUD function it is likely to get called each tick,
  4. // so make sure any previous contents of the out actor array have been cleared!
  5. OutActors.Empty();
  6.  
  7. //Create Selection Rectangle from Points
  8. FBox2D SelectionRectangle();
  9.  
  10. //This method ensures that an appropriate rectangle is generated,
  11. // no matter what the coordinates of first and second point actually are.
  12. SelectionRectangle += FirstPoint;
  13. SelectionRectangle += SecondPoint;
  14.  
  15. //The Actor Bounds Point Mapping
  16. const FVector BoundsPointMapping[] =
  17. {
  18. FVector(, , ),
  19. FVector(, , -),
  20. FVector(, -, ),
  21. FVector(, -, -),
  22. FVector(-, , ),
  23. FVector(-, , -),
  24. FVector(-, -, ),
  25. FVector(-, -, -)
  26. };
  27.  
  28. //~~~
  29.  
  30. //For Each Actor of the Class Filter Type
  31. for (TActorIterator<AActor> Itr(GetWorld(), ClassFilter); Itr; ++Itr)
  32. {
  33. AActor* EachActor = *Itr;
  34.  
  35. //Get Actor Bounds //casting to base class, checked by template in the .h
  36. const FBox EachActorBounds = Cast<AActor>(EachActor)->GetComponentsBoundingBox(bIncludeNonCollidingComponents); /* All Components? */
  37.  
  38. //Center
  39. const FVector BoxCenter = EachActorBounds.GetCenter();
  40.  
  41. //Extents
  42. const FVector BoxExtents = EachActorBounds.GetExtent();
  43.  
  44. // Build 2D bounding box of actor in screen space
  45. FBox2D ActorBox2D();
  46. for (uint8 BoundsPointItr = ; BoundsPointItr < ; BoundsPointItr++)
  47. {
  48. // Project vert into screen space.
  49. const FVector ProjectedWorldLocation = Project(BoxCenter + (BoundsPointMapping[BoundsPointItr] * BoxExtents));
  50. // Add to 2D bounding box
  51. ActorBox2D += FVector2D(ProjectedWorldLocation.X, ProjectedWorldLocation.Y);
  52. }
  53.  
  54. //Selection Box must fully enclose the Projected Actor Bounds
  55. if (bActorMustBeFullyEnclosed)
  56. {
  57. if(SelectionRectangle.IsInside(ActorBox2D))
  58. {
  59. OutActors.Add(Cast<AActor>(EachActor));
  60. }
  61. }
  62. //Partial Intersection with Projected Actor Bounds
  63. else
  64. {
  65. if (SelectionRectangle.Intersect(ActorBox2D))
  66. {
  67. OutActors.Add(Cast<AActor>(EachActor));
  68. }
  69. }
  70. }
  71. }

Ue4中的框选函数的更多相关文章

  1. ArcGis 中MapControl 框选

    void mCtrl_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)    ...

  2. ArcGIS中使用异步回调函数查询图层Graphic

    在我们的地图的操作中经常会有一些操作是需要通过画多边形或者画线来查找某一块区域内的特定的Graphics比如我们在做的交警的项目中通过框选来查找某一块区域中的摄像机,某一块区域中的警力.警情.警员等相 ...

  3. QTableView中嵌入复选框CheckBox 的四种方法总结

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  4. python QQTableView中嵌入复选框CheckBox四种方法

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  5. jQuery+SpringMVC中的复选框选择与传值

    一.checkbox选择 在jQuery中,选中checkbox通用的两种方式: $("#cb1").attr("checked","checked& ...

  6. 在word中做复选框打对勾钩

    在word中做复选框打对勾钩 现在终于搞明白正确的操作方法 一.你在word里输入2610,按alt+X就能出 空checkbox 你在word里输入2611,按alt+X就能出 打了勾的checkb ...

  7. nodetree中 前面复选框禁用插件

    nodetree中 前面复选框的去掉插件 extendTreeCheck.js /** * tree方法扩展 * 作者:小雪转中雪 */ $.extend($.fn.tree.methods, { / ...

  8. Jquery获取当前页面中的复选框选中的内容

    在使用$.post提交数据时,有一个数据是复选框获取数据,所以在当前页面获取到复选框选中的值并提交到后端卡住了一下,解决方法如下: 这两个input就是复选框的内容: str += "< ...

  9. Unity3D中画拉选框(绘制多选框)

    问题分析: 需要根据鼠标事件,摁下鼠标开始绘制选择框,抬起鼠标结束绘制. 实现思路: 该需求是屏幕画线,Unity内置了GL类  封装了OpenGL,可以通过GL类来实现一些简单的画图操作,这里也是使 ...

随机推荐

  1. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  2. FragmentHelper

    package com.icitymobile.anda.util; import java.lang.ref.SoftReference; import java.util.ArrayList; i ...

  3. php 上传文件实例 注册账号

    注册界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  4. Ubuntu 14.04 Trusty安装java环境

    原文:Install Oracle Java 6, 7, or 8 in Ubuntu 14.04 Trusty 命令如下: sudo add-apt-repository ppa:webupd8te ...

  5. CLR via C#(10)-参数

    一. 命名参数.可选参数 命名参数和可选参数是在Visual C#2010中引入的新特性. 笨地儿我个瓜不兮兮的,今天才知道. 可选参数:定义方法时为参数设置默认值,调用该方法时可以省略为某些形参指定 ...

  6. [LeetCode] Ugly Number

    Ugly Number Total Accepted: 20760 Total Submissions: 63208 Difficulty: Easy Write a program to check ...

  7. Oracle 数组赋值

    只需要像下面这样就OK了 begin -- Call the procedure in_var(1):=null;in_var(1):='a123123'; pack_abc.pro_abc(in_v ...

  8. 解决postgresql -- ERROR: 42601: query has no destination for result data

    I am learning Npgsql and PostgreSQL. I am unable to define the output parameter correctly. What am I ...

  9. Solr auto commit 配置

    为了解决写索引时频繁提交带来的效率问题,考虑使用自动提交. 在solrconfig.xml中增加以下代码: <updateHandler class="solr.DirectUpdat ...

  10. 攻城狮在路上(叁)Linux(二十一)--- linux磁盘检查 fsck \ badblocks

    若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查.这一步是可选的,尽量少用. 使用前的建议:使用fsck命令时,被检查的分区务必不要挂载在系统上. 一.fsck: 命令格式:fsck [ ...