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(); }
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); } }
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); }
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; } }
public void OnEnable() { EditorApplication.update += OnUpdateCallback; if (Selection.activeObject != null) { GameObject targetObj = Selection.activeObject as GameObject; selectedController = targetObj.GetComponent <DMKController>(); } }