IEnumerator fast_move(AnimObject animObject, List <AnimObject> sub_animObjects)
    {
        GameManager.Instance.sub_managers.animManager.running_list++;
        if (animObject.UDLR == 2) //means left
        {
            animObject.objectBase.ObjectBody.GetComponent <ObjectBody>().body.transform.localScale = new Vector3(1, 1, 1);
        }
        else if (animObject.UDLR == 3) //means right
        {
            animObject.objectBase.ObjectBody.GetComponent <ObjectBody>().body.transform.localScale = new Vector3(-1, 1, 1);
        }
        animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.MOVE);

        Vector3 min_distance = (animObject.objectBase.node_now.position - animObject.objectBase.ObjectBody.transform.position) / 2;
        Vector3 distance     = animObject.objectBase.ObjectBody.transform.position;

        for (int i = 0; i < 5; i++)
        {
            animObject.objectBase.ObjectBody.transform.position += min_distance;
            animObject.objectBase.ObjectBody.GetComponent <SortingOrderSetter>().change_sorting_order(animObject.objectBase.ObjectBody.transform.position - distance);
            distance = animObject.objectBase.ObjectBody.transform.position;
            if (i % 5 == 0)
            {
            }
            yield return(new WaitForSeconds(0.02f));
        }
        animObject.objectBase.ObjectBody.transform.position = animObject.objectBase.node_now.position;
        animObject.objectBase.ObjectBody.GetComponent <SortingOrderSetter>().change_sorting_order(animObject.objectBase.node_now.position - distance);
        animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.IDLE);
        animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = null;
        GameManager.Instance.sub_managers.animManager.running_list--;
    }
Пример #2
0
    IEnumerator PlayAnyAnimation(RSRMonoBehaviour targetObj, AnimObject.AnimationEnum thisAnimEnum, AnimObject.AnimationEnum targetAnimEnum)
    {
        //Debug.Log("Trying to play Animation " + thisAnimEnum.ToString() + " for object " + gameObject.ToString());
        AnimObjectHolder aoh;

        if (_animController.TryGetAnimObjectHolder(thisAnimEnum, out aoh))
        {
            //Debug.Log(thisAnimEnum.ToString() + " found for " + gameObject.ToString());
            for (int i = 0; i < aoh.GetAnimObjects().Count; i++)
            {
                AnimObject ao = aoh.GetAnimObjects()[i];

                if (ao.concurrent)
                {
                    StartCoroutine(ao.Play(this, targetObj, targetAnimEnum));
                }
                else
                {
                    yield return(StartCoroutine(ao.Play(this, targetObj, targetAnimEnum)));
                }
            }
        }
        else
        {
            throw new System.NotImplementedException("PlayAnimation(" + targetObj.ToString() + ", " +
                                                     thisAnimEnum.ToString() + ") --> Could not find Animation " + thisAnimEnum.ToString() + " for " + gameObject.ToString());
        }
    }
Пример #3
0
    public static void ShowTargetGUI(AnimObject ao)
    {
        GUILayout.BeginVertical();

        ao.waitForAnimObjectToEnd = UnityEditor.EditorGUILayout.ToggleLeft("Wait For AnimObject to End", ao.waitForAnimObjectToEnd, GUILayout.MinWidth(400f));


        ao.delayForTargetAnim = UnityEditor.EditorGUILayout.FloatField("Delay", ao.delayForTargetAnim, GUILayout.MaxWidth(200f));
        if (ao.delayForTargetAnim < 0f)
        {
            ao.delayForTargetAnim = 0f;
        }                                                               //ensure you can't have a negative delay


        GUILayout.BeginHorizontal(); //"(optional) Target animation play "
        GUILayout.FlexibleSpace();
        GUILayout.Label("(Optional) Target Animation to Play");
        ao.optionalTargetAnimationOverride = (AnimObject.AnimationEnum)UnityEditor.EditorGUILayout.EnumPopup(
            "",
            ao.optionalTargetAnimationOverride,
            GUILayout.MaxWidth(250f));
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();
    }
Пример #4
0
    /* Draws the header for each foldout for each AnimObject */
    void DrawFoldoutHeader(AnimObject ao, AnimObjectHolder aoh)
    {
        EditorGUILayout.BeginHorizontal();
        ao.foldout = EditorGUILayout.Foldout(ao.foldout, ao.ToString());



        if (GUILayout.Button("UP", GUILayout.Width(50f)))
        {
            aoh.MoveAnimObjectUp(ao);
        }
        if (GUILayout.Button("DOWN", GUILayout.Width(50f)))
        {
            aoh.MoveAnimObjectDown(ao);
        }
        GUILayout.Space(10f);
        if (GUILayout.Button("X", GUILayout.Width(25f)))
        {
            aoh.RemoveAnimObject(ao);
        }

        GUILayout.Space(60f);

        EditorGUILayout.EndHorizontal();
    }
Пример #5
0
    /// <summary>
    /// Shows variables for AParticleSystem AnimObject
    /// </summary>
    void ShowParticleSystemVariables()
    {
        particleSystem = EditorGUILayout.ObjectField("Particle System:", particleSystem, typeof(ParticleSystem), false)
                         as ParticleSystem;

        particleLoop = EditorGUILayout.ToggleLeft("Loop", particleLoop);

        /* Create some space */
        GUILayout.Space(20f);

        /* Choose direction */
        GUILayout.BeginHorizontal();
        GUILayout.Label("Direction to play in:");
        particleDirection = (AnimObject.AnimationDirection)EditorGUILayout.EnumPopup(
            "",
            particleDirection,
            GUILayout.MaxWidth(250f));
        GUILayout.EndHorizontal();

        /* Show distance if location != Target or None */
        if (particleDirection != AnimObject.AnimationDirection.Target &&
            particleDirection != AnimObject.AnimationDirection.None)
        {
            particleDistance = EditorGUILayout.IntField("Distance (hexes):", particleDistance);
        }
        particleSpeed = EditorGUILayout.FloatField("Speed:", particleSpeed);
        particleSpeed = AnimObject.EnsureNoNegativeFloat(particleSpeed);

        ShowCommonVariables();
    }
Пример #6
0
    public static void DrawAParticleSystem(AParticleSystem aps)
    {
        aps.particleSystem = EditorGUILayout.ObjectField("Particle System:", aps.particleSystem, typeof(ParticleSystem), false)
                             as ParticleSystem;

        aps.loop = EditorGUILayout.ToggleLeft("Loop", aps.loop);

        /* Create some space */
        GUILayout.Space(20f);

        /* Choose direction */
        GUILayout.BeginHorizontal();
        GUILayout.Label("Direction to play in:");
        aps.direction = (AnimObject.AnimationDirection)EditorGUILayout.EnumPopup(
            "",
            aps.direction,
            GUILayout.MaxWidth(250f));
        GUILayout.EndHorizontal();

        /* Show distance if location != Target or None */
        if (aps.direction != AnimObject.AnimationDirection.Target &&
            aps.direction != AnimObject.AnimationDirection.None)
        {
            aps.distance = EditorGUILayout.IntField("Distance (hexes):", aps.distance);
        }
        aps.speed = EditorGUILayout.FloatField("Speed:", aps.speed);
        aps.speed = AnimObject.EnsureNoNegativeFloat(aps.speed);

        /* Create some space */
        GUILayout.Space(20f);


        /* Draws concurrency/target stuff */
        DrawBaseAnimObject(aps);
    }
Пример #7
0
    public static void DrawASpriteAnimation(ASpriteAnimation asa)
    {
        //asa.spriteAnimation = EditorGUILayout.ObjectField("Sprite Animation:", asa.spriteAnimation, typeof(AnimationClip), false)
        //    as AnimationClip;

        //    spriteAnimation = EditorGUILayout.PropertyField(spriteAnimation, "Sprite Animation:", false, GUILayout.MaxWidth(300f))
        //as Animation;

        asa.speed = EditorGUILayout.FloatField("Speed:", asa.speed);
        asa.speed = AnimObject.EnsureNoNegativeFloat(asa.speed);

        asa.loop = EditorGUILayout.ToggleLeft("Loop", asa.loop);

        if (asa.loop)
        {
            EditorGUILayout.LabelField("Times To Loop (0 for infinite)");
            asa.timesToLoop = EditorGUILayout.IntField(asa.timesToLoop, GUILayout.MaxWidth(100f));
            asa.timesToLoop = AnimObject.EnsureNoNegativeInt(asa.timesToLoop);
        }

        /* Create some space */
        GUILayout.Space(20f);

        DrawBaseAnimObject(asa);
    }
    IEnumerator hit_withoutblood(AnimObject animObject, List <AnimObject> sub_animObjects)
    {
        GameManager.Instance.sub_managers.animManager.running_list++;

        yield return(new WaitForSeconds(0.5f));

        if (animObject.UDLR == 2)
        {
            animObject.objectBase.ObjectBody.GetComponent <ObjectBody>().body.transform.localScale = new Vector3(1, 1, 1);
        }
        else if (animObject.UDLR == 3)
        {
            animObject.objectBase.ObjectBody.GetComponent <ObjectBody>().body.transform.localScale = new Vector3(-1, 1, 1);
        }

        GameManager.Instance.sub_managers.cameraManager.run_camera_anim(CameraAnimType.SHAKE_CAMERA, count: 15);
        for (int i = 0; i < Constant.HIGHTLIGHT_ANIMTIME; i++)
        {
            if (i == 0)
            {
                animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.HIT);
            }
            else if (i == Constant.HIGHTLIGHT_ANIMTIME - 30)
            {
                animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.IDLE);
            }
            yield return(new WaitForSeconds(0.02f));
        }
        animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = null;
        GameManager.Instance.sub_managers.animManager.running_list--;
    }
    IEnumerator cannot_attack(AnimObject animObject, List <AnimObject> sub_animObjectsm)
    {
        GameManager.Instance.sub_managers.animManager.running_list++;
        if (animObject.UDLR == 2) //means left
        {
            animObject.objectBase.ObjectBody.GetComponent <ObjectBody>().body.transform.localScale = new Vector3(1, 1, 1);
        }
        else if (animObject.UDLR == 3) //means right
        {
            animObject.objectBase.ObjectBody.GetComponent <ObjectBody>().body.transform.localScale = new Vector3(-1, 1, 1);
        }
        yield return(new WaitForSeconds(Random.Range(0, 0.2f)));

        animObject.objectBase.ObjectBody.GetComponent <Character>().cannot_attack();
        for (int i = 0; i < Constant.HIGHTLIGHT_ANIMTIME; i++)
        {
            if (i == 0)
            {
                animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.ATTACK);
            }
            else if (i == Constant.HIGHTLIGHT_ANIMTIME - 20)
            {
                animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.ATTACKEND);
            }
            yield return(new WaitForSeconds(0.02f));
        }
        animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = null;
        GameManager.Instance.sub_managers.animManager.running_list--;
    }
    public static void DeleteAsset(AnimObject ao)
    {
        string path = "Assets/Resources/AnimObject Assets" + "/New " + ao.ToString() + ao.GetInstanceID() + ".asset";

#if UNITY_EDITOR
        AssetDatabase.DeleteAsset(path);
#endif
    }
Пример #11
0
    IEnumerator death_withoutdelay(AnimObject animObject, List <AnimObject> sub_animObjects)
    {
        //GameManager.Instance.sub_managers.animManager.running_list++;
        animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.DEATH);
        //GameManager.Instance.sub_managers.animManager.running_list--;
        yield return(new WaitForSeconds(0f));

        animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = null;
    }
Пример #12
0
 /// <summary>
 /// Common variables are variables that are common to each AnimObject type.
 /// </summary>
 /// <param name="ao">The AnimObject we're modifying</param>
 void SetCommonVariables(AnimObject ao)
 {
     ao.waitForAnimObjectToEnd = commonWaitForAnimObjectToEnd;
     ao.target = commonTarget;
     ao.optionalTargetAnimationOverride = commonOptionalTargetAnimationOverride;
     ao.foldout            = commonFoldout;
     ao.description        = commonDescription;
     ao.delayForTargetAnim = commonDelayForTargetAnim;
     ao.concurrent         = commonConcurrent;
 }
Пример #13
0
    public List <AnimObject> AddToCollection(AnimObject animObject)
    {
        if (_animObjectCollection == null)
        {
            _animObjectCollection = new List <AnimObject>();
        }
        _animObjectCollection.Add(animObject);

        return(_animObjectCollection);
    }
Пример #14
0
    public void recall(AnimObject animObject)
    {
        Vector3 distance = animObject.objectBase.ObjectBody.transform.position;

        if (animObject.objectBase.objectBase_type != ObjectBaseType.DOOR)
        {
            animObject.objectBase.ObjectBody.transform.position = animObject.objectBase.node_now.position;
            animObject.objectBase.ObjectBody.GetComponent <SortingOrderSetter>().change_sorting_order(animObject.objectBase.ObjectBody.transform.position - distance);
        }
    }
Пример #15
0
    /* Moves the specified AnimObject down in the order of execution.
     * Since we're working with animations, order matters! */
    public void MoveAnimObjectDown(AnimObject ao)
    {
        for (int i = 0; i < _animObjectCollection.Count; i++)
        {
            if (ao.Equals(_animObjectCollection[i]) && i != _animObjectCollection.Count - 1)
            {
                AnimObject temp = _animObjectCollection[i + 1];
                _animObjectCollection[i + 1] = ao;
                _animObjectCollection[i]     = temp;

                break;
            }
        }
    }
Пример #16
0
    public void anim_add(ObjectBase _objectBase, AnimType _animType, int _UDLR, int _priority, ObjectBase _target = null)
    {
        AnimObject animObject;

        if (_animType == AnimType.MOVE && GameManager.Instance.skipmode)
        {
            animObject = new AnimObject(_objectBase, AnimType.LANDING, _UDLR, _priority, _target);
        }
        else
        {
            animObject = new AnimObject(_objectBase, _animType, _UDLR, _priority, _target);
        }

        master_animObjects.Add(animObject);
    }
Пример #17
0
    public static void DrawBaseAnimObject(AnimObject ao)
    {
        /* Draw the concurrency checkmark */
        ao.concurrent = EditorGUILayout.ToggleLeft("Concurrently Play AnimObject", ao.concurrent, GUILayout.ExpandWidth(true));

        /* Some space */
        GUILayout.Space(10f);

        /* Draw the Target Toggle + Target info, if it's toggled */
        ao.target = EditorGUILayout.ToggleLeft("Trigger Target Animation", ao.target, GUILayout.ExpandWidth(true));
        if (ao.target)
        {
            UnityEditor.EditorGUI.indentLevel++;
            ShowTargetGUI(ao);
            UnityEditor.EditorGUI.indentLevel--;
        }

        GUILayout.Space(10f);
    }
Пример #18
0
    /// <summary>
    /// Shows variables for ASpriteAnimation AnimObject
    /// </summary>
    void ShowSpriteAnimationVariables()
    {
        spriteAnimation = EditorGUILayout.ObjectField("Particle System:", spriteAnimation, typeof(AnimationClip), false)
                          as AnimationClip;

        spriteSpeed = EditorGUILayout.FloatField("Speed:", spriteSpeed);
        spriteSpeed = AnimObject.EnsureNoNegativeFloat(spriteSpeed);

        spriteLoop = EditorGUILayout.ToggleLeft("Loop", spriteLoop);

        if (spriteLoop)
        {
            spriteTimesToLoop = EditorGUILayout.IntField("Times To Loop (0 for infinite)", spriteTimesToLoop);
        }

        /* Create some space */
        GUILayout.Space(20f);

        ShowCommonVariables();
    }
Пример #19
0
    /// <summary>
    /// Shows variables for ATween AnimObject
    /// </summary>
    void ShowTweenVariables()
    {
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Move Direction:");
        tweenDirection = (AnimObject.AnimationDirection)EditorGUILayout.EnumPopup(
            "",
            tweenDirection,
            GUILayout.MaxWidth(250f));
        EditorGUILayout.EndHorizontal();

        /* Show distance if location != Target or None */
        if (tweenDirection != AnimObject.AnimationDirection.Target &&
            tweenDirection != AnimObject.AnimationDirection.None)
        {
            tweenDistance = EditorGUILayout.IntField("Distance (hexes):", tweenDistance);
        }
        tweenSpeed = EditorGUILayout.FloatField("Speed:", tweenSpeed);
        tweenSpeed = AnimObject.EnsureNoNegativeFloat(tweenSpeed);

        ShowCommonVariables();
    }
Пример #20
0
    IEnumerator itemeffect(AnimObject animObject)
    {
        GameManager.Instance.sub_managers.animManager.running_list++;

        for (int i = 0; i < animObject.objectBase.used_item_List.Count; i++)
        {
            int LR = 0;
            if (animObject.targetBase.node_now.position.x - animObject.objectBase.node_now.position.x > 0)
            {
                LR = 1;
            }
            else if (animObject.targetBase.node_now.position.x - animObject.objectBase.node_now.position.x == 0)
            {
                LR = Random.Range(0, 2);
            }
            GameManager.Instance.pools.effectPool.callEffect(animObject.objectBase.used_item_List[i], animObject.targetBase.node_now, LR);
            yield return(new WaitForSeconds(Random.Range(0, 0.2f)));
        }
        animObject.objectBase.used_item_List.Clear();
        GameManager.Instance.sub_managers.animManager.running_list--;
    }
Пример #21
0
    public static void DrawATween(ATween at)
    {
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Move Direction:");
        at.direction = (AnimObject.AnimationDirection)EditorGUILayout.EnumPopup(
            "",
            at.direction,
            GUILayout.MaxWidth(250f));
        EditorGUILayout.EndHorizontal();

        /* Show distance if location != Target or None */
        if (at.direction != AnimObject.AnimationDirection.Target &&
            at.direction != AnimObject.AnimationDirection.None)
        {
            at.distance = EditorGUILayout.IntField("Distance (hexes):", at.distance);
        }
        at.speed = EditorGUILayout.FloatField("Speed:", at.speed);
        at.speed = AnimObject.EnsureNoNegativeFloat(at.speed);

        DrawBaseAnimObject(at);
    }
Пример #22
0
    /* We can't use dynamic dispatch because these classes should
     * not directly access EditorGUILayout or GUILayout */
    public static void DrawAnimObject(AnimObject ao)
    {
        if (ao is ATween)
        {
            DrawATween((ATween)ao);
        }
        else if (ao is AParticleSystem)
        {
            DrawAParticleSystem((AParticleSystem)ao);
        }
        else if (ao is ASpriteAnimation)
        {
            DrawASpriteAnimation((ASpriteAnimation)ao);
        }

        /* When adding more AnimObjects, make sure to keep
         * this else case. Just add more else ifs */
        else
        {
            throw new System.NotImplementedException("Cannot Draw Inspector info for AnimObject " + ao.ToString() +
                                                     ": Not implemented");
        }
    }
Пример #23
0
        static void MakeAnimationNode(AnimObject Anim, FbxObject AnimatedObject, FbxObject AnimLayer, FbxObjectManager ObjectManager, FbxConnectionManager ConnectionManager)
        {
            //	make the animation nodes
            FbxObject AnimNodePosition, AnimNodeRotation, AnimNodeScale;

            MakeAnimationNode(Anim, AnimLayer, ObjectManager, ConnectionManager, out AnimNodePosition, out AnimNodeRotation, out AnimNodeScale);

            //	object connection
            if (AnimNodePosition != null)
            {
                ConnectionManager.Add(new FbxConnection("AnimCurveNode", "T", AnimNodePosition, "Model", AnimatedObject.TypeName, AnimatedObject, FbxRelationType.OP, "Lcl Translation"));
            }

            if (AnimNodeRotation != null)
            {
                ConnectionManager.Add(new FbxConnection("AnimCurveNode", "R", AnimNodeRotation, "Model", AnimatedObject.TypeName, AnimatedObject, FbxRelationType.OP, "Lcl Rotation"));
            }

            if (AnimNodeScale != null)
            {
                ConnectionManager.Add(new FbxConnection("AnimCurveNode", "S", AnimNodeScale, "Model", AnimatedObject.TypeName, AnimatedObject, FbxRelationType.OP, "Lcl Scaling"));
            }
        }
Пример #24
0
    protected void ShowTargetGUI()
    {
        GUILayout.BeginVertical();

        commonWaitForAnimObjectToEnd = UnityEditor.EditorGUILayout.ToggleLeft(
            "Wait For AnimObject to End", commonWaitForAnimObjectToEnd, GUILayout.MinWidth(400f));


        commonDelayForTargetAnim = UnityEditor.EditorGUILayout.FloatField("Delay", commonDelayForTargetAnim, GUILayout.MaxWidth(200f));
        commonDelayForTargetAnim = AnimObject.EnsureNoNegativeFloat(commonDelayForTargetAnim);//ensure you can't have a negative delay


        GUILayout.BeginHorizontal(); //"(optional) Target animation play "
        GUILayout.FlexibleSpace();
        GUILayout.Label("(Optional) Target Animation to Play");
        commonOptionalTargetAnimationOverride = (AnimObject.AnimationEnum)UnityEditor.EditorGUILayout.EnumPopup(
            "",
            commonOptionalTargetAnimationOverride,
            GUILayout.MaxWidth(250f));
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();
    }
Пример #25
0
 /*Removes the specified AnimObject from the collection of AnimObjects, if found */
 public void RemoveAnimObject(AnimObject ao)
 {
     _animObjectCollection.Remove(ao);
     ScriptableObjectUtility.DeleteAsset(ao);
 }
Пример #26
0
    /// <summary>
    /// Unity Editor GUI call, which is called every update frame.
    /// </summary>
    void OnGUI()
    {
        _animObjectType = (AnimObject.AnimObjectType)EditorGUILayout.EnumPopup("AnimObject Type:", _animObjectType, GUILayout.MaxWidth(300f));

        if (_animObjectType == AnimObject.AnimObjectType.AParticleSystem)
        {
            ShowParticleSystemVariables();
        }
        else if (_animObjectType == AnimObject.AnimObjectType.ASpriteAnimation)
        {
            ShowSpriteAnimationVariables();
        }
        else if (_animObjectType == AnimObject.AnimObjectType.ATween)
        {
            ShowTweenVariables();
        }

        GUILayout.Space(100f);

        /* Show OK/Close buttons */
        if (GUILayout.Button("Create New AnimObject"))
        {
            switch (_animObjectType)
            {
            case AnimObject.AnimObjectType.ATween:
                ATween newTween = AnimObject.CreateTweenAnimObject();
                newTween.speed     = tweenSpeed;
                newTween.direction = tweenDirection;
                newTween.distance  = tweenDistance;
                SetCommonVariables(newTween);

                _targetAOH.AddToCollection(newTween);
                break;

            case AnimObject.AnimObjectType.ASpriteAnimation:
                ASpriteAnimation newSpriteAnimation = AnimObject.CreateSpriteAnimationAnimObject(_targetAnimController.GetComponent <Animator>());
                newSpriteAnimation.loop  = spriteLoop;
                newSpriteAnimation.speed = spriteSpeed;
                //newSpriteAnimation.spriteAnimation = spriteAnimation;
                newSpriteAnimation.timesToLoop = spriteTimesToLoop;
                SetCommonVariables(newSpriteAnimation);

                _targetAOH.AddToCollection(newSpriteAnimation);
                break;

            case AnimObject.AnimObjectType.AParticleSystem:
                AParticleSystem newParticleSystem = AnimObject.CreateParticleSystemAnimObject();
                newParticleSystem.loop           = particleLoop;
                newParticleSystem.speed          = particleSpeed;
                newParticleSystem.particleSystem = particleSystem;
                newParticleSystem.direction      = particleDirection;
                newParticleSystem.distance       = particleDistance;
                SetCommonVariables(newParticleSystem);

                _targetAOH.AddToCollection(newParticleSystem);
                break;
            }

            this.Close();
        }
        if (GUILayout.Button("Cancel"))
        {
            this.Close();
        }
    }
Пример #27
0
        static void MakeAnimationNode(AnimObject Anim, FbxObject AnimLayer, FbxObjectManager ObjectManager, FbxConnectionManager ConnectionManager, out FbxObject AnimNodePosition, out FbxObject AnimNodeRotation, out FbxObject AnimNodeScale)
        {
            // add anim nodes
            var ao = Anim;

            float[] TimeData;
            ao.GetCurveTimes(out TimeData);

            bool MakeTranslation = true;
            bool MakeRotation    = false;
            bool MakeScale       = false;


            if (MakeTranslation)
            {
                var NodeT = ObjectManager.AddAnimationCurveNode(FbxAnimationCurveNodeType.Translation, ao.Frames[0].Position);
                AnimNodePosition = NodeT;
                //	get data
                float[] TXData;
                float[] TYData;
                float[] TZData;
                ao.GetPositionCurveData(out TXData, out TYData, out TZData);
                var CurveTX = ObjectManager.AddAnimationCurve(TXData, TimeData);
                var CurveTY = ObjectManager.AddAnimationCurve(TYData, TimeData);
                var CurveTZ = ObjectManager.AddAnimationCurve(TZData, TimeData);

                ConnectionManager.Add(new FbxConnection("AnimCurveNode", "T", NodeT, "AnimLayer", "BaseLayer", AnimLayer, FbxRelationType.OO));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveTX, "AnimCurveNode", "T", NodeT, FbxRelationType.OP, "d|X"));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveTY, "AnimCurveNode", "T", NodeT, FbxRelationType.OP, "d|Y"));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveTZ, "AnimCurveNode", "T", NodeT, FbxRelationType.OP, "d|Z"));
            }
            else
            {
                AnimNodePosition = null;
            }


            if (MakeRotation)
            {
                var NodeR = ObjectManager.AddAnimationCurveNode(FbxAnimationCurveNodeType.Rotation, ao.Frames[0].RotationEular);
                AnimNodeRotation = NodeR;
                float[] RXData;
                float[] RYData;
                float[] RZData;
                ao.GetRotationCurveData(out RXData, out RYData, out RZData);
                var CurveRX = ObjectManager.AddAnimationCurve(RXData, TimeData);
                var CurveRY = ObjectManager.AddAnimationCurve(RYData, TimeData);
                var CurveRZ = ObjectManager.AddAnimationCurve(RZData, TimeData);

                ConnectionManager.Add(new FbxConnection("AnimCurveNode", "R", NodeR, "AnimLayer", "BaseLayer", AnimLayer, FbxRelationType.OO));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveRX, "AnimCurveNode", "R", NodeR, FbxRelationType.OP, "d|X"));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveRY, "AnimCurveNode", "R", NodeR, FbxRelationType.OP, "d|Y"));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveRZ, "AnimCurveNode", "R", NodeR, FbxRelationType.OP, "d|Z"));
            }
            else
            {
                AnimNodeRotation = null;
            }


            if (MakeScale)
            {
                var NodeS = ObjectManager.AddAnimationCurveNode(FbxAnimationCurveNodeType.Scale, ao.Frames[0].Scale);
                AnimNodeScale = NodeS;
                float[] SXData;
                float[] SYData;
                float[] SZData;
                ao.GetScaleCurveData(out SXData, out SYData, out SZData);
                var CurveSX = ObjectManager.AddAnimationCurve(SXData, TimeData);
                var CurveSY = ObjectManager.AddAnimationCurve(SYData, TimeData);
                var CurveSZ = ObjectManager.AddAnimationCurve(SZData, TimeData);

                ConnectionManager.Add(new FbxConnection("AnimCurveNode", "S", NodeS, "AnimLayer", "BaseLayer", AnimLayer, FbxRelationType.OO));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveSX, "AnimCurveNode", "S", NodeS, FbxRelationType.OP, "d|X"));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveSY, "AnimCurveNode", "S", NodeS, FbxRelationType.OP, "d|Y"));
                ConnectionManager.Add(new FbxConnection("AnimCurve", "", CurveSZ, "AnimCurveNode", "S", NodeS, FbxRelationType.OP, "d|Z"));
            }
            else
            {
                AnimNodeScale = null;
            }
        }
Пример #28
0
        public static void Export(System.Action <string> WriteLine, Mesh mesh, Matrix4x4 transform, List <string> Comments = null)
        {
            //	temp objects
            var MeshAnim = new AnimObject();

            MeshAnim.AddFrame(new Vector3(0, 0, 0), Quaternion.identity, 0);
            MeshAnim.AddFrame(new Vector3(0, 1000, 0), Quaternion.Euler(0, 90, 0), 1);
            MeshAnim.AddFrame(new Vector3(0, 0, 0), Quaternion.Euler(0, 180, 0), 2);
            MeshAnim.AddFrame(new Vector3(0, 1000, 0), Quaternion.Euler(0, 270, 0), 3);
            MeshAnim.AddFrame(new Vector3(0, 0, 0), Quaternion.Euler(0, 359, 0), 4);

            var AnimStack = new AnimStack("Take001", MeshAnim.GetStartTime(), MeshAnim.GetEndTime());

            var Cam = new FbxCamera("Camera1");


            Pop.AllocIfNull(ref Comments);
            Comments.Add("Using WIP PopX.FbxAscii exporter from @soylentgraham");

            var Header = GetHeaderProperty();

            Header.AddComment(Comments);
            Export(WriteLine, Header);

            var ConnectionManager = new FbxConnectionManager();
            var ObjectManager     = new FbxObjectManager();

            //var MeshObject = CreateFbxObject(mesh, transform, ObjectManager);
            var CameraObject    = CreateFbxObject(Cam, transform, ObjectManager, ConnectionManager);
            var AnimLayerObject = CreateAnimLayerObject(ObjectManager);
            var AnimStackObject = CreateAnimStackObject(AnimStack, ObjectManager);


            MakeAnimationNode(MeshAnim, CameraObject, AnimLayerObject, ObjectManager, ConnectionManager);

            ConnectionManager.Add(new FbxConnection(AnimLayerObject.TypeName, AnimLayerObject.ObjectName, AnimLayerObject, AnimStackObject.TypeName, AnimStackObject.ObjectName, AnimStackObject, FbxRelationType.OO));



            var Definitions = GetDefinitionsProperty(ObjectManager);

            Export(WriteLine, Definitions);

            Export(WriteLine, ObjectManager);



            //	fake connections after we've exported ObjectManager
            var SceneMesh = new Mesh();

            SceneMesh.name = "Root";
            var SceneMeshObject = CreateFbxObject(SceneMesh, Matrix4x4.identity, ObjectManager, FbxObjectManager.RootNodeIdent);

            //var MeshMaterialObject = CreateFbxObject_Material("DummyMaterial", ObjectManager);

            //ConnectionManager.Add(new FbxConnection( MeshObject, SceneMeshObject, FbxRelationType.OO));
            ConnectionManager.Add(new FbxConnection(CameraObject, SceneMeshObject, FbxRelationType.OO));
            //ConnectionManager.Add(new FbxConnection( MeshMaterialObject.TypeName, MeshMaterialObject.ObjectName, MeshMaterialObject, MeshObject.TypeName, MeshObject.ObjectName, MeshObject, FbxRelationType.OO));


            Export(WriteLine, ConnectionManager);
        }
Пример #29
0
    // Update is called once per frame
    void FixedUpdate()
    {
        //if (!leader.activeSelf)
        //{
        //    foreach (GameObject follower in followers)
        //    {
        //        if (follower.activeSelf)
        //        {
        //            leader = follower;
        //            followers.RemoveAt(followers.IndexOf(follower));
        //        }
        //    }
        //}


        Animator currentAnim = leader.GetComponent <PlayerMovements>().anim;

        if (animList.Count < 1 || Vector3.Distance(leader.transform.position, animList[animList.Count - 1].position) > 0.5f)
        {
            animList.Add(new AnimObject(leader.transform.position, currentAnim.GetFloat("MoveX"), currentAnim.GetFloat("MoveY"), currentAnim.GetBool("PlayerMoving"),
                                        currentAnim.GetFloat("LastX"), currentAnim.GetFloat("LastY")));

            for (int i = 0; i < followers.Count; i++)
            {
                if (!followers[i].activeSelf)
                {
                    followers.RemoveAt(i);
                }
                if (animList.Count > spacingSize + (spacingSize * i))
                {
                    AnimObject currentAnimObj = animList[animList.Count - (spacingSize + spacingSize * i)];

                    followers[i].transform.position = currentAnimObj.position;
                    Animator followAnim = followers[i].GetComponent <Animator>();

                    followAnim.SetFloat("MoveX", currentAnimObj.MoveX);
                    followAnim.SetFloat("MoveY", currentAnimObj.MoveY);
                    followAnim.SetBool("PlayerMoving", currentAnimObj.PlayerMoving);
                    followAnim.SetFloat("LastX", currentAnimObj.LastX);
                    followAnim.SetFloat("LastY", currentAnimObj.LastY);
                }
            }

            if (animList.Count > spacingSize + (spacingSize * (followers.Count - 1)))
            {
                animList.RemoveAt(0);
            }


            sortingList = sortingList.OrderByDescending(o => o.transform.position.y).ToList();

            for (int i = 0; i < sortingList.Count; i++)
            {
                sortingList[i].GetComponent <SpriteRenderer>().sortingOrder = i;
            }
        }
        else
        {
            for (int i = 0; i < followers.Count; i++)
            {
                Animator followAnim = followers[i].GetComponent <Animator>();

                followAnim.SetFloat("MoveX", 0f);
                followAnim.SetFloat("MoveY", 0f);
                followAnim.SetBool("PlayerMoving", false);
            }
        }
    }
Пример #30
0
    //EffectPool effectPool = GameManager.Instance.pools.effectPool;

    public void run_coroutine(List <AnimObject> sub_animObjects)
    {
        while (sub_animObjects.Count > 0)
        {
            AnimObject animObject = sub_animObjects[0];
            if (animObject.objectBase.ObjectBody == null)
            {
                switch (animObject.objectBase.objectBase_type)
                {
                case ObjectBaseType.BLOCK:
                    BlockBase blockBase = ((BlockBase)animObject.objectBase);
                    GameManager.Instance.pools.objectBodyPool.get_body(blockBase.blockType, blockBase.node_now.position);
                    break;

                case ObjectBaseType.CHARACTER:
                    PlayerBase playerBase = ((PlayerBase)animObject.objectBase);
                    GameManager.Instance.pools.objectBodyPool.get_body(playerBase.monsterType, playerBase.node_now.position);
                    break;

                case ObjectBaseType.DOOR:
                    DoorBase doorBase = ((DoorBase)animObject.objectBase);
                    GameManager.Instance.pools.objectBodyPool.get_body(doorBase.doorType, doorBase.node_now.position, animObject.UDLR);
                    break;

                case ObjectBaseType.ITEM:
                    ItemBase itemBase = ((ItemBase)animObject.objectBase);
                    GameManager.Instance.pools.objectBodyPool.get_body(itemBase.itemType, itemBase.node_now.position);
                    break;

                case ObjectBaseType.MONSTER:
                    MonsterBase monsterBase = ((MonsterBase)animObject.objectBase);
                    GameManager.Instance.pools.objectBodyPool.get_body(monsterBase.monsterType, monsterBase.node_now.position);
                    break;

                case ObjectBaseType.TRAP:
                    TrapBase trapBase = ((TrapBase)animObject.objectBase);
                    GameManager.Instance.pools.objectBodyPool.get_body(trapBase.trapType, trapBase.node_now.position);
                    break;
                }
            }
            else
            {
                animObject.objectBase.ObjectBody.SetActive(true);
            }

            if (animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow != null)
            {
                StopCoroutine(animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow);
                GameManager.Instance.sub_managers.animManager.running_list--;
                animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.IDLE);
                recall(animObject);
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = null;
            }

            switch (animObject.animType)
            {
            case AnimType.ATTACK:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(attack(animObject, sub_animObjects));
                break;

            case AnimType.CANNOTATTACK:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(cannot_attack(animObject, sub_animObjects));
                break;

            case AnimType.HIT:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(hit(animObject, sub_animObjects));
                break;

            case AnimType.DEATH:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(death(animObject, sub_animObjects));
                break;

            case AnimType.DEATHWITHOUTDELAY:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(death_withoutdelay(animObject, sub_animObjects));
                break;

            case AnimType.MOVE:
                //animObject.objectBase.ObjectBody.GetComponentInChildren<Animator>().SetInteger("MoveType", (int)AnimType.LANDING);
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(move(animObject, sub_animObjects));

                break;

            case AnimType.FASTMOVE:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(fast_move(animObject, sub_animObjects));
                break;

            case AnimType.TRY:
                //StartCoroutine(try_something(animObject, sub_animObjects));
                break;

            case AnimType.LANDING:
                animObject.objectBase.ObjectBody.GetComponentInChildren <Animator>().SetInteger("MoveType", (int)AnimType.LANDING);
                recall(animObject);
                break;

            case AnimType.HIGHLIGHT:
                if (!highlightlist.Contains(animObject.objectBase.ObjectBody))
                {
                    highlightlist.Add(animObject.objectBase.ObjectBody);
                }
                break;

            case AnimType.HIT_WITHBLOOD:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(hit_withblood(animObject, sub_animObjects));
                break;

            case AnimType.HIT_WITHOUTBLOOD:
                animObject.objectBase.ObjectBody.GetComponent <CoroutineBox>().coroutineNow = StartCoroutine(hit_withoutblood(animObject, sub_animObjects));
                break;

            case AnimType.ITEMEFFECT:
                StartCoroutine(itemeffect(animObject));
                break;
            }
            sub_animObjects.RemoveAt(0);
        }
        if (!highlightisRunning && highlightlist.Count > 0)
        {
            StartCoroutine(highlight(sub_animObjects));
        }
    }