| 1368 | //----------------------------------------------------------------------------- |
| 1369 | |
| 1370 | bool Camera::_setModeField( void *object, const char *index, const char *data ) |
| 1371 | { |
| 1372 | Camera *cam = static_cast<Camera*>( object ); |
| 1373 | |
| 1374 | if( dStricmp(data, "Fly") == 0 ) |
| 1375 | { |
| 1376 | cam->setFlyMode(); |
| 1377 | return false; // already changed mode |
| 1378 | } |
| 1379 | |
| 1380 | else if( dStricmp(data, "EditOrbit" ) == 0 ) |
| 1381 | { |
| 1382 | cam->setEditOrbitMode(); |
| 1383 | return false; // already changed mode |
| 1384 | } |
| 1385 | |
| 1386 | else if( (dStricmp(data, "OrbitObject") == 0 && cam->mMode != OrbitObjectMode) || |
| 1387 | (dStricmp(data, "TrackObject") == 0 && cam->mMode != TrackObjectMode) || |
| 1388 | (dStricmp(data, "OrbitPoint") == 0 && cam->mMode != OrbitPointMode) ) |
| 1389 | { |
| 1390 | Con::warnf("Couldn't change Camera mode to %s: required information missing. Use camera.set%s().", data, data); |
| 1391 | return false; // don't change the mode - not valid |
| 1392 | } |
| 1393 | |
| 1394 | else if( dStricmp(data, "OrbitObject") != 0 && |
| 1395 | dStricmp(data, "TrackObject") != 0 && |
| 1396 | bool(cam->mOrbitObject) ) |
| 1397 | { |
| 1398 | cam->clearProcessAfter(); |
| 1399 | cam->clearNotify(cam->mOrbitObject); |
| 1400 | cam->mOrbitObject = NULL; |
| 1401 | } |
| 1402 | |
| 1403 | // make sure the requested mode is supported, and set it |
| 1404 | // NOTE: The _CameraMode namespace is generated by ImplementEnumType above |
| 1405 | |
| 1406 | const EngineEnumTable& enums = *( TYPE< CameraMotionMode >()->getEnumTable() ); |
| 1407 | const U32 numValues = enums.getNumValues(); |
| 1408 | |
| 1409 | for( S32 i = 0; i < numValues; ++i) |
| 1410 | { |
| 1411 | if( dStricmp(data, enums[i].mName) == 0 ) |
| 1412 | { |
| 1413 | cam->mMode = (CameraMotionMode) enums[i].mInt; |
| 1414 | return false; |
| 1415 | } |
| 1416 | } |
| 1417 | |
| 1418 | Con::warnf("Unsupported camera mode: %s", data); |
| 1419 | return false; |
| 1420 | } |
| 1421 | |
| 1422 | //----------------------------------------------------------------------------- |
| 1423 |
nothing calls this directly
no test coverage detected