Merge branch 'havok' of github.com:sippeangelo/Return-to-the-Return-of-Return-Fire-2-Returngeance into havok

Conflicts:
	vs11/Returngeance/Returngeance.vcxproj.filters
This commit is contained in:
ViktorLjung
2014-05-30 19:05:52 +02:00
12 changed files with 239 additions and 286 deletions
+2 -1
View File
@@ -62,6 +62,7 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit
if(barrelSteeringComponent)
{
auto tankTransform = m_World->GetComponent<Components::Transform>(entity);
auto transformComponent = m_World->GetComponent<Components::Transform>(tankSteeringComponent->Barrel);
auto absoluteTransform = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(tankSteeringComponent->Barrel);
glm::quat orientation = glm::angleAxis(barrelSteeringComponent->TurnSpeed * inputController->BarrelDirection * (float)dt, barrelSteeringComponent->Axis);
@@ -76,7 +77,7 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit
cloneTransform->Orientation = absoluteTransform.Orientation * cloneTransform->Orientation;
Events::SetVelocity eSetVelocity;
eSetVelocity.Entity = clone;
eSetVelocity.Velocity = absoluteTransform.Orientation * (glm::vec3(0.f, 0.f, -1.f) * barrelSteeringComponent->ShotSpeed);
eSetVelocity.Velocity = tankTransform->Velocity + absoluteTransform.Orientation * (glm::vec3(0.f, 0.f, -1.f) * barrelSteeringComponent->ShotSpeed);
EventBroker->Publish(eSetVelocity);
m_TimeSinceLastShot[tankSteeringComponent->Barrel] = 0;
+33
View File
@@ -0,0 +1,33 @@
#include "PrecompiledHeader.h"
#include "WheelPairSystem.h"
#include "World.h"
void Systems::WheelPairSystem::RegisterComponents(ComponentFactory* cf)
{
cf->Register<Components::WheelPair>([]() { return new Components::WheelPair(); });
}
void Systems::WheelPairSystem::UpdateEntity(double dt, EntityID entity, EntityID parent)
{
auto wheelPair = m_World->GetComponent<Components::WheelPair>(entity);
if (!wheelPair)
return;
auto transform = m_World->GetComponent<Components::Transform>(entity);
if (!transform)
return;
auto transformFakeFront = m_World->GetComponent<Components::Transform>(wheelPair->FakeWheelFront);
if (!transformFakeFront)
return;
auto transformFakeBack = m_World->GetComponent<Components::Transform>(wheelPair->FakeWheelBack);
if (!transformFakeBack)
return;
glm::vec3 thing = transformFakeBack->Position - transformFakeFront->Position;
float height = ((transformFakeFront->Position + transformFakeBack->Position) / 2.f).y;
float angle = std::atan2f(thing.y, thing.z);
transform->Position.y = height;
transform->Orientation = glm::quat(glm::eulerAngles(transform->Orientation) * glm::vec3(0, 1, 1) + glm::vec3(-angle, 0, 0));
}
+22
View File
@@ -0,0 +1,22 @@
#ifndef Systems_WheelPairSystem_h__
#define Systems_WheelPairSystem_h__
#include "World.h"
#include "System.h"
#include "Components/Transform.h"
#include "Components/WheelPair.h"
namespace Systems
{
class WheelPairSystem : public System
{
public:
WheelPairSystem(World* world, std::shared_ptr<::EventBroker> eventBroker, std::shared_ptr<::ResourceManager> resourceManager)
: System(world, eventBroker, resourceManager) { }
void RegisterComponents(ComponentFactory* cf) override;
void UpdateEntity(double dt, EntityID entity, EntityID parent) override;
};
}
#endif // Systems_WheelPairSystem_h__