Create new one

Prototype

.hpp

#include "KapEngine.hpp"

namespace KapEngine {
    namespace MyGame {
        
        class MyComponent : public Component {
            public:
                //constructuer du composant sans préciser son thread
                MyComponent(std::shared_ptr<GameObject> go);
                ~MyComponent();

                /**
                 * Fonctionnalité de base d'un composant
                */

                //appelé lors de l'initialisation du composant (au runtime) deprecated
                void onInit() override;
                //appelé lors du premier chargement de la scène OU quand on charge la scène après qu'une autre scène ai été chargé
                void onAwake() override;
                //appelé à chaque chargement / rechargement de la scène
                void onStart() override;
                //appelé à chaque frame
                void onUpdate() override;
                //appelé à chaque X ms. (X étant le nombre définie par vous dans l'engine. De base X = 25)
                void onFixedUpdate() override;
                //appelé après toutes les fonctions de mise à jour
                void onDisplay() override;

                /**
                 * Fonctionnalité lorsque votre GameObject (objet de jeu) à un composant collider sur lui
                 * 
                 * Attnetion !
                 * Les fonctions suivantes, ne seront pas appelé lors des fonctions mise à jour (au dessus)
                 * ces fonctions peuvent être appelé plus tard ou avant
                */

                //appelé lors du passage de la souris sur l'objet
                void onMouseEnter() override;
                //appelé lorsque la souris reste sur l'objet
                void onMouseStay() override;
                //appelé lors de la sortie de la souris sur l'objet
                void onMouseExit() override;

                //appelé lorsqu'un objet rentre dans l'objet rattaché
                void onTriggerEnter(std::shared_ptr<GameObject> go) override;
                //appelé lorsqu'un objet reste dans l'objet rattaché
                void onTriggerStay(std::shared_ptr<GameObject> go) override;
                //appelé lorsqu'un objet sort dans l'objet rattaché
                void onTriggerExit(std::shared_ptr<GameObject> go) override;
                //ajoutez des conditions au lancement de votre composant
                bool checkComponentValidity() override;
                //appelé lorsque votre objet est détruit
                void onDestroy() override;
                //appelé lorsque le jeu se quitte
                void onGameQuit() override;
                //appelé lorsque le GameObject se désactive
                void onDisable() override;
                //appelé lorsque le GameObject s'active
                void onEnable() override;

        }
        
    }
}

.cpp

#include "MyComponent.hpp"

KapEngine::MyGame::MyComponent(std::shared_ptr<GameObject> go) : Component(go, "MyComponent") {
    Debug::log("Creating component...");
}

KapEngine::MyGame::~MyComponent() {
    Debug::log("Deleting component...");
}

void KapEngine::MyGame::MyComponent::onAwake() {
    Debug::log("My component awake !");
}

void KapEngine::MyGame::MyComponent::onStart() {
    Debug::log("Starting component !");
}

void KapEngine::MyGame::MyComponent::onUpdate() {
    Debug::log("Update component !");
}

void KapEngine::MyGame::MyComponent::onFixedUpdate() {
    Debug::log("Fixed Update component !");
}

void KapEngine::MyGame::MyComponent::onDisplay() {
    Debug::log("Display component !");
}

void MonComposant::onMouseEnter() {
    Debug::log("Mouse entered in object");
}

void MonComposant::onMouseStay() {
    Debug::log("Mouse stay in object");
}

void KapEngine::MyGame::MyComponent::onMouseExit() {
    Debug::log("Mouse exit object");
}

void KapEngine::MyGame::MyComponent::onTriggerEnter(std::shared_ptr<GameObject> go) {
    Debug::log("The object: " + go->getName() + " entered in my object");
}

void KapEngine::MyGame::MyComponent::onTriggerStay(std::shared_ptr<GameObject> go) {
    Debug::log("The object: " + go->getName() + " stays in my object");
}

void KapEngine::MyGame::MyComponent::onTriggerExit(std::shared_ptr<GameObject> go) {
    Debug::log("The object: " + go->getName() + " comes out of my object");
}

bool KapEngine::MyGame::MyComponent::checkComponentValidity() {
    if (...) {
        //my component should not start
        return false;
    }
    //my component can start
    return true;
}

void KapEngine::MyGame::MyComponent::onDestroy() {
    Debug::log("The object " + getGameObject().getName() + " is destroy");
}

void KapEngine::MyGame::MyComponent::onGameQuit() {
    Debug::log("Game is stopping");
}

void KapEngine::MyGame::MyComponent::onDisable() {
    Debug::log("The object " + getGameObject().getName() + " is now disable");
}

void KapEngine::MyGame::MyComponent::onEnable() {
    Debug::log("The object " + getGameObject().getName() + " is now enable");
}

Last updated