| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- // ----------------------------------------------------------------
- // From Game Programming in C++ by Sanjay Madhav
- // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
- //
- // Released under the BSD License
- // See LICENSE in root directory for full details.
- // ----------------------------------------------------------------
- #include "CircleComponent.h"
- #include "Actor.h"
- CircleComponent::CircleComponent(class Actor* owner)
- :Component(owner)
- ,mRadius(0.0f)
- {
-
- }
- const Vector3& CircleComponent::GetCenter() const
- {
- return mOwner->GetPosition();
- }
- float CircleComponent::GetRadius() const
- {
- return mOwner->GetScale() * mRadius;
- }
- bool Intersect(const CircleComponent& a, const CircleComponent& b)
- {
- // Calculate distance squared
- Vector3 diff = a.GetCenter() - b.GetCenter();
- float distSq = diff.LengthSq();
- // Calculate sum of radii squared
- float radiiSq = a.GetRadius() + b.GetRadius();
- radiiSq *= radiiSq;
- return distSq <= radiiSq;
- }
|