27 Str.append(VarName +
" ");
28 for (
int i = 0; i <
Array.size(); i++)
31 std::string tempName= it.shapeName.name;
33 Str.append(tempName +
" ");
34 Str.append(std::to_string(it.shapeName.rigidBodyId) +
" ");
35 Str.append(std::to_string(it.meshShapeId) +
" ");
36 Str.append(std::to_string(
static_cast<int>(it.shapeType)) +
" ");
37 auto& t = it.transform.translation();
38 auto& r = it.transform.rotation();
39 auto& s = it.transform.scale();
40 Str.append(std::to_string(t.x) +
" " + std::to_string(t.y) +
" " + std::to_string(t.z) +
" ");
41 Str.append(std::to_string(r(0, 0)) +
" " + std::to_string(r(0, 1)) +
" " + std::to_string(r(0, 2)) +
" ");
42 Str.append(std::to_string(r(1, 0)) +
" " + std::to_string(r(1, 1)) +
" " + std::to_string(r(1, 2)) +
" ");
43 Str.append(std::to_string(r(2, 0)) +
" " + std::to_string(r(2, 1)) +
" " + std::to_string(r(2, 2)) +
" ");
44 Str.append(std::to_string(s.x) +
" " + std::to_string(s.y) +
" " + std::to_string(s.z) +
" ");
46 Str.append(std::to_string(it.Offset.x) +
" " + std::to_string(it.Offset.y) +
" " + std::to_string(it.Offset.z) +
" ");
47 Str.append(std::to_string(it.mHalfLength.x) +
" " + std::to_string(it.mHalfLength.y) +
" " + std::to_string(it.mHalfLength.z) +
" ");
48 Str.append(std::to_string(it.radius) +
" ");
50 Str.append(std::to_string(it.tet[0].x) +
" " + std::to_string(it.tet[0].y) +
" " + std::to_string(it.tet[0].z) +
" ");
51 Str.append(std::to_string(it.tet[1].x) +
" " + std::to_string(it.tet[1].y) +
" " + std::to_string(it.tet[1].z) +
" ");
52 Str.append(std::to_string(it.tet[2].x) +
" " + std::to_string(it.tet[2].y) +
" " + std::to_string(it.tet[2].z) +
" ");
53 Str.append(std::to_string(it.tet[3].x) +
" " + std::to_string(it.tet[3].y) +
" " + std::to_string(it.tet[3].z) +
" ");
55 Str.append(std::to_string(it.capsuleLength) +
" ");
56 Str.append(std::to_string(
static_cast<int>(it.motion)) +
" ");
57 Str.append(std::to_string(it.mDensity) +
" ");
58 Str.append(std::to_string(
int(it.rigidGroup)) +
" ");
60 if (i !=
Array.size() - 1)
70 Str.append(VarName +
" ");
71 for (
int i = 0; i <
Array.size(); i++)
75 Str.append(std::to_string(
static_cast<int>(it.mJointType)) +
" ");
76 std::string tempName = it.mRigidBodyName_1.name;
78 Str.append(tempName +
" ");
79 Str.append(std::to_string(it.mRigidBodyName_1.rigidBodyId) +
" ");
80 tempName = it.mRigidBodyName_2.name;
82 Str.append(tempName +
" ");
83 Str.append(std::to_string(it.mRigidBodyName_2.rigidBodyId) +
" ");
84 Str.append(std::to_string(
int(it.mUseMoter)) +
" ");
85 Str.append(std::to_string(
int(it.mUseRange)) +
" ");
86 Str.append(std::to_string(it.mAnchorPoint[0]) +
" " + std::to_string(it.mAnchorPoint[1]) +
" " + std::to_string(it.mAnchorPoint[2]) +
" ");
87 Str.append(std::to_string(it.mMin) +
" ");
88 Str.append(std::to_string(it.mMax) +
" ");
89 Str.append(std::to_string(it.mMoter) +
" ");
90 Str.append(std::to_string(it.mAxis[0]) +
" " + std::to_string(it.mAxis[1]) +
" " + std::to_string(it.mAxis[2]) +
" ");
92 if (i !=
Array.size() - 1)
125 std::stringstream ss(str);
128 auto field = std::make_shared<VehicleBind>();
129 std::vector<VehicleRigidBodyInfo> rigids;
130 std::vector<VehicleJointInfo> joints;
133 bool isRigid =
false;
134 bool isJoint =
false;
141 std::cout << substr <<
"\n";
142 if (substr ==
" " || substr ==
"\n")
146 if (!isRigid && !isJoint)
151 if (std::isdigit(substr[0]))
153 rigids.resize(std::stoi(substr));
158 if (std::isdigit(substr[0]))
160 joints.resize(std::stoi(substr));
172 arrayID = dataID / 42;
175 if (arrayID < rigids.size()&&isRigid)
181 rigids[arrayID].shapeName.name = substr;
184 rigids[arrayID].shapeName.rigidBodyId = std::stoi(substr);
187 rigids[arrayID].meshShapeId = std::stoi(substr);
190 rigids[arrayID].shapeType =
static_cast<ConfigShapeType>(std::stoi(substr));
193 rigids[arrayID].transform.translation().x = std::stod(substr);
196 rigids[arrayID].transform.translation().y = std::stod(substr);
199 rigids[arrayID].transform.translation().z = std::stod(substr);
202 rigids[arrayID].transform.rotation()(0, 0) = std::stod(substr);
205 rigids[arrayID].transform.rotation()(0, 1) = std::stod(substr);
208 rigids[arrayID].transform.rotation()(0, 2) = std::stod(substr);
211 rigids[arrayID].transform.rotation()(1, 0) = std::stod(substr);
214 rigids[arrayID].transform.rotation()(1, 1) = std::stod(substr);
217 rigids[arrayID].transform.rotation()(1, 2) = std::stod(substr);
220 rigids[arrayID].transform.rotation()(2, 0) = std::stod(substr);
223 rigids[arrayID].transform.rotation()(2, 1) = std::stod(substr);
226 rigids[arrayID].transform.rotation()(2, 2) = std::stod(substr);
229 rigids[arrayID].transform.scale().x = std::stod(substr);
232 rigids[arrayID].transform.scale().y = std::stod(substr);
235 rigids[arrayID].transform.scale().z = std::stod(substr);
238 rigids[arrayID].Offset.x = std::stod(substr);
241 rigids[arrayID].Offset.y = std::stod(substr);
244 rigids[arrayID].Offset.z = std::stod(substr);
247 rigids[arrayID].mHalfLength.x = std::stod(substr);
250 rigids[arrayID].mHalfLength.y = std::stod(substr);
253 rigids[arrayID].mHalfLength.z = std::stod(substr);
256 rigids[arrayID].radius = std::stod(substr);
259 rigids[arrayID].tet[0].x = std::stod(substr);
262 rigids[arrayID].tet[0].y = std::stod(substr);
265 rigids[arrayID].tet[0].z = std::stod(substr);
268 rigids[arrayID].tet[1].x = std::stod(substr);
271 rigids[arrayID].tet[1].y = std::stod(substr);
274 rigids[arrayID].tet[1].z = std::stod(substr);
277 rigids[arrayID].tet[2].x = std::stod(substr);
280 rigids[arrayID].tet[2].y = std::stod(substr);
283 rigids[arrayID].tet[2].z = std::stod(substr);
286 rigids[arrayID].tet[3].x = std::stod(substr);
289 rigids[arrayID].tet[3].y = std::stod(substr);
292 rigids[arrayID].tet[3].z = std::stod(substr);
295 rigids[arrayID].capsuleLength = std::stod(substr);
301 rigids[arrayID].mDensity = std::stoi(substr);
304 rigids[arrayID].rigidGroup = std::stoi(substr);
314 if (substr ==
"VehicleRigidBodyInfo")
326 arrayID = dataID / 16;
330 if (arrayID < joints.size() && isJoint)
335 joints[arrayID].mJointType =
static_cast<ConfigJointType>(std::stoi(substr));
339 joints[arrayID].mRigidBodyName_1.name = substr;
342 joints[arrayID].mRigidBodyName_1.rigidBodyId = std::stoi(substr);
346 joints[arrayID].mRigidBodyName_2.name = substr;
349 joints[arrayID].mRigidBodyName_2.rigidBodyId = std::stoi(substr);
352 joints[arrayID].mUseMoter = bool(std::stoi(substr));
355 joints[arrayID].mUseRange = bool(std::stoi(substr));
358 joints[arrayID].mAnchorPoint.x = std::stod(substr);
361 joints[arrayID].mAnchorPoint.y = std::stod(substr);
364 joints[arrayID].mAnchorPoint.z = std::stod(substr);
367 joints[arrayID].mMin = std::stod(substr);
370 joints[arrayID].mMax = std::stod(substr);
373 joints[arrayID].mMoter = std::stod(substr);
376 joints[arrayID].mAxis.x = std::stod(substr);
379 joints[arrayID].mAxis.y = std::stod(substr);
382 joints[arrayID].mAxis.z = std::stod(substr);
390 if (substr ==
"VehicleJointInfo")
401 field->mVehicleRigidBodyInfo = rigids;
402 field->mVehicleJointInfo = joints;