/// <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); }
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); }
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); } }
/// <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); }
/// <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); } }
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); }