Antkeeper  0.0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
spawn.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2023 Christopher J. Howard
3  *
4  * This file is part of Antkeeper source code.
5  *
6  * Antkeeper source code is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * Antkeeper source code is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #include "game/spawn.hpp"
24 
25 entity::id spawn_ant_egg(::game& ctx, const ant_genome& genome, bool fertilized, const math::fvec3& position)
26 {
27  // Create entity
28  entity::id egg_eid = ctx.entity_registry->create();
29 
30  // Construct transform component
36 
37  // Construct scene component
38  ctx.entity_registry->emplace<::scene_component>(egg_eid, std::make_unique<scene::static_mesh>(genome.egg->phenes.front().model), std::uint8_t{1});
39 
40  return egg_eid;
41 }
42 
44 {
45  // Create entity
46  entity::id larva_eid = ctx.entity_registry->create();
47 
48  // Construct transform component
54 
55  // Construct scene component
56  ctx.entity_registry->emplace<::scene_component>(larva_eid, std::make_unique<scene::static_mesh>(genome.larva->phenes.front().model), std::uint8_t{1});
57 
58  return larva_eid;
59 }
60 
62 {
63  return entt::null;
64 }
65 
Definition: game.hpp:121
std::unique_ptr< entity::registry > entity_registry
Definition: game.hpp:392
entt::entity id
Entity ID type.
Definition: id.hpp:28
entity::id spawn_ant_larva(::game &ctx, const ant_genome &genome, const math::fvec3 &position)
Spawns an ant larva.
Definition: spawn.cpp:43
entity::id spawn_worker_ant(::game &ctx, const ant_genome &genome, const math::fvec3 &position)
Spawns a worker ant.
Definition: spawn.cpp:61
entity::id spawn_ant_egg(::game &ctx, const ant_genome &genome, bool fertilized, const math::fvec3 &position)
Spawns an ant egg.
Definition: spawn.cpp:25
Complete set of ant genes.
Definition: ant-genome.hpp:50
std::shared_ptr< ant_larva_gene > larva
Definition: ant-genome.hpp:61
std::shared_ptr< ant_egg_gene > egg
Definition: ant-genome.hpp:55
static constexpr transform identity() noexcept
Returns an identity transform.
Definition: transform.hpp:107
vector_type translation
Translation vector.
Definition: transform.hpp:50
n-dimensional vector.
Definition: vector.hpp:44
math::transform< float > world
math::transform< float > local