/// <summary> /// Updates the current bone transform flags. /// These flags determine what matrices can be ignored for matrix updating. /// </summary> public void UpdateTransformFlags() { BoneFlagsTransform flags = 0; //SRT checks to update matrices if (this.Position == Vector3.Zero) { flags |= BoneFlagsTransform.TranslateZero; } if (this.Scale == Vector3.One) { flags |= BoneFlagsTransform.ScaleOne; flags |= BoneFlagsTransform.ScaleVolumeOne; } if (this.Rotation == Quaternion.Identity) { flags |= BoneFlagsTransform.RotateZero; } //Extra scale flags if (this.Scale.X == this.Scale.Y && this.Scale.X == this.Scale.Z) { flags |= BoneFlagsTransform.ScaleUniform; } BoneData.FlagsTransform = flags; }
private static BoneFlagsTransform SetBoneFlags(STBone bn) { BoneFlagsTransform flags = BoneFlagsTransform.None; if (bn.Position == OpenTK.Vector3.Zero) { flags |= BoneFlagsTransform.TranslateZero; } if (bn.EulerRotation == OpenTK.Vector3.Zero) { flags |= BoneFlagsTransform.RotateZero; } if (bn.Scale == OpenTK.Vector3.One) { flags |= BoneFlagsTransform.ScaleOne; } return(flags); }