| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // ----------------------------------------------------------------
- // 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 "MoveComponent.h"
- #include "Actor.h"
- MoveComponent::MoveComponent(class Actor* owner, int updateOrder)
- :Component(owner, updateOrder)
- ,mAngularSpeed(0.0f)
- ,mForwardSpeed(0.0f)
- {
-
- }
- void MoveComponent::Update(float deltaTime)
- {
- if (!Math::NearZero(mAngularSpeed))
- {
- float rot = mOwner->GetRotation();
- rot += mAngularSpeed * deltaTime;
- mOwner->SetRotation(rot);
- }
-
- if (!Math::NearZero(mForwardSpeed))
- {
- Vector2 pos = mOwner->GetPosition();
- pos += mOwner->GetForward() * mForwardSpeed * deltaTime;
- // Screen wrapping (for asteroids)
- if (pos.x < -512.0f) { pos.x = 510.0f; }
- else if (pos.x > 512.0f) { pos.x = -510.0f; }
- if (pos.y < -384.0f) { pos.y = 382.0f; }
- else if (pos.y > 384.0f) { pos.y = -382.0f; }
- mOwner->SetPosition(pos);
- }
- }
|