/// <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;
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }