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

ScaleBy() public method

Scales the node, combining its current scale with the passed in scaling factor.
This method applies an extra scaling factor to the node's existing scale, (unlike setScale which overwrites it) combining its current scale with the new one. E.g. calling this method twice with Vector3(2,2,2) would have the same effect as setScale(Vector3(4,4,4)) if the existing scale was 1. Note that like rotations, scalings are oriented around the node's origin.
public ScaleBy ( Vector3 factor ) : void
factor Vector3
return void
		public virtual void ScaleBy( Vector3 factor )
		{
			scale = scale * factor;
			NeedUpdate();
		}

Usage Example

Beispiel #1
0
		/// <summary>
		///		Same as the Apply method, but applies to a specified Node instead of it's associated node.
		/// </summary>
		public void ApplyToNode( Node node, float time, float weight, bool accumulate, float scale )
		{
			this.GetInterpolatedKeyFrame( time, kf );

			if ( accumulate )
			{
				// add to existing. Weights are not relative, but treated as absolute multipliers for the animation
				Vector3 translate = kf.Translate * weight * scale;
				node.Translate( translate );

				// interpolate between not rotation and full rotation, to point weight, so 0 = no rotate, and 1 = full rotation
				Quaternion rotate = Quaternion.Slerp( weight, Quaternion.Identity, kf.Rotation );
				node.Rotate( rotate );

				// TODO: not yet sure how to modify scale for cumulative animations
				Vector3 scaleVector = kf.Scale;
				// Not sure how to modify scale for cumulative anims... leave it alone
				//scaleVector = ((Vector3::UNIT_SCALE - kf.getScale()) * weight) + Vector3::UNIT_SCALE;
				if ( scale != 1.0f && scaleVector != Vector3.UnitScale )
					scaleVector = Vector3.UnitScale + ( scaleVector - Vector3.UnitScale ) * scale;
				node.ScaleBy( scaleVector );
			}
			else
			{
				// apply using weighted transform method
				node.WeightedTransform( weight, kf.Translate, kf.Rotation, kf.Scale );
			}
		}