void PhysicsComponent::SetPosition(float x, float y, float z)
{
    shared_ptr<TransformComponent> pTransformComponent = MakeStrongPtr(m_pOwner->GetComponent<TransformComponent>(TransformComponent::g_Name));
    if (pTransformComponent)
    {
        Mat4x4 transform = pTransformComponent->GetTransform();
        Vec3 position = Vec3(x, y, z);
        transform.SetPosition(position);

        KinematicMove(transform);
    }
    else
        GCC_ERROR("Attempting to call RotateY() on actor with no trnasform component");
}
void PhysicsComponent::RotateY(float angleRadians)
{
    shared_ptr<TransformComponent> pTransformComponent = MakeStrongPtr(m_pOwner->GetComponent<TransformComponent>(TransformComponent::g_Name));
    if (pTransformComponent)
    {
        Mat4x4 transform = pTransformComponent->GetTransform();
        Vec3 position = transform.GetPosition();

        Mat4x4 rotateY;
        rotateY.BuildRotationY(angleRadians);
        rotateY.SetPosition(position);

        KinematicMove(rotateY);
    }
    else
        GCC_ERROR("Attempting to call RotateY() on actor with no transform component");
}
void PhysicsComponent::RotateY(float angleRadians)
{
    shared_ptr<TransformComponent> pTransformComponent = MakeStrongPtr(m_pOwner->GetComponent<TransformComponent>(TransformComponent::g_Name));
    if (pTransformComponent)
    {
        glm::mat4 transform = pTransformComponent->GetTransform();
		glm::vec3 position = GetPosition(transform);

        glm::mat4 rotateY;
		rotateY = glm::rotate(rotateY, angleRadians, g_YAxis);
		::SetPosition(rotateY, position);

        KinematicMove(rotateY);
    }
    else
        LOG_ERROR("Attempting to call RotateY() on actor with no transform component");
}
void BulletPhysics::SetTransform(const GameObjectId id, const Mat4x4& mat)
{
	// force the object into a position
	KinematicMove(mat, id);
}