123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /**
- * Copyright(c) Live2D Inc. All rights reserved.
- *
- * Use of this source code is governed by the Live2D Open Software license
- * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
- */
- using Live2D.Cubism.Core.Unmanaged;
- using UnityEngine;
- namespace Live2D.Cubism.Core
- {
- /// <summary>
- /// Dynamic <see cref="CubismDrawable"/> data.
- /// </summary>
- public sealed class CubismDynamicDrawableData
- {
- #region Factory Methods
- /// <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;
- }
- #endregion
- /// <summary>
- /// Dirty flags.
- /// </summary>
- internal byte Flags { private get; set; }
- /// <summary>
- /// Current opacity.
- /// </summary>
- public float Opacity { get; internal set; }
- /// <summary>
- /// Current draw order.
- /// </summary>
- public int DrawOrder { get; internal set; }
- /// <summary>
- /// Current render order.
- /// </summary>
- public int RenderOrder { get; internal set; }
- /// <summary>
- /// Current vertex position.
- /// </summary>
- public Vector3[] VertexPositions { get; internal set; }
- /// <summary>
- /// True if currently visible.
- /// </summary>
- public bool IsVisible
- {
- get { return Flags.HasIsVisibleFlag(); }
- }
- /// <summary>
- /// True if <see cref="IsVisible"/> did change.
- /// </summary>
- public bool IsVisibilityDirty
- {
- get { return Flags.HasVisibilityDidChangeFlag(); }
- }
- /// <summary>
- /// True if <see cref="Opacity"/> did change.
- /// </summary>
- public bool IsOpacityDirty
- {
- get { return Flags.HasOpacityDidChangeFlag(); }
- }
- /// <summary>
- /// True if <see cref="DrawOrder"/> did change.
- /// </summary>
- public bool IsDrawOrderDirty
- {
- get { return Flags.HasDrawOrderDidChangeFlag(); }
- }
- /// <summary>
- /// True if <see cref="RenderOrder"/> did change.
- /// </summary>
- public bool IsRenderOrderDirty
- {
- get { return Flags.HasRenderOrderDidChangeFlag(); }
- }
- /// <summary>
- /// True if <see cref="VertexPositions"/> did change.
- /// </summary>
- public bool AreVertexPositionsDirty
- {
- get { return Flags.HasVertexPositionsDidChangeFlag(); }
- }
- /// <summary>
- /// True if any data did change.
- /// </summary>
- public bool IsAnyDirty
- {
- get { return Flags != 0; }
- }
- }
- }
|