/// <summary> /// Initializes instance. /// </summary> /// <param name="moc">Moc unmanaged model was instantiated from.</param> public CubismTaskableModel(CubismMoc moc) { Moc = moc; // Instantiate unmanaged model. var unmanagedMoc = moc.AcquireUnmanagedMoc(); UnmanagedModel = CubismUnmanagedModel.FromMoc(unmanagedMoc); Lock = new object(); State = TaskState.Idle; DynamicDrawableData = CubismDynamicDrawableData.CreateData(UnmanagedModel); ShouldReleaseUnmanaged = false; }
/// <summary> /// Initializes instance. /// </summary> /// <param name="moc">Moc unmanaged model was instantiated from.</param> public CubismTaskableModel(CubismMoc moc) { Moc = moc; // Allocate unmanaged memory and instantiate unmanaged model. var unmanagedMoc = moc.AcquireUnmanagedMoc(); var size = csmGetSizeofModel(unmanagedMoc); var memory = CubismMemory.AllocateUnmanaged((int)size, csmAlignofModel); UnmanagedModel = csmInitializeModelInPlace(unmanagedMoc, memory, size); Lock = new object(); State = TaskState.Idle; DynamicDrawableData = CubismDynamicDrawableData.CreateData(UnmanagedModel); ShouldReleaseUnmanaged = false; }
/// <summary> /// Creates buffer for dynamic <see cref="CubismDrawable"/> data. /// </summary> /// <param name="unmanagedModel">Unmanaged model to create buffer for.</param> /// <returns>Buffer.</returns> internal static unsafe CubismDynamicDrawableData[] CreateData(IntPtr unmanagedModel) { var buffer = new CubismDynamicDrawableData[csmGetDrawableCount(unmanagedModel)]; // Initialize buffers. var vertexCounts = csmGetDrawableVertexCounts(unmanagedModel); for (var i = 0; i < buffer.Length; ++i) { buffer[i] = new CubismDynamicDrawableData { VertexPositions = new Vector3[vertexCounts[i]] }; } return(buffer); }
/// <summary> /// Creates buffer for dynamic <see cref="CubismDrawable"/> data. /// </summary> /// <param name="unmanagedModel">Unmanaged model to create buffer for.</param> /// <returns>Buffer.</returns> internal static CubismDynamicDrawableData[] CreateData(CubismUnmanagedModel unmanagedModel) { var unmanagedDrawables = unmanagedModel.Drawables; var buffer = new CubismDynamicDrawableData[unmanagedDrawables.Count]; // Initialize buffers. var vertexCounts = unmanagedDrawables.VertexCounts; for (var i = 0; i < buffer.Length; ++i) { buffer[i] = new CubismDynamicDrawableData { VertexPositions = new Vector3[vertexCounts[i]] }; } return(buffer); }