Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gamedev/fggl
  • onuralpsezer/fggl
2 results
Show changes
Showing
with 815 additions and 126 deletions
/*
* This file is part of FGGL.
*
* FGGL is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* FGGL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with FGGL.
* If not, see <https://www.gnu.org/licenses/>.
*/
//
// Created by webpigeon on 04/09/22.
//
#ifndef FGGL_DEMO_INCLUDE_ROBOT_PROGRAMMER_HPP
#define FGGL_DEMO_INCLUDE_ROBOT_PROGRAMMER_HPP
#include <functional>
#include "fggl/gui/containers.hpp"
namespace demo::robot {
struct Instruction {
const char* name;
std::function<void(void)> m_func;
};
struct Program {
std::vector<Instruction> m_instructions;
uint32_t m_currInstruction;
bool playing = false;
inline std::size_t size() {
return m_instructions.size();
}
inline void step() {
m_instructions[ m_currInstruction ].m_func();
m_currInstruction++;
}
inline void stop() {
playing = false;
m_currInstruction = 0;
}
};
class Timeline : public fggl::gui::Panel {
public:
explicit Timeline(Program& program);
void update(float deltaTime) override;
void render(fggl::gfx::Paint& paint) override;
protected:
void renderInstructions(fggl::gfx::Paint& paint);
private:
std::vector<std::reference_wrapper<Program>> m_tracks;
};
}
#endif //FGGL_DEMO_INCLUDE_ROBOT_PROGRAMMER_HPP
......@@ -26,22 +26,46 @@
#define DEMO_ROLLBALL_HPP
#include "fggl/scenes/game.hpp"
#include "fggl/phys/service.hpp"
#include "fggl/script/engine.hpp"
namespace demo {
enum class DebugMode {
NORMAL = 0,
DISTANCE = 1,
VISION = 2
};
struct RollState {
fggl::entity::EntityID player = fggl::entity::INVALID;
fggl::entity::EntityID closestPickup;
DebugMode mode = DebugMode::NORMAL;
std::vector<fggl::entity::EntityID> collectables;
float time = 0.0f;
};
class RollBall : public fggl::scenes::Game {
public:
explicit RollBall(fggl::App& app);
void activate() override;
void deactivate() override;
void update() override;
void update(float dt) override;
void render(fggl::gfx::Graphics& gfx) override;
private:
fggl::ecs3::entity_t player = fggl::ecs3::NULL_ENTITY;
constexpr static fggl::math::vec3 HINT_COLOUR{0.5f, 0.0f, 0.0f};
RollState state;
fggl::phys::PhysicsEngine* m_phys;
fggl::script::ScriptEngine* m_scripts;
fggl::math::vec3 cameraOffset = {-15.0F, 15.0F, 0.0F};
void closestPickup(fggl::entity::EntityManager& world);
void spinCubes(fggl::entity::EntityManager& world, float dt);
};
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.