예제 #1
0
        protected void MovePhysics()
        {
            if (Time.timeScale > 0 && !isSceneLoading)
            {
                for (int i = movingPlatforms.Count - 1; i >= 0; i--)
                {
                    RexPhysics physicsObject = movingPlatforms[i];
                    if (physicsObject != null && physicsObject.isEnabled)
                    {
                        physicsObject.ResetFlags();
                        physicsObject.StepPhysics();
                        physicsObject.transform.position = physicsObject.properties.position;
                        physicsObject.GetComponent <MovingPlatform>().moveDistance.x = physicsObject.properties.position.x - physicsObject.previousFrameProperties.position.x;
                        physicsObject.GetComponent <MovingPlatform>().moveDistance.y = physicsObject.properties.position.y - physicsObject.previousFrameProperties.position.y;
                    }
                }


                for (int i = physicsObjects.Count - 1; i >= 0; i--)
                {
                    RexPhysics physicsObject = physicsObjects[i];
                    if (physicsObject != null && physicsObject.isEnabled)
                    {
                        physicsObject.ResetFlags();

                        physicsObject.StepPhysics();
                        physicsObject.transform.position = physicsObject.properties.position;
                    }
                }
            }
        }
예제 #2
0
 public void UnregisterPhysicsObject(RexPhysics physicsObject)
 {
     if (physicsObject.isMovingPlatform)
     {
         movingPlatforms.Remove(physicsObject);
     }
     else
     {
         physicsObjects.Remove(physicsObject);
     }
 }
예제 #3
0
 public void RegisterPhysicsObject(RexPhysics physicsObject)
 {
     if (physicsObject.isMovingPlatform)
     {
         movingPlatforms.Add(physicsObject);
     }
     else
     {
         physicsObjects.Add(physicsObject);
     }
 }
예제 #4
0
        public void OnDestroy()
        {
            for (int i = physicsObjects.Count - 1; i >= 0; i--)
            {
                RexPhysics physicsObject = physicsObjects[i];
                Destroy(physicsObject);
            }

            for (int i = movingPlatforms.Count - 1; i >= 0; i--)
            {
                RexPhysics physicsObject = movingPlatforms[i];
                Destroy(physicsObject);
            }
        }
예제 #5
0
        void Awake()
        {
            if (!physicsObject)
            {
                physicsObject = GetComponent <RexPhysics>();
            }

            if (minMovePosition)
            {
                minMovePositionVector = new Vector2(minMovePosition.position.x, minMovePosition.position.y);
            }

            if (maxMovePosition)
            {
                maxMovePositionVector = new Vector2(maxMovePosition.position.x, maxMovePosition.position.y);
            }
        }
예제 #6
0
        private static void FillRexActorSlots()
        {
            GameObject selectedObject = Selection.activeGameObject;
            RexActor   actor          = null;

            if (selectedObject)
            {
                actor = selectedObject.GetComponent <RexActor>();
            }

            if (actor != null)
            {
                actor.slots.physicsObject  = actor.GetComponent <RexPhysics>();
                actor.slots.anim           = actor.GetComponent <Animator>();
                actor.slots.controller     = actor.GetComponentInChildren <RexController>();
                actor.slots.input          = actor.GetComponent <RexInput>();
                actor.slots.jitter         = actor.GetComponent <Jitter>();
                actor.slots.spriteHolder   = actor.transform.Find("SpriteHolder");
                actor.slots.spriteRenderer = actor.transform.Find("SpriteHolder").GetComponentInChildren <SpriteRenderer>();

                if (actor.damagedProperties.spritesToFlash == null)
                {
                    actor.damagedProperties.spritesToFlash = new List <SpriteRenderer>();
                }

                actor.damagedProperties.spritesToFlash.Add(actor.slots.spriteRenderer);
                actor.slots.collider = actor.GetComponent <BoxCollider2D>();

                RexPhysics physicsObject = actor.GetComponent <RexPhysics>();
                if (physicsObject != null)
                {
                    physicsObject.rexObject = actor;
                }

                RexController controller = actor.slots.controller;
                if (controller)
                {
                    controller.slots.actor = actor;
                    actor.waterProperties.landController = controller;
                }

                Energy[] energy = actor.GetComponentsInChildren <Energy>();
                if (energy.Length > 0)
                {
                    for (int i = 0; i < energy.Length; i++)
                    {
                        if (energy[i].gameObject.name == "HP")
                        {
                            actor.hp = energy[i];
                        }
                        else if (energy[i].gameObject.name == "MP")
                        {
                            actor.mp = energy[i];
                        }
                    }

                    if (actor.hp == null)
                    {
                        actor.hp = energy[0];
                    }
                }

                Attack[] attacks = actor.GetComponentsInChildren <Attack>();
                for (int i = 0; i < attacks.Length; i++)
                {
                    attacks[i].slots.actor = actor;
                }

                EditorUtility.DisplayDialog("Yeah!", "The RexActor was successfully slotted!", "Yay!");
            }
            else
            {
                EditorUtility.DisplayDialog("Ruh-roh!", "Please select a GameObject with a RexActor component first.", "Got it!");
            }
        }