/// <summary> Utility method for applying pose animation </summary> public void ApplyPoseToVertexData(Pose pose, VertexData data, float influence) { if (targetMode == VertexAnimationTargetMode.Hardware) { // Hardware // If target mode is hardware, need to bind our pose buffer // to a target texcoord Debug.Assert(data.HWAnimationDataList.Count == 0, "Haven't set up hardware vertex animation elements!"); // no use for TempBlendedBufferInfo here btw // Set pose target as required int hwIndex = data.HWAnimDataItemsUsed++; // If we try to use too many poses, ignore extras if (hwIndex < data.HWAnimationDataList.Count) { HardwareAnimationData animData = data.HWAnimationDataList[hwIndex]; data.vertexBufferBinding.SetBinding(animData.TargetVertexElement.Source, pose.GetHardwareVertexBuffer(data.vertexCount)); // save final influence in parametric animData.Parametric = influence; } } else { // Software Mesh.SoftwareVertexPoseBlend(influence, pose.VertexOffsetMap, data); } }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(HardwareAnimationData obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }