// =========================================================== // Constants // =========================================================== // =========================================================== // Methods // =========================================================== public static EnergyBar3DBase Create3DBar(EnergyBar3DBase.BarType type) { var panel = MadPanel.FirstOrNull(null); if (panel == null) { EditorUtility.DisplayDialog("Not Initialized", "You have to initialize EBT first", "OK"); MadInitTool.ShowWindow(); return null; } else { switch (type) { case EnergyBar3DBase.BarType.Filled: return FilledRenderer3DBuilder.Create(); case EnergyBar3DBase.BarType.Repeated: return RepeatRenderer3DBuilder.Create(); case EnergyBar3DBase.BarType.Sequence: return SequenceRenderer3DBuilder.Create(); case EnergyBar3DBase.BarType.Transform: return TransformRenderer3DBuilder.Create(); default: Debug.LogError("Unknown bar type: " + type); return null; } } }
private void ReconnectPanelIfNeeded(bool firstTime) { if (panel == null) { panel = MadPanel.FirstOrNull(transform); if (panel == null && firstTime) { Debug.LogError("You have to initialize scene first! Please execute Tools -> Energy Bar Toolkit -> Initialize"); } else { // check if now I am under the panel var topPanel = MadTransform.FindParent<MadPanel>(transform); bool nowUnderThePanel = topPanel == panel; // new scale should be applied if location of bar relative to panel has changed if (nowUnderThePanel && !underThePanel) { // now is under the panel, but wasn't before transform.localScale /= panel.transform.lossyScale.x; } else if (!nowUnderThePanel && underThePanel) { // was under the panel before, now it isn't transform.localScale *= panel.transform.lossyScale.x; } underThePanel = nowUnderThePanel; } } }