collider
This commit is contained in:
parent
8ddc136531
commit
92d4c9429d
@ -126,6 +126,7 @@ namespace mc
|
|||||||
{
|
{
|
||||||
node->name
|
node->name
|
||||||
});
|
});
|
||||||
|
childs[node->name] = node;
|
||||||
#else
|
#else
|
||||||
A8_ABORT();
|
A8_ABORT();
|
||||||
#endif
|
#endif
|
||||||
|
@ -870,19 +870,46 @@ void MapInstance::LoadHouse()
|
|||||||
map_service_->AddTriangle(&tri);
|
map_service_->AddTriangle(&tri);
|
||||||
}//end for i
|
}//end for i
|
||||||
} else if (c->type == mc::kBoxCollider) {
|
} else if (c->type == mc::kBoxCollider) {
|
||||||
mc::BoxCollider* box_collider = (mc::BoxCollider*)c;
|
mc::BoxCollider* box_collider = (mc::BoxCollider*)c;
|
||||||
std::vector<glm::vec3> new_points;
|
if (node->name == "") {
|
||||||
mc::RotateBounds(box_collider->center,
|
printf("node->name %f,%f,%f %f,%f,%f\n",
|
||||||
box_collider->size,
|
node->name.c_str(),
|
||||||
node->transform.local_rotation,
|
box_collider->center.x,
|
||||||
new_points
|
box_collider->center.y,
|
||||||
);
|
box_collider->center.z,
|
||||||
box_collider->triangles.reserve(2 * 8);
|
box_collider->size.x,
|
||||||
|
box_collider->size.y
|
||||||
|
box_collider->size.z);
|
||||||
|
}
|
||||||
|
std::vector<glm::vec3> new_points;
|
||||||
|
mc::RotateBounds(box_collider->center,
|
||||||
|
box_collider->size,
|
||||||
|
node->transform.local_rotation,
|
||||||
|
new_points
|
||||||
|
);
|
||||||
|
box_collider->triangles.reserve(2 * 6);
|
||||||
|
for (int i = 0; i < 12; ++i) {
|
||||||
auto& tri = a8::FastAppend(box_collider->triangles);
|
auto& tri = a8::FastAppend(box_collider->triangles);
|
||||||
tri.node = node;
|
tri.node = node;
|
||||||
|
tri.vert0 = new_points[box_tri_arr[i][0]];
|
||||||
|
tri.vert1 = new_points[box_tri_arr[i][1]];
|
||||||
|
tri.vert2 = new_points[box_tri_arr[i][2]];
|
||||||
|
tri.min_y = tri.vert0.y;
|
||||||
|
tri.max_y = tri.vert0.y;
|
||||||
|
for (int ii = 1; ii < 3; ++ii) {
|
||||||
|
float y = new_points[box_tri_arr[i][ii]].y;
|
||||||
|
if (y < tri.min_y) {
|
||||||
|
tri.min_y = y;
|
||||||
|
}
|
||||||
|
if (y > tri.max_y) {
|
||||||
|
}
|
||||||
|
} //endif ii
|
||||||
|
tri.min_y -= 1.0f;
|
||||||
|
tri.max_y += 1.0f;
|
||||||
map_service_->AddTriangle(&tri);
|
map_service_->AddTriangle(&tri);
|
||||||
}//endif
|
}//endif
|
||||||
}//end forc
|
}//end forc
|
||||||
|
}
|
||||||
things_.push_back(node);
|
things_.push_back(node);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user