| 471 | } |
| 472 | |
| 473 | void Entity::AddForce(Vector3Par pos, Vector3Par force, Color color) |
| 474 | { |
| 475 | LODShapeWithShadow* forceArrow = GScene->ForceArrow(); |
| 476 | float size = force.Size() * 0.05; |
| 477 | if (size > 1) |
| 478 | { |
| 479 | size = 1; |
| 480 | } |
| 481 | |
| 482 | Ref<Object> arrow = new ObjectColored(forceArrow, -1); |
| 483 | Vector3 aside = force.CrossProduct(VAside); |
| 484 | Vector3 zAside = force.CrossProduct(VForward); |
| 485 | if (zAside.SquareSize() > aside.SquareSize()) |
| 486 | { |
| 487 | aside = zAside; |
| 488 | } |
| 489 | arrow->SetPosition(pos); |
| 490 | arrow->SetOrient(force, aside); |
| 491 | arrow->SetPosition(arrow->PositionModelToWorld(forceArrow->BoundingCenter() * size)); |
| 492 | arrow->SetScale(size); |
| 493 | arrow->SetConstantColor(PackedColor(Color(color))); |
| 494 | GLandscape->ShowObject(arrow); |
| 495 | } |
| 496 | |
| 497 | void Entity::OrientationSurface() |
| 498 | { |
nothing calls this directly
no test coverage detected