/** * 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 { /// /// Dynamic data. /// public sealed class CubismDynamicDrawableData { #region Factory Methods /// /// Creates buffer for dynamic data. /// /// Unmanaged model to create buffer for. /// Buffer. 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 /// /// Dirty flags. /// internal byte Flags { private get; set; } /// /// Current opacity. /// public float Opacity { get; internal set; } /// /// Current draw order. /// public int DrawOrder { get; internal set; } /// /// Current render order. /// public int RenderOrder { get; internal set; } /// /// Current vertex position. /// public Vector3[] VertexPositions { get; internal set; } /// /// True if currently visible. /// public bool IsVisible { get { return Flags.HasIsVisibleFlag(); } } /// /// True if did change. /// public bool IsVisibilityDirty { get { return Flags.HasVisibilityDidChangeFlag(); } } /// /// True if did change. /// public bool IsOpacityDirty { get { return Flags.HasOpacityDidChangeFlag(); } } /// /// True if did change. /// public bool IsDrawOrderDirty { get { return Flags.HasDrawOrderDidChangeFlag(); } } /// /// True if did change. /// public bool IsRenderOrderDirty { get { return Flags.HasRenderOrderDidChangeFlag(); } } /// /// True if did change. /// public bool AreVertexPositionsDirty { get { return Flags.HasVertexPositionsDidChangeFlag(); } } /// /// True if any data did change. /// public bool IsAnyDirty { get { return Flags != 0; } } } }