public static float CalculateExitTime(MetaInfoItem info)
    {
        int   frameRange = info.EndFrame - info.StartFrame;
        int   exitFrame  = info.ExitFrame - info.StartFrame;
        float exitTime   = (float)exitFrame / (float)frameRange;

        return(exitTime);
    }
    public static float CalculatePreviewTime(MetaInfoItem info)
    {
        float timeInPercent = 0f;

        if (info != null)
        {
            int frameRange   = info.EndFrame - info.StartFrame;
            int previewFrame = info.PreviewFrame - info.StartFrame;
            timeInPercent = (float)previewFrame / (float)frameRange;
        }

        return(timeInPercent);
    }
    public static float CalculateAnimationLength(MetaInfoItem info, int exitFrame)
    {
        float timeInSeconds = 0f;

        if (info != null)
        {
            int   frameRange = info.EndFrame - info.StartFrame;
            int   exitRange  = frameRange - exitFrame;
            float exitTime   = (float)exitRange / (float)frameRange;
            timeInSeconds = (frameRange / 30f) * exitTime;
        }

        return(timeInSeconds);
    }
    public static MetaInfoItem GetListenMeta(MetaInfoItem dialogueMeta)
    {
        try
        {
            MetaInfoItem meta = null;

            foreach (MetaInfoItem listenMeta in AnimationMetaDatabase.Instance.listenDatabase)
            {
                if (dialogueMeta.Attitude == listenMeta.Attitude)
                {
                    meta = listenMeta;
                    break;
                }
            }

            if (meta != null)
            {
                return(meta);
            }
            else
            {
                MetaInfoItem listenMeta = AnimationMetaDatabase.Instance.GetMeta("listen", "nonespecific", "StandingNormal");

                if (listenMeta != null)
                {
                    return(listenMeta);
                }
                else
                {
                    //CrashHelp.Report("AnimationUtilities, GetListenMeta", "Listen meta for: " + dialogueMeta.ID + " not found.");
                }
            }
        }
        catch (Exception e)
        {
            //CrashHelp.Report("DialogAnimationMetaDatabase", e.Message, e);
        }
        return(null);
    }
    public static float CalculateSilenceAnimationLength(MetaInfoItem info)
    {
        float timeInSeconds = info.SilenceFrames / 30f;

        return(timeInSeconds);
    }
    public static float CalculateTransitionTime(MetaInfoItem info, float animationLength)
    {
        float transitionTime = (float)info.BlendInFrames / 30f;

        return(transitionTime);
    }
Esempio n. 7
0
    //Allow user of this method to optionally pass in a stance for a more detailed lookup.
    public MetaInfoItem GetMeta(string type, string actionID, string stance)
    {
        try
        {
            if (this.databases.ContainsKey(type))
            {
                actionID = actionID.ToLower();
                string currentStance     = stance;
                List <MetaInfoItem> list = this.databases[type];
                MetaInfoItem        item = null;
                bool itemExists          = false;

                this.searchDepth += 1;

                for (int i = 0; i < list.Count; i++)
                {
                    MetaInfoItem currentItem = list[i];

                    if (currentItem.ID == actionID)
                    {
                        itemExists = true;

                        if (currentItem.Stance == stance)
                        {
                            item = currentItem;
                            break;
                        }
                    }
                }

                if (item == null && itemExists && this.searchDepth <= MaxSearchDepth)
                {
                    //If first iteration fails we use lookup based on stance.
                    if (searchDepth == 1)
                    {
                        if (currentStance.Contains("Sitting"))
                        {
                            item = GetMeta(type, actionID, "SittingNormal");
                        }

                        if (currentStance.Contains("Standing"))
                        {
                            item = GetMeta(type, actionID, "StandingNormal");
                        }
                    }
                    //Else we default to standing stance.
                    else
                    {
                        item = GetMeta(type, actionID, "StandingNormal");
                    }
                }

                this.searchDepth = 0;

                return(item);
            }
        }
        catch (Exception e)
        {
            //CrashHelp.Report("AnimationMetaDatabase", e.Message, e);
        }

        return(null);
    }