示例#1
0
        public void Play(DMKController controller)
        {
            parentController = controller;
            currentFrame     = 0;

            if (bulletContainer != null && DMKSettings.instance.bulletStorePolicy == DMKBulletStorePolicy.ByController)
            {
                DestroyImmediate(bulletContainer);
            }
            bulletContainer = DMKSettings.instance.GetBulletContainer(this.parentController);
            foreach (DMKBulletShooterController shooterController in shooters)
            {
                shooterController.parentController = parentController;
                shooterController.bulletContainer  = bulletContainer;

                DMKSubBulletShooterController subController = shooterController.subController;
                while (subController != null)
                {
                    subController.internalController.parentController = parentController;
                    subController.internalController.bulletContainer  = bulletContainer;
                    subController = subController.internalController.subController;
                }
            }
            foreach (DMKShooterModifier modifier in modifiers)
            {
                modifier.DMKInit();
            }
            foreach (DMKTrigger trigger in triggers)
            {
                trigger.DMKInit();
            }

            this.UpdateShooters();
        }
示例#2
0
        public void CopyFrom(DMKDanmaku danmaku)
        {
            this.playMode         = danmaku.playMode;
            this.playInterval     = danmaku.playInterval;
            this.parentController = danmaku.parentController;

            this.shooters.Clear();
            foreach (DMKBulletShooterController shooterController in danmaku.shooters)
            {
                DMKBulletShooterController newController = (DMKBulletShooterController)ScriptableObject.CreateInstance <DMKBulletShooterController>();
                newController.CopyFrom(shooterController);
                this.shooters.Add(newController);
            }

            this.modifiers.Clear();
            foreach (DMKShooterModifier modifier in danmaku.modifiers)
            {
                DMKShooterModifier newModifier = (DMKShooterModifier)ScriptableObject.CreateInstance(modifier.GetType());
                newModifier.CopyFrom(modifier);
                this.modifiers.Add(newModifier);
            }

            this.triggers.Clear();
            foreach (DMKTrigger trigger in danmaku.triggers)
            {
                DMKTrigger newTrigger = (DMKTrigger)ScriptableObject.CreateInstance(trigger.GetType());
                newTrigger.CopyFrom(trigger);
                this.triggers.Add(newTrigger);
            }
        }
示例#3
0
 public GameObject GetBulletContainer(DMKController controller)
 {
     if (bulletStorePolicy == DMKBulletStorePolicy.Global)
     {
         if (_bulletContainer == null)
         {
             _bulletContainer = new GameObject();
             _bulletContainer.AddComponent <DMKBulletContainer>();
             _bulletContainer.name             = "BulletContainer";
             _bulletContainer.transform.parent = this.gameObject.transform;
         }
         return(_bulletContainer);
     }
     else if (bulletStorePolicy == DMKBulletStorePolicy.ByController)
     {
         GameObject bulletContainer = new GameObject();
         bulletContainer.AddComponent <DMKBulletContainer>();
         if (controller.gameObject != null)
         {
             bulletContainer.transform.parent = controller.gameObject.transform;
             bulletContainer.name             = "BulletContainer_" + controller.gameObject.name;
         }
         else
         {
             bulletContainer.transform.parent = this.gameObject.transform;
             bulletContainer.name             = "BulletContainer_" + controller.GetHashCode();
         }
         return(bulletContainer);
     }
     return(null);
 }
        public virtual void CopyFrom(DMKBulletShooterController controller)
        {
            this.interval         = controller.interval;
            this.emissionCooldown = controller.emissionCooldown;
            this.emissionLength   = controller.emissionLength;
            this.positionOffset   = controller.positionOffset;
            this.bulletContainer  = controller.bulletContainer;
            this.gameObject       = controller.gameObject;
            this.tag                   = controller.tag;
            this.startFrame            = controller.startFrame;
            this.overallLength         = controller.overallLength;
            this.simulationCount       = controller.simulationCount;
            this.followParentDirection = controller.followParentDirection;
            this.groupId               = controller.groupId;

            if (controller.shooter != null)
            {
                this.shooter = (DMKBulletShooter)ScriptableObject.CreateInstance(controller.shooter.GetType());
                this.shooter.parentController = this;
                this.shooter.CopyFrom(controller.shooter);
            }
            else
            {
                this.shooter = null;
            }

            this.bulletInfo.CopyFrom(controller.bulletInfo);
        }
示例#5
0
        public void OnSelectionChange()
        {
            try {
                GameObject selectedObject = Selection.activeObject as GameObject;
                if (selectedObject != null)
                {
                    selectedController = selectedObject.GetComponent <DMKController>();
                    if (selectedController != null)
                    {
                        if (selectedController.danmakus == null)
                        {
                            selectedController.danmakus = new List <DMKDanmaku>();
                        }
                    }
                }
                else
                {
                    selectedController = null;
                }

                selectedGraphObject = null;
                if (selectedController != null && selectedController.danmakus.Count > 0)
                {
                    selectedDanmaku = selectedController.danmakus[0];
                }

                this.Repaint();
            } catch {
                selectedController  = null;
                selectedGraphObject = null;
            }
        }
示例#6
0
        public void OnEnable()
        {
            EditorApplication.update += OnUpdateCallback;

            if (Selection.activeObject != null)
            {
                GameObject targetObj = Selection.activeObject as GameObject;
                selectedController = targetObj.GetComponent <DMKController>();
            }
        }