Axiom.Core.Node.UpdateFromParent C# (CSharp) Method

UpdateFromParent() protected method

Triggers the node to update its combined transforms. This method is called internally by the engine to ask the node to update its complete transformation based on its parents derived transform.
protected UpdateFromParent ( ) : void
return void
		virtual protected void UpdateFromParent()
		{
			if ( parent != null )
			{
				// Update orientation
				Quaternion parentOrientation = parent.DerivedOrientation;
				if ( inheritOrientation )
				{
					// combine local orientation with parents
					derivedOrientation = parentOrientation * orientation;
				}
				else
				{
					// no inheritance
					derivedOrientation = orientation;
				}

				// update scale
				Vector3 parentScale = parent.DerivedScale;
				if ( inheritScale )
				{
					// set own scale, just combine as equivalent axes, no shearing
					derivedScale = parentScale * scale;
				}
				else
				{
					// do not inherit parents scale
					derivedScale = scale;
				}

				// Change position vector based on parent's orientation & scale
				derivedPosition = parentOrientation * ( parentScale * position );

				// add parents positition to local altered position
				derivedPosition += parent.DerivedPosition;
			}
			else
			{
				// Root node, no parent
				derivedOrientation = orientation;
				derivedPosition = position;
				derivedScale = scale;
			}

			needParentUpdate = false;
			needTransformUpdate = true;
			needRelativeTransformUpdate = true;

			if ( suppressUpdateEvent == false )
			{
				OnUpdatedFromParent();
			}
		}