-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcell_bucket_location_data.cpp
More file actions
56 lines (49 loc) · 3.28 KB
/
Copy pathcell_bucket_location_data.cpp
File metadata and controls
56 lines (49 loc) · 3.28 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
/**
* cell_bucket_location_data
*
* Purpose:
* Export CELL state required by bucket-based readers (e.g., focal adhesion updates).
*
* Inputs:
* - CELL variables: id, position, orientation, anchor arrays
*
* Outputs:
* - MessageBucket keyed by CELL id containing anchor geometry and pose
*/
FLAMEGPU_AGENT_FUNCTION(cell_bucket_location_data, flamegpu::MessageNone, flamegpu::MessageBucket) {
FLAMEGPU->message_out.setVariable<int>("id", FLAMEGPU->getVariable<int>("id"));
FLAMEGPU->message_out.setVariable<float>("x", FLAMEGPU->getVariable<float>("x"));
FLAMEGPU->message_out.setVariable<float>("y", FLAMEGPU->getVariable<float>("y"));
FLAMEGPU->message_out.setVariable<float>("z", FLAMEGPU->getVariable<float>("z"));
FLAMEGPU->message_out.setVariable<float>("orx", FLAMEGPU->getVariable<float>("orx"));
FLAMEGPU->message_out.setVariable<float>("ory", FLAMEGPU->getVariable<float>("ory"));
FLAMEGPU->message_out.setVariable<float>("orz", FLAMEGPU->getVariable<float>("orz"));
FLAMEGPU->message_out.setVariable<float>("nucleus_radius", FLAMEGPU->getVariable<float>("nucleus_radius"));
FLAMEGPU->message_out.setVariable<float>("eps_xx", FLAMEGPU->getVariable<float>("eps_xx"));
FLAMEGPU->message_out.setVariable<float>("eps_yy", FLAMEGPU->getVariable<float>("eps_yy"));
FLAMEGPU->message_out.setVariable<float>("eps_zz", FLAMEGPU->getVariable<float>("eps_zz"));
FLAMEGPU->message_out.setVariable<float>("eps_xy", FLAMEGPU->getVariable<float>("eps_xy"));
FLAMEGPU->message_out.setVariable<float>("eps_xz", FLAMEGPU->getVariable<float>("eps_xz"));
FLAMEGPU->message_out.setVariable<float>("eps_yz", FLAMEGPU->getVariable<float>("eps_yz"));
FLAMEGPU->message_out.setVariable<int>("dead", FLAMEGPU->getVariable<int>("dead"));
FLAMEGPU->message_out.setVariable<int>("just_divided", FLAMEGPU->getVariable<int>("just_divided"));
FLAMEGPU->message_out.setVariable<int>("daughter_id", FLAMEGPU->getVariable<int>("daughter_id"));
FLAMEGPU->message_out.setVariable<int>("marked_for_removal", FLAMEGPU->getVariable<int>("marked_for_removal"));
const uint8_t N_ANCHOR_POINTS = 50; // WARNING: this variable must be hard coded to have the same value as the one defined in the main python function.
for (int i = 0; i < N_ANCHOR_POINTS; i++) {
float u_ref_x = FLAMEGPU->getVariable<float, N_ANCHOR_POINTS>("u_ref_x_i", i);
FLAMEGPU->message_out.setVariable<float, N_ANCHOR_POINTS>("u_ref_x_i", i, u_ref_x);
float u_ref_y = FLAMEGPU->getVariable<float, N_ANCHOR_POINTS>("u_ref_y_i", i);
FLAMEGPU->message_out.setVariable<float, N_ANCHOR_POINTS>("u_ref_y_i", i, u_ref_y);
float u_ref_z = FLAMEGPU->getVariable<float, N_ANCHOR_POINTS>("u_ref_z_i", i);
FLAMEGPU->message_out.setVariable<float, N_ANCHOR_POINTS>("u_ref_z_i", i, u_ref_z);
float val1 = FLAMEGPU->getVariable<float, N_ANCHOR_POINTS>("x_i", i);
FLAMEGPU->message_out.setVariable<float, N_ANCHOR_POINTS>("x_i", i, val1);
float val2 = FLAMEGPU->getVariable<float, N_ANCHOR_POINTS>("y_i", i);
FLAMEGPU->message_out.setVariable<float, N_ANCHOR_POINTS>("y_i", i, val2);
float val3 = FLAMEGPU->getVariable<float, N_ANCHOR_POINTS>("z_i", i);
FLAMEGPU->message_out.setVariable<float, N_ANCHOR_POINTS>("z_i", i, val3);
}
FLAMEGPU->message_out.setKey(FLAMEGPU->getVariable<int>("id"));
return flamegpu::ALIVE;
}