World.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/std/containers/vector.h>
  10. #include <AzCore/std/tuple.h>
  11. #include <AzFramework/Physics/Common/PhysicsSceneQueries.h>
  12. #include <AzCore/Component/EntityId.h>
  13. #include <AzCore/Math/Crc.h>
  14. #include <AzCore/Math/Transform.h>
  15. #include <AzCore/Math/Vector2.h>
  16. #include <AzCore/Math/Vector3.h>
  17. #include <AzCore/std/string/string.h>
  18. namespace ScriptCanvasPhysics
  19. {
  20. namespace WorldFunctions
  21. {
  22. using Result = AZStd::tuple<
  23. bool /*true if an object was hit*/,
  24. AZ::Vector3 /*world space position*/,
  25. AZ::Vector3 /*surface normal*/,
  26. float /*distance to the hit*/,
  27. AZ::EntityId /*entity hit, if any*/,
  28. AZ::Crc32 /*tag of material surface hit, if any*/
  29. >;
  30. using OverlapResult = AZStd::tuple<
  31. bool, /*true if the overlap returned hits*/
  32. AZStd::vector<AZ::EntityId> /*list of entityIds*/
  33. >;
  34. Result RayCastWorldSpaceWithGroup(
  35. const AZ::Vector3& start,
  36. const AZ::Vector3& direction,
  37. float distance,
  38. const AZStd::string& collisionGroup,
  39. AZ::EntityId ignore);
  40. Result RayCastFromScreenWithGroup(
  41. const AZ::Vector2& screenPosition, float distance, const AZStd::string& collisionGroup, AZ::EntityId ignore);
  42. Result RayCastLocalSpaceWithGroup(
  43. const AZ::EntityId& fromEntityId,
  44. const AZ::Vector3& direction,
  45. float distance,
  46. const AZStd::string& collisionGroup,
  47. AZ::EntityId ignore);
  48. AZStd::vector<AzPhysics::SceneQueryHit> RayCastMultipleLocalSpaceWithGroup(
  49. const AZ::EntityId& fromEntityId,
  50. const AZ::Vector3& direction,
  51. float distance,
  52. const AZStd::string& collisionGroup,
  53. AZ::EntityId ignore);
  54. OverlapResult OverlapSphereWithGroup(
  55. const AZ::Vector3& position, float radius, const AZStd::string& collisionGroup, AZ::EntityId ignore);
  56. OverlapResult OverlapBoxWithGroup(
  57. const AZ::Transform& pose, const AZ::Vector3& dimensions, const AZStd::string& collisionGroup, AZ::EntityId ignore);
  58. OverlapResult OverlapCapsuleWithGroup(
  59. const AZ::Transform& pose, float height, float radius, const AZStd::string& collisionGroup, AZ::EntityId ignore);
  60. Result SphereCastWithGroup(
  61. float distance,
  62. const AZ::Transform& pose,
  63. const AZ::Vector3& direction,
  64. float radius,
  65. const AZStd::string& collisionGroup,
  66. AZ::EntityId ignore);
  67. Result BoxCastWithGroup(
  68. float distance,
  69. const AZ::Transform& pose,
  70. const AZ::Vector3& direction,
  71. const AZ::Vector3& dimensions,
  72. const AZStd::string& collisionGroup,
  73. AZ::EntityId ignore);
  74. Result CapsuleCastWithGroup(
  75. float distance,
  76. const AZ::Transform& pose,
  77. const AZ::Vector3& direction,
  78. float height,
  79. float radius,
  80. const AZStd::string& collisionGroup,
  81. AZ::EntityId ignore);
  82. } // namespace WorldFunctions
  83. } // namespace ScriptCanvasPhysics
  84. #include <Source/World.generated.h>