Visual Studio refactoring

master
Vectozavr 2021-11-01 02:11:04 +07:00
parent 4900635bec
commit 7dd4a185e3
11 changed files with 126 additions and 9 deletions

View File

@ -91,7 +91,7 @@ add_executable(shooter
engine/network/UDPConnection.h
engine/network/UDPSocket.cpp
engine/network/UDPSocket.h
engine/SoundController.cpp engine/SoundController.h ShooterMsgType.h ShooterMsgType.cpp)
engine/SoundController.cpp engine/SoundController.h ShooterMsgType.h ShooterMsgType.cpp engine/animation/AAttractToPoint.h engine/animation/ARotateRelativePoint.h)
if(APPLE OR UNIX)
include_directories(/usr/local/include)

View File

@ -11,6 +11,10 @@
#include "engine/animation/Timeline.h"
#include "ShooterConsts.h"
#include "engine/SoundController.h"
#include "engine/animation/AAttractToPoint.h"
#include "engine/animation/ARotateRelativePoint.h"
#include "engine/animation/ATranslateToPoint.h"
#include "engine/animation/AWait.h"
using namespace std;

View File

@ -9,6 +9,12 @@
#include "engine/animation/Timeline.h"
#include "ShooterMsgType.h"
#include "engine/animation/AAttractToPoint.h"
#include "engine/animation/ARotateRelativePoint.h"
#include "engine/animation/ATranslateToPoint.h"
#include "engine/animation/AWait.h"
#include "engine/animation/AFunction.h"
void ShooterClient::updatePacket() {
sf::Packet packet;
packet << MsgType::ClientUpdate << _player->position().x() << _player->position().y() << _player->position().z()
@ -109,12 +115,33 @@ void ShooterClient::processCustomPacket(sf::Packet &packet) {
if (buffId[0] == _socket.ownId()) {
_player->addDeath();
// respawn
_player->translateToPoint(
Vec3D{50.0 * (-1 + 2.0 * (double) rand() / RAND_MAX), 30.0 * (double) rand() / RAND_MAX,
50.0 * (-1 + 2.0 * (double) rand() / RAND_MAX)});
_player->reInitWeapons();
_player->setFullAbility();
auto camera = _player->attached(ObjectNameTag("Camera"));
_player->unattach(ObjectNameTag("Camera"));
_player->translateToPoint(Vec3D{10000});
Vec2D cameraOrientation(camera->angleLeftUpLookAt().x(), _player->angle().y());
camera->rotateLeft(-cameraOrientation.x());
camera->transform(Matrix4x4::Rotation(Vec3D(-_player->angle())));
Timeline::animate(AnimationListTag("camera_anim"), std::make_shared<ATranslateToPoint>(camera, Vec3D(-20, 30, -100)));
Timeline::animate(AnimationListTag("camera_anim"), std::make_shared<ARotateRelativePoint>(camera, Vec3D(0), Vec3D{0, Consts::PI, 0}, 5, Animation::LoopOut::None, Animation::InterpolationType::Linear));
Timeline::animate(AnimationListTag("camera_anim"), std::make_shared<AWait>(0));
Timeline::animate(AnimationListTag("camera_anim"), std::make_shared<AFunction>([this, camera](){
// respawn
_player->translateToPoint(Vec3D{50.0 * (-1 + 2.0 * (double) rand() / RAND_MAX), 30.0 * (double) rand() / RAND_MAX,
50.0 * (-1 + 2.0 * (double) rand() / RAND_MAX)});
_player->reInitWeapons();
_player->setFullAbility();
camera->rotateToAngle(Vec3D(0));
camera->transform(Matrix4x4::Rotation(Vec3D(_player->angle())));
camera->rotateLeft(_player->headAngle());
camera->translateToPoint(_player->position() + Vec3D{0, 1.8, 0});
_player->attach(camera);
}, 1, 0.1));
SoundController::playSound(SoundTag("death"), ShooterConsts::DEATH_SOUND);
_lastEvent += _player->playerNickName();
} else {

View File

@ -16,7 +16,7 @@ namespace Consts {
const std::string PROJECT_NAME = "engine";
const bool USE_LOG_FILE = true;
const bool USE_OPEN_GL = true;
const bool SHOW_DEBUG_INFO = false;
const bool SHOW_DEBUG_INFO = true;
const bool SHOW_FPS_COUNTER = true;
const double PI = 3.14159265358979323846264338327950288;

View File

@ -97,6 +97,11 @@ void Object::translateToPoint(const Vec3D &point) {
translate(point - position());
}
void Object::attractToPoint(const Vec3D &point, double value) {
Vec3D v = (point - position()).normalized();
translate(v*value);
}
void Object::rotateToAngle(const Vec3D &v) {
rotate(v - _angle);
}

View File

@ -63,6 +63,8 @@ public:
void translateToPoint(const Vec3D &point);
void attractToPoint(const Vec3D &point, double value);
void scale(const Vec3D &s);
void rotate(const Vec3D &r);

View File

@ -0,0 +1,34 @@
//
// Created by Иван Ильин on 01.11.2021.
//
#ifndef SHOOTER_AATTRACTTOPOINT_H
#define SHOOTER_AATTRACTTOPOINT_H
#include "Animation.h"
#include "../Object.h"
class AAttractToPoint : public Animation {
private:
const std::weak_ptr<Object> _object;
const Vec3D _targetPoint;
const double _valueToAttract;
void update() override {
if (_object.expired()) {
stop();
return;
}
_object.lock()->attractToPoint(_targetPoint, _valueToAttract * dprogress());
}
public:
AAttractToPoint(std::weak_ptr<Object> object, const Vec3D &targetPoint, double valueToAttract, double duration = 1,
Animation::LoopOut looped = LoopOut::None,
Animation::InterpolationType interpolationType = InterpolationType::Bezier)
: Animation(duration, looped, interpolationType), _object(object), _targetPoint(targetPoint),
_valueToAttract(valueToAttract) {}
};
#endif //SHOOTER_AATTRACTTOPOINT_H

View File

@ -27,7 +27,7 @@ private:
public:
ARotate(std::weak_ptr<Object> object, const Vec3D &r, double duration = 1, LoopOut looped = LoopOut::None,
InterpolationType interpolationType = InterpolationType::Bezier)
: Animation(duration, looped, interpolationType), _object(std::move(object)), _rotationValue(r) {
: Animation(duration, looped, interpolationType), _object(object), _rotationValue(r) {
}
};

View File

@ -0,0 +1,37 @@
//
// Created by Иван Ильин on 01.11.2021.
//
#ifndef SHOOTER_AROTATERELATIVEPOINT_H
#define SHOOTER_AROTATERELATIVEPOINT_H
#include <utility>
#include "Animation.h"
#include "../Object.h"
class ARotateRelativePoint : public Animation {
private:
const std::weak_ptr<Object> _object;
const Vec3D _targetPoint;
const Vec3D _rotationValue;
void update() override {
if (_object.expired()) {
stop();
return;
}
_object.lock()->rotateRelativePoint(_targetPoint, _rotationValue * dprogress());
}
public:
ARotateRelativePoint(std::weak_ptr<Object> object, const Vec3D &targetPoint, const Vec3D &rotationValue,
double duration = 1, Animation::LoopOut looped = LoopOut::None,
Animation::InterpolationType interpolationType = InterpolationType::Bezier)
: Animation(duration, looped, interpolationType), _object(object), _targetPoint(targetPoint),
_rotationValue(rotationValue) {}
};
#endif //SHOOTER_AROTATERELATIVEPOINT_H

View File

@ -206,6 +206,8 @@
<ClInclude Include="engine\animation\ATranslate.h" />
<ClInclude Include="engine\animation\ATranslateToPoint.h" />
<ClInclude Include="engine\animation\AWait.h" />
<ClInclude Include="engine\animation\AAttractToPoint.h" />
<ClInclude Include="engine\animation\ARotateRelativePoint.h" />
<ClInclude Include="engine\animation\Interpolation.h" />
<ClInclude Include="engine\animation\Timeline.h" />
<ClInclude Include="engine\Camera.h" />

View File

@ -215,6 +215,12 @@
<ClInclude Include="engine\animation\AWait.h">
<Filter>Файлы заголовков\engine\animation</Filter>
</ClInclude>
<ClInclude Include="engine\animation\AAttractToPoint.h">
<Filter>Файлы заголовков\engine\animation</Filter>
</ClInclude>
<ClInclude Include="engine\animation\ARotateRelativePoint.h">
<Filter>Файлы заголовков\engine\animation</Filter>
</ClInclude>
<ClInclude Include="weapon\Ak47.h">
<Filter>Файлы заголовков\weapon</Filter>
</ClInclude>