| 675 | } |
| 676 | |
| 677 | void Node::UpdateDerived() const |
| 678 | { |
| 679 | if (m_parent) |
| 680 | { |
| 681 | if (!m_parent->m_derivedUpdated) |
| 682 | m_parent->UpdateDerived(); |
| 683 | |
| 684 | if (m_inheritPosition) |
| 685 | m_derivedPosition = m_parent->m_derivedRotation*(m_parent->m_derivedScale * (m_initialPosition + m_position)) + m_parent->m_derivedPosition; |
| 686 | else |
| 687 | m_derivedPosition = m_initialPosition + m_position; |
| 688 | |
| 689 | if (m_inheritRotation) |
| 690 | { |
| 691 | m_derivedRotation = m_parent->m_derivedRotation * m_initialRotation * m_rotation; |
| 692 | m_derivedRotation.Normalize(); |
| 693 | } |
| 694 | else |
| 695 | m_derivedRotation = m_initialRotation * m_rotation; |
| 696 | |
| 697 | m_derivedScale = m_initialScale * m_scale; |
| 698 | if (m_inheritScale) |
| 699 | m_derivedScale *= m_parent->m_derivedScale; |
| 700 | } |
| 701 | else |
| 702 | { |
| 703 | m_derivedPosition = m_initialPosition + m_position; |
| 704 | m_derivedRotation = m_initialRotation * m_rotation; |
| 705 | m_derivedScale = m_initialScale * m_scale; |
| 706 | } |
| 707 | |
| 708 | m_derivedUpdated = true; |
| 709 | } |
| 710 | |
| 711 | void Node::UpdateTransformMatrix() const |
| 712 | { |
no outgoing calls
no test coverage detected