Skip to content

Commit

Permalink
Merge pull request #20 from EldarMuradov/release-0.0.1
Browse files Browse the repository at this point in the history
Release 0.0.1
  • Loading branch information
EldarMuradov authored Nov 6, 2024
2 parents 29f55c0 + de24fb1 commit ef038fc
Show file tree
Hide file tree
Showing 566 changed files with 154,649 additions and 40 deletions.
2 changes: 2 additions & 0 deletions cmake/era_engine_common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ ${ERA_ENGINE_PATH}/resources/lib/Release/yaml-cpp.lib
${ERA_ENGINE_PATH}/resources/lib/Release/DirectXTex.lib
${ERA_ENGINE_PATH}/resources/lib/Release/nvsdk_ngx_d.lib
${ERA_ENGINE_PATH}/resources/lib/Release/nethost.lib
${ERA_ENGINE_PATH}/resources/lib/Release/rttr_core.lib
${ERA_ENGINE_PATH}/resources/lib/Release/libnethost.lib
${ERA_ENGINE_PATH}/resources/lib/Release/cuda.lib)

Expand Down Expand Up @@ -143,6 +144,7 @@ macro(era_common_register program_name)
target_include_directories(${program_name} PUBLIC ${ERA_ENGINE_PATH}/modules/thirdparty_ext/yaml-cpp/include)
target_include_directories(${program_name} PUBLIC ${ERA_ENGINE_PATH}/modules/thirdparty_ext/directxtex)
target_include_directories(${program_name} PUBLIC ${ERA_ENGINE_PATH}/modules/thirdparty_ext/entt/src)
target_include_directories(${program_name} PUBLIC ${ERA_ENGINE_PATH}/modules/thirdparty_ext/rttr/src)
target_include_directories(${program_name} PRIVATE ${ERA_ENGINE_PATH}/resources/common)
target_include_directories(${program_name} PRIVATE ${ERA_ENGINE_PATH}/modules/shaders)

Expand Down
19 changes: 15 additions & 4 deletions modules/core/src/animation/animation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ namespace era_engine::animation
uint32 secondKeyframeIndex = firstKeyframeIndex + 1;

float t = inverseLerp(clip.positionTimestamps[firstKeyframeIndex], clip.positionTimestamps[secondKeyframeIndex], time);
;

vec3 a = clip.positionKeyframes[firstKeyframeIndex];
vec3 b = clip.positionKeyframes[secondKeyframeIndex];

Expand Down Expand Up @@ -752,11 +752,22 @@ namespace era_engine::animation
prevFrameVertexBuffer = currentVertexBuffer;
currentVertexBuffer = vb;

std::vector<trs> transforms = ragdoll->apply();
trs* localTransforms = arena.allocate<trs>((uint32)skeleton.joints.size());
trs deltaRootMotion;

ragdoll->updateMotion(localTransforms, &deltaRootMotion);

trs* globalTransforms = arena.allocate<trs>((uint32)skeleton.joints.size());

skeleton.getSkinningMatricesFromLocalTransforms(localTransforms, globalTransforms, skinningMatrices);

skeleton.getSkinningMatricesFromGlobalTransforms(&transforms[0], skinningMatrices);
if (transform)
{
*transform = *transform * deltaRootMotion;
transform->rotation = normalize(transform->rotation);
}

currentGlobalTransforms = &transforms[0];
currentGlobalTransforms = globalTransforms;
}
else if (ragdoll && ragdoll->ragdoll && !ragdoll->simulated)
{
Expand Down
61 changes: 40 additions & 21 deletions modules/core/src/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@
#include "scripting/script.h"
#include "scripting/native_scripting_linker.h"

#include "ecs/world.h"
#include "ecs/entity.h"
#include "ecs/base_components/base_components.h"

namespace era_engine
{
static raytracing_object_type defineBlasFromMesh(const ref<multi_mesh>& mesh)
Expand All @@ -85,6 +89,26 @@ namespace era_engine
return {};
}

static void ecs_test()
{
ref<World> game_world = make_ref<World>("GameWorld");
{
Entity entity1 = game_world->create_entity("Entity1");
Entity entity2 = game_world->create_entity("Entity2");

game_world->destroy_entity(entity1);
game_world->destroy_entity(entity2);
}
(void)game_world;
{
Entity entity = game_world->create_entity("Entity");
(void)entity;
game_world->destroy_entity(entity);
}
(void)game_world;
game_world->destroy();
}

void addRaytracingComponentAsync(eentity entity, ref<multi_mesh> mesh)
{
struct add_ray_tracing_data
Expand Down Expand Up @@ -239,7 +263,6 @@ namespace era_engine
}

static entity_handle sphere{};
//static entity_handle ragdoll{};

static void initTestScene(escene& scene)
{
Expand All @@ -254,7 +277,7 @@ namespace era_engine
addRaytracingComponentAsync(sponza, mesh);
}
#endif

ecs_test();
#if 0
if (auto treeMesh = loadTreeMeshFromFileAsync(getAssetPath("/resources/assets/tree/source/tree.fbx")))
{
Expand Down Expand Up @@ -340,7 +363,19 @@ namespace era_engine
initializeAnimationComponentAsync(en, mesh);
addRaytracingComponentAsync(en, mesh);
ragdoll = en.handle;
struct ragdoll_load_data
{
entity_handle handle;
escene& scene;
} ragdoll_data = {en.handle, scene};
mainThreadJobQueue.createJob<ragdoll_load_data>([](ragdoll_load_data& data, job_handle handle)
{
eentity rag{ data.handle, &data.scene.registry };
rag.getComponent<physics::px_ragdoll_component>().initRagdoll(make_ref<animation::animation_skeleton>(rag.getComponent<mesh_component>().mesh->skeleton));
},
ragdoll_data).submitAfter(mesh->loadJob);
}*/


Expand Down Expand Up @@ -379,7 +414,7 @@ namespace era_engine
//}

//auto& vehicle = scene.createEntity("Vehicle")
// .addComponent<transform_component>(vec3(2.f), quat::identity, vec3(1.f))
// .addComponent<transform_component>(vec3(2.f, 10.0f, 5.0f), quat::identity, vec3(1.f))
// .addComponent<physics::px_4_wheels_vehicle_component>(vec3(2.f));

//vehicle.getComponent<physics::px_4_wheels_vehicle_component>().setupVehicle();
Expand Down Expand Up @@ -769,6 +804,7 @@ namespace era_engine
}
}
#endif

updateTestScene(dt, scene, input);

//if (renderer->mode != renderer_mode_pathtraced)
Expand Down Expand Up @@ -892,23 +928,6 @@ namespace era_engine
renderer->setSun(sun);
renderer->setCamera(camera);

//if (ImGui::Begin("Ragdoll"))
//{
// static bool init = false;

// if (ImGui::Checkbox("Build", &init))
// {
// init = false;

// eentity rag{ ragdoll, &scene.registry };

// rag.getComponent<physics::px_ragdoll_component>().initRagdoll(make_ref<animation::animation_skeleton>(rag.getComponent<mesh_component>().mesh->skeleton));
// }
// ImGui::End();
//}

//if (running)
// physics::physics_holder::physicsRef->endSimulation(dt);
#ifndef ERA_RUNTIME
editor.visualizePhysics(&ldrRenderPass);
#endif
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) 2023-present Eldar Muradov. All rights reserved.

#include "core/system.h"
#include "core/system_info.h"
#include "core/string.h"

#include "dx/dx_context.h"
Expand Down
File renamed without changes.
39 changes: 39 additions & 0 deletions modules/core/src/ecs/base_components/base_components.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#include "ecs/base_components/base_components.h"

namespace era_engine
{

NameComponent::NameComponent(ref<Entity::EcsData> _data, const char* n) : Component(_data)
{
strncpy(name, n, sizeof(name));
name[sizeof(name) - 1] = 0;
}

NameComponent::~NameComponent()
{
}

TransformComponent::TransformComponent(ref<Entity::EcsData> _data, const trs& t)
: Component(_data), transform(t)
{
}

TransformComponent::TransformComponent(ref<Entity::EcsData> _data, vec3 position, quat rotation, vec3 scale)
: Component(_data), transform(position, rotation, scale)
{
}

TransformComponent::~TransformComponent()
{
}

ChildComponent::ChildComponent(ref<Entity::EcsData> _data, weakref<Entity::EcsData> _parent)
: Component(_data), parent(_parent)
{
}

ChildComponent::~ChildComponent()
{
}

}
48 changes: 48 additions & 0 deletions modules/core/src/ecs/base_components/base_components.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#pragma once

#include "core/math.h"

#include "ecs/component.h"

namespace era_engine
{
class NameComponent final : Component
{
public:
NameComponent(ref<Entity::EcsData> _data, const char* n = "Component");

virtual ~NameComponent();

public:
char name[32]{};
};
REFLECT_STRUCT(NameComponent,
(name, "name")
);

class TransformComponent final : Component
{
public:
TransformComponent(ref<Entity::EcsData> _data, const trs& t = trs::identity);
TransformComponent(ref<Entity::EcsData> _data, vec3 position, quat rotation, vec3 scale = vec3(1.f, 1.f, 1.f));

virtual ~TransformComponent();

trs transform = trs::identity;
};
REFLECT_STRUCT(TransformComponent,
(transform, "transform")
);

class ChildComponent final : Component
{
public:
ChildComponent(ref<Entity::EcsData> _data, weakref<Entity::EcsData> _parent);
virtual ~ChildComponent();

weakref<Entity::EcsData> parent;
};
REFLECT_STRUCT(ChildComponent,
(parent, "parent")
);
}
55 changes: 55 additions & 0 deletions modules/core/src/ecs/component.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include "ecs/component.h"
#include "ecs/world.h"

namespace era_engine
{

RTTR_REGISTRATION
{
using namespace rttr;
rttr::registration::class_<Component>("Component")
.constructor<>();
}

Component::Component(ref<Entity::EcsData> _data) noexcept
: component_data(_data)
{
}

Component::Component(const Component& _component) noexcept
: component_data(_component.component_data)
{
}

Component::Component(Component&& _component) noexcept
{
component_data = std::move(_component.component_data);
}

Component::~Component()
{
}

Component& Component::operator=(const Component& _component)
{
component_data = _component.component_data;
return *this;
}

Component& Component::operator=(Component&& _component)
{
component_data = std::move(_component.component_data);
return *this;
}

World* Component::get_world() const
{
return worlds[component_data->registry];
}

Entity Component::get_entity() const
{
return Entity(component_data);
}

}
40 changes: 40 additions & 0 deletions modules/core/src/ecs/component.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#pragma once

#include "core/reflect.h"

#include "ecs/entity.h"

#include <typeinfo>

#include <rttr/type>
#include <rttr/registration>
#include <rttr/registration_friend>

namespace era_engine
{
using namespace rttr;
class World;

class Component
{
public:
Component() = default;
Component(ref<Entity::EcsData> _data) noexcept;
Component(const Component& _component) noexcept;
Component(Component&& _component) noexcept;
virtual ~Component();

Component& operator=(const Component& _component);
Component& operator=(Component&& _component);

World* get_world() const;

Entity get_entity() const;

RTTR_ENABLE()
RTTR_REGISTRATION_FRIEND

protected:
ref<Entity::EcsData> component_data = nullptr;
};
}
Loading

0 comments on commit ef038fc

Please sign in to comment.