Jump to content

Recommended Posts

Posted

Component::Load is not being called for prefabs

Test prefab: BoxPrefab.zip

#include "Leadwerks.h"
#include "ComponentSystem.h"

using namespace Leadwerks;

int main(int argc, const char* argv[]) {
    RegisterComponents();
    //Get the displays
    auto displays = GetDisplays();

    //Create a window
    auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR);

    //Create a world
    auto world = CreateWorld();

    //Create a framebuffer
    auto framebuffer = CreateFramebuffer(window);

    //Create a camera    
    auto camera = CreateCamera(world);
    camera->SetClearColor(0.125);
    camera->SetPosition(0, 1, -4);

    //Create light
    auto light = CreateBoxLight(world);
    light->SetRange(-10, 10);
    light->SetArea(15, 15);
    light->SetRotation(45, 35, 0);
    light->SetColor(2);

    //Create the ground
    auto ground = CreateBox(world, 10, 1, 10);
    ground->SetPosition(0, -0.5, 0);
    ground->SetColor(0, 1, 0);

    //Create a scene
    auto scene = CreateScene();
    scene->entities.push_back(ground);
    scene->entities.push_back(light);
    ground = NULL;
    light = NULL;
    vector<shared_ptr<Mover>> movers;
    //Add some boxes
    for (int n = 0; n < 10; ++n) {
        auto box = LoadPrefab(world, "BoxPrefab.pfb");
        box->SetColor(0, 0, 1);
        box->SetPosition(Random(-5, 5), Random(5, 10), Random(-5, 5));
        auto comp = box->GetComponent<Mover>();
        comp->rotationspeed.y = 50.0f;
        movers.push_back(comp);
        scene->entities.push_back(box);
    }

    //Save the starting scene to a file
    scene->Save("game.ultra");

    //Main loop
    while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) {
        if (window->KeyHit(KEY_R)) {
            for (auto& comp : movers) {
                comp->rotationspeed.y = 100.0f;
            }
            Print("Changed rotation speed");
        }
        //Reload the starting scene when space key is pressed
        if (window->KeyHit(KEY_SPACE)) {
           bool b = scene->Reload("game.ultra");
           Print(b ? "Reloaded" : "Failed");
        }

        world->Update();
        world->Render(framebuffer);
    }
    return 0;
}

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...