示例#1
0
        /// <summary>
        /// Return a DS_HazeContextVariant that has the linearly interpolated values, from top-to-bottom
        /// in the stack. If a variant is 'soloed', or there's only one, then that is returned as-is.
        /// </summary>
        public DS_HazeContextItem GetContextItemBlended(float time = -1)
        {
            DS_HazeContextItem blended = new DS_HazeContextItem();

            blended.CopyFrom(m_ContextItems[0]);

            // If there's only the default variant, return it directly.
            if (m_ContextItems.Count == 1)
            {
                return(blended);
            }

            // Check for a 'soloed' variant (editor only).
#if UNITY_EDITOR
            if (m_SoloItem > -1 && m_SoloItem < m_ContextItems.Count)
            {
                blended.CopyFrom(m_ContextItems[m_SoloItem]);
                return(blended);
            }
#endif
            // Created a blended variant.
            time = Mathf.Clamp01(time);
            float weight = 0;
            for (int cv = 1; cv < m_ContextItems.Count; cv++)
            {
                weight = m_ContextItems[cv].m_Weight.Evaluate(time);
                blended.Lerp(m_ContextItems[cv], weight);
            }

            return(blended);
        }
示例#2
0
        public void DuplicateContextItem(int index)
        {
            if (index < 0 || index >= this.m_ContextItems.Count)
            {
                return;
            }
            DS_HazeContextItem dsHazeContextItem = new DS_HazeContextItem();

            dsHazeContextItem.CopyFrom(this.m_ContextItems[index]);
            dsHazeContextItem.m_Name += "_Copy";
            this.m_ContextItems.Add(dsHazeContextItem);
        }
示例#3
0
 public void CopyFrom(DS_HazeContext other)
 {
     if (this.m_ContextItems.Count > 0)
     {
         this.m_ContextItems.Clear();
     }
     for (int index = 0; index < other.m_ContextItems.Count; ++index)
     {
         DS_HazeContextItem dsHazeContextItem = new DS_HazeContextItem();
         dsHazeContextItem.CopyFrom(other.m_ContextItems[index]);
         this.m_ContextItems.Add(dsHazeContextItem);
     }
 }
示例#4
0
        /// <summary>
        /// Create and add a duplicate of the passed DS_HazeContextVariant.
        /// </summary>
        /// <param name="index"> Index into context variants list of the one to duplicate. </param>
        public void DuplicateContextItem(int index)
        {
            if (index < 0 || index >= m_ContextItems.Count)
            {
                return;
            }

            DS_HazeContextItem dup = new DS_HazeContextItem();

            dup.CopyFrom(m_ContextItems[index]);
            dup.m_Name += "_Copy";
            m_ContextItems.Add(dup);
        }
示例#5
0
        /// <summary>
        /// Copy settings and time-of-day variants from another DS_HazeContext.
        /// </summary>
        /// <param name="other"> DS_HazeContext to copy from. </param>
        public void CopyFrom(DS_HazeContext other)
        {
            // Clear any existing variants first.
            if (m_ContextItems.Count > 0)
            {
                m_ContextItems.Clear();
            }

            for (int cv = 0; cv < other.m_ContextItems.Count; cv++)
            {
                DS_HazeContextItem ctxV = new DS_HazeContextItem();
                ctxV.CopyFrom(other.m_ContextItems[cv]);

                m_ContextItems.Add(ctxV);
            }
        }
示例#6
0
        public DS_HazeContextItem GetContextItemBlended(float time = -1f)
        {
            DS_HazeContextItem dsHazeContextItem = new DS_HazeContextItem();

            dsHazeContextItem.CopyFrom(this.m_ContextItems[0]);
            if (this.m_ContextItems.Count == 1)
            {
                return(dsHazeContextItem);
            }
            time = Mathf.Clamp01(time);
            for (int index = 1; index < this.m_ContextItems.Count; ++index)
            {
                float dt = this.m_ContextItems[index].m_Weight.Evaluate(time);
                dsHazeContextItem.Lerp(this.m_ContextItems[index], dt);
            }
            return(dsHazeContextItem);
        }