Extra2D/examples/scene_graph_demo/game_scene.h

141 lines
2.4 KiB
C
Raw Permalink Normal View History

#pragma once
#include <extra2d.h>
using namespace extra2d;
/**
* @brief
*
*
*/
class PlayerNode : public Node {
public:
/**
* @brief
*/
PlayerNode();
/**
* @brief
*/
~PlayerNode() override = default;
/**
* @brief
* @param dt
*/
void onUpdate(float dt);
/**
* @brief
* @param speed
*/
void setSpeed(float speed) { speed_ = speed; }
/**
* @brief
* @return
*/
float getSpeed() const { return speed_; }
private:
float speed_ = 200.0f;
float time_ = 0.0f;
};
/**
* @brief
*
*
*/
class RotatingDecoration : public Node {
public:
/**
* @brief
*/
RotatingDecoration();
/**
* @brief
*/
~RotatingDecoration() override = default;
/**
* @brief
* @param dt
*/
void onUpdate(float dt);
/**
* @brief
* @param speed /
*/
void setRotationSpeed(float speed) { rotationSpeed_ = speed; }
private:
float rotationSpeed_ = 90.0f;
};
/**
* @brief
*
*
* -
* -
* -
* -
*/
class GameScene : public Scene {
public:
/**
* @brief
*/
GameScene();
/**
* @brief
*/
~GameScene() override = default;
/**
* @brief
*
*
*/
void onEnter() override;
/**
* @brief 退
*
*
*/
void onExit() override;
/**
* @brief
* @param dt
*/
void update(float dt) override;
private:
/**
* @brief
*/
void createPlayer();
/**
* @brief
*/
void createDecorations();
/**
* @brief
*/
void createCamera();
Ptr<PlayerNode> player_;
std::vector<Ptr<RotatingDecoration>> decorations_;
float sceneTime_ = 0.0f;
};