1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use shipyard::*;
use shipyard_hierarchy::*;
use crate::math::*;
use crate::components::*;
use crate::hierarchy::*;
pub fn spawn_child(world:&World, parent: Option<EntityId>, translation: Option<Vec3>, rotation: Option<Quat>, scale: Option<Vec3>, origin:Option<Vec3>) -> EntityId {
let mut entities = world.borrow::<EntitiesViewMut>();
let mut hierarchy_storages = world.borrow::<(UniqueView<TransformRoot>, ViewMut<Parent>, ViewMut<Child>)>();
let mut transform_storages = world.borrow::<(ViewMut<Translation>, ViewMut<Rotation>, ViewMut<Scale>, ViewMut<Origin>, ViewMut<LocalTransform>, ViewMut<WorldTransform>, ViewMut<DirtyTransform>)>();
let mut storages:TransformHierarchyStoragesMut = (
&mut entities,
&mut hierarchy_storages.0,
&mut hierarchy_storages.1,
&mut hierarchy_storages.2,
&mut transform_storages.0,
&mut transform_storages.1,
&mut transform_storages.2,
&mut transform_storages.3,
&mut transform_storages.4,
&mut transform_storages.5,
&mut transform_storages.6
);
storages.spawn_child(parent, translation, rotation, scale, origin)
}
pub fn set_trs_origin(world:&World, entity:EntityId, translation: Option<Vec3>, rotation: Option<Quat>, scale: Option<Vec3>, origin:Option<Vec3>) {
let mut storages = world.borrow::<(ViewMut<Translation>, ViewMut<Rotation>, ViewMut<Scale>, ViewMut<Origin>)>();
let mut storages:TransformStoragesMut = (&mut storages.0, &mut storages.1, &mut storages.2, &mut storages.3);
storages.set_trs_origin(entity, translation, rotation, scale, origin);
}