protected void Register() { //Register all elements foreach (var Element in ChartElements) { //Register parent (this class) with children who need it Element.RegisterParent(this); //Get list of types to register var Types = Element.RequireRegistration; if (Types == null) { continue; } foreach (var SubElement in ChartElements) { //Skip self registration if (Element.Equals(SubElement)) { continue; } //Register if it is a required type foreach (var RegType in Types) { if (RegType == SubElement.GetType()) { Element.Register(SubElement); } } } } RequireRegister = false; }
public UIElementSelectAndValidate(ActUIElement Act, PlatformInfoBase Platform) { mAct = Act; mPlatform = Platform; InitializeComponent(); //TODO: Binding of all UI elements Value.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActUIElement.Fields.Value), true, false, UCValueExpression.eBrowserType.Folder); HandleElementType.BindControl(mAct, ActUIElement.Fields.HandleElementType, Platform.GetPlatformUIElementsType()); HandleLocateByComboBox.Init(mAct.GetOrCreateInputParam(ActUIElement.Fields.HandleElementLocateBy), Platform.GetPlatformUIElementLocatorsList(), false, null); HandleLocatorValue.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActUIElement.Fields.HandleElementLocatorValue), true, false, UCValueExpression.eBrowserType.Folder); SubElement.Init(mAct.GetOrCreateInputParam(ActUIElement.Fields.SubElementType), Platform.GetSubElementType(mAct.ElementType).ToList(), false, null); SubElementLocateBy.Init(mAct.GetOrCreateInputParam(ActUIElement.Fields.SubElementLocateBy), Platform.GetPlatformUIElementLocatorsList(), false, null); SubElementLocatorValue.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActUIElement.Fields.SubElementLocatorValue), true, false, UCValueExpression.eBrowserType.Folder); GingerCore.General.ActInputValueBinding(DefineHandleAction, CheckBox.IsCheckedProperty, mAct.GetOrCreateInputParam(ActUIElement.Fields.DefineHandleAction, "False")); }
void ElementOptions(ProFlareElement element,int count){ Rect r = EditorGUILayout.BeginVertical("box"); Rect r2 = r; r2.height = 20; if (GUI.Button(r2, GUIContent.none,dropDownButton)) element.ElementSetting = element.ElementSetting ? false : true; GUILayout.Label("Multi Element Options"); if(!element.ElementSetting){ EditorGUILayout.EndVertical(); return; } GUILayout.Space(5f); if(element.type == ProFlareElement.Type.Multi){ EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Sub Elements Count : "+element.subElements.Count); if(GUILayout.Button("+")){ SubElement sub = new SubElement(); sub.random = Random.Range(0f,1f); sub.random2 = Random.Range(0f,1f); sub.RandomScaleSeed = Random.Range(-1f,1f); sub.RandomColorSeedR = Random.Range(-1f,1f); sub.RandomColorSeedG = Random.Range(-1f,1f); sub.RandomColorSeedB = Random.Range(-1f,1f); sub.RandomColorSeedA = Random.Range(-1f,1f); element.subElements.Add(sub); for(int f = 0; f < element.flare.FlareBatches.Length; f++){ element.flare.FlareBatches[f].dirty = true; } } if(GUILayout.Button("-")){ //SubElement sub = new SubElement(); if(element.subElements.Count > 0){ element.subElements.Remove(element.subElements[element.subElements.Count-1]); for(int f = 0; f < element.flare.FlareBatches.Length; f++){ element.flare.FlareBatches[f].dirty = true; } } } if(GUILayout.Button("Update Random Seed")){ for(int i = 0; i < element.subElements.Count; i++){ Updated = true; element.subElements[i].random = Random.Range(0f,1f); element.subElements[i].random2 = Random.Range(0f,1f); element.subElements[i].RandomScaleSeed = Random.Range(-1f,1f); element.subElements[i].RandomColorSeedR = Random.Range(-1f,1f); element.subElements[i].RandomColorSeedG = Random.Range(-1f,1f); element.subElements[i].RandomColorSeedB = Random.Range(-1f,1f); element.subElements[i].RandomColorSeedA = Random.Range(-1f,1f); } } } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); }
void ElementEditor(ProFlareElement element,int count){ ProFlareElement.Type elementType; EditorGUILayout.BeginHorizontal(); { // if(GUILayout.Button(" ",thinButton,GUILayout.MaxWidth(35))){ } if(GUILayout.Button(" ",thinButton,GUILayout.MaxWidth(32))) element.Visible = element.Visible ? false : true; Rect rect2 = GUILayoutUtility.GetLastRect(); int extra = 0; #if UNITY_4_3 extra = 15; #endif Rect outerRect = new Rect(35+extra,rect2.yMin-4,32,32); Rect final = new Rect(0,0,1,1); if( visibility_On == null) { visibility_On = Resources.Load("visibility-On") as Texture2D; } if( visibility_Off == null) { visibility_Off = Resources.Load("visibility-Off") as Texture2D; } if(element.Visible) GUI.DrawTextureWithTexCoords(outerRect,visibility_On, final, true); else GUI.DrawTextureWithTexCoords(outerRect,visibility_Off, final, true); _flare._Atlas.UpdateElementNameList(); int id = EditorGUILayout.Popup(element.elementTextureID, _flare._Atlas.elementNameList,enumStyleButton,GUILayout.MaxWidth(200)); if(element.elementTextureID != id){ Debug.Log("Changing Sprite " + element.flareAtlas.elementsList[id].name); element.elementTextureID = id; element.SpriteName = element.flareAtlas.elementsList[id].name; for(int f = 0; f < element.flare.FlareBatches.Length; f++){ element.flare.FlareBatches[f].dirty = true; } } elementType = (ProFlareElement.Type)EditorGUILayout.EnumPopup(element.type,enumStyleButton,GUILayout.MaxWidth(100)); if(GUILayout.Button("EDIT",thinButton,GUILayout.MaxWidth(80))){ if(element.Editing) element.Editing = false; else{ element.ElementSetting = false; element.OffsetSetting = false; element.ColorSetting = false; element.ScaleSetting = false; element.RotationSetting = false; element.OverrideSetting = false; element.Editing = true; } } if(GUILayout.Button("CLONE",thinButton)){ element.Editing = false; _flare.Elements.Add(CloneElement(element)); //_flare._FlareBatch.dirty = true; for(int i = 0; i < _flare.FlareBatches.Length; i++){ _flare.FlareBatches[i].dirty = true; } } if(GUILayout.Button("REMOVE",thinButtonRed)){ for(int i = 0; i < _flare.FlareBatches.Length; i++){ _flare.FlareBatches[i].dirty = true; } // element.flare._FlareBatch.dirty = true; element.flare.Elements.Remove(element); return; } } EditorGUILayout.EndHorizontal(); //Preview Texture Renderer { int extra = 0; #if UNITY_4_3 extra = 15; #endif Rect rect2 = GUILayoutUtility.GetLastRect(); Rect outerRect = new Rect(10+extra,rect2.yMin+1,22,22); if(_flare._Atlas) if(_flare._Atlas.texture) if((element.elementTextureID < _flare._Atlas.elementsList.Count)) GUI.DrawTextureWithTexCoords(outerRect, _flare._Atlas.texture, _flare._Atlas.elementsList[element.elementTextureID].UV, false); } { if((element.colorTexture == null)||element.colorTextureDirty){ if(element.useColorRange) element.colorTexture = CreateGradientTex(element,element.SubElementColor_Start,element.SubElementColor_End); else element.colorTexture = CreateGradientTex(element,element.ElementTint,element.ElementTint); } int extra = 0; #if UNITY_4_3 extra = 15; #endif Rect rect2 = GUILayoutUtility.GetLastRect(); Rect outerRect = new Rect(3+extra,rect2.yMin+1,6,22); Rect UV = new Rect(0,0,1,1); GUI.DrawTextureWithTexCoords(outerRect, element.colorTexture, UV, false); } if(element.type != elementType){ element.type = elementType; switch(elementType){ case(ProFlareElement.Type.Single): break; case(ProFlareElement.Type.Multi): if(element.subElements.Count == 0) { for(int i = 0; i < 5; i++){ SubElement sub = new SubElement(); sub.random = Random.Range(0f,1f); sub.random2 = Random.Range(0f,1f); sub.RandomColorSeedR = Random.Range(-1f,1f); sub.RandomColorSeedG = Random.Range(-1f,1f); sub.RandomColorSeedB = Random.Range(-1f,1f); element.subElements.Add(sub); } element.useRangeOffset = true; element.Editing = true; } break; } for(int f = 0; f < element.flare.FlareBatches.Length; f++){ element.flare.FlareBatches[f].dirty = true; } } if(element.Editing ){ QuickEdit(element,count); if(element.type == ProFlareElement.Type.Multi) ElementOptions(element,count); OffsetOptions(element,count); ColorOptions(element,count); ScaleOptions(element,count); RotationOptions(element,count); OverrideOptions(element,count); } }
ProFlareElement CloneElement(ProFlareElement element){ ProFlareElement _element = new ProFlareElement(); _element.Editing = true; _element.Visible = element.Visible; _element.elementTextureID = element.elementTextureID; _element.SpriteName = element.SpriteName; _element.flare = element.flare; _element.flareAtlas = element.flareAtlas; _element.Brightness = element.Brightness; _element.Scale = element.Scale; _element.ScaleRandom = element.ScaleRandom; _element.ScaleFinal = element.ScaleFinal; _element.RandomColorAmount = element.RandomColorAmount; //Element OffSet Properties _element.position = element.position; _element.useRangeOffset = element.useRangeOffset; _element.SubElementPositionRange_Min = element.SubElementPositionRange_Min; _element.SubElementPositionRange_Max = element.SubElementPositionRange_Max; _element.SubElementAngleRange_Min = element.SubElementAngleRange_Min; _element.SubElementAngleRange_Max = element.SubElementAngleRange_Max; _element.OffsetPosition = element.OffsetPosition; _element.Anamorphic = element.Anamorphic; _element.OffsetPostion = element.OffsetPostion; _element.angle = element.angle; _element.FinalAngle = element.FinalAngle; _element.useRandomAngle = element.useRandomAngle; _element.useStarRotation = element.useStarRotation; _element.AngleRandom_Min = element.AngleRandom_Min; _element.AngleRandom_Max = element.AngleRandom_Max; _element.OrientToSource = element.OrientToSource; _element.rotateToFlare = element.rotateToFlare; _element.rotationSpeed = element.rotationSpeed; _element.rotationOverTime = element.rotationOverTime; _element.useColorRange = element.useColorRange; _element.ElementFinalColor = element.ElementFinalColor; _element.ElementTint = element.ElementTint; _element.SubElementColor_Start = element.SubElementColor_Start; _element.SubElementColor_End = element.SubElementColor_End; _element.useScaleCurve = element.useScaleCurve; _element.ScaleCurve = new AnimationCurve(element.ScaleCurve.keys); _element.OverrideDynamicEdgeBoost = element.OverrideDynamicEdgeBoost; _element.DynamicEdgeBoostOverride = element.DynamicEdgeBoostOverride; _element.OverrideDynamicCenterBoost = element.OverrideDynamicCenterBoost; _element.DynamicCenterBoostOverride = element.DynamicCenterBoostOverride; _element.OverrideDynamicEdgeBrightness = element.OverrideDynamicEdgeBrightness; _element.DynamicEdgeBrightnessOverride = element.DynamicEdgeBrightnessOverride; _element.OverrideDynamicCenterBrightness = element.OverrideDynamicCenterBrightness; _element.DynamicCenterBrightnessOverride = element.DynamicCenterBrightnessOverride; _element.size = element.size; for(int i = 0; i < element.subElements.Count; i++){ SubElement Sub = new SubElement(); Sub.color = element.subElements[i].color; Sub.position = element.subElements[i].position; Sub.offset = element.subElements[i].offset; Sub.angle = element.subElements[i].angle; Sub.scale = element.subElements[i].scale; Sub.random = element.subElements[i].random; Sub.random2= element.subElements[i].random2; Sub.RandomScaleSeed = element.subElements[i].RandomScaleSeed; Sub.RandomColorSeedR = element.subElements[i].RandomColorSeedR; Sub.RandomColorSeedG = element.subElements[i].RandomColorSeedG; Sub.RandomColorSeedB = element.subElements[i].RandomColorSeedB; Sub.RandomColorSeedA = element.subElements[i].RandomColorSeedA; _element.subElements.Add(Sub); } _element.type = element.type; return _element; }
public static void LoadFlareData(ProFlare flare, TextAsset asset) { string jsonString = asset.text; // Debug.Log ("LoadFlareData"); Hashtable decodedHash = jsonDecode(jsonString) as Hashtable; if (decodedHash == null) { Debug.LogWarning("Unable to parse Json file: " + asset.name); return; } Hashtable meta = (Hashtable)decodedHash["meta"]; flare.GlobalScale = float.Parse(meta["GlobalScale"].ToString()); flare.GlobalBrightness = float.Parse(meta["GlobalBrightness"].ToString()); flare.GlobalTintColor = FlareJson.decodeColor((Hashtable)meta["GlobalTintColor"]); flare.MultiplyScaleByTransformScale = FlareJson.decodeBool(meta["MultiplyScaleByTransformScale"].ToString()); //Distance Fall off flare.useMaxDistance = FlareJson.decodeBool(meta["useMaxDistance"].ToString()); flare.useDistanceScale = FlareJson.decodeBool(meta["useDistanceScale"].ToString()); flare.useDistanceFade = FlareJson.decodeBool(meta["useDistanceFade"].ToString()); flare.GlobalMaxDistance = float.Parse(meta["GlobalMaxDistance"].ToString()); //Angle Culling Properties flare.UseAngleLimit = FlareJson.decodeBool(meta["UseAngleLimit"].ToString()); flare.maxAngle = float.Parse(meta["maxAngle"].ToString()); flare.UseAngleScale = FlareJson.decodeBool(meta["UseAngleScale"].ToString()); flare.UseAngleBrightness = FlareJson.decodeBool(meta["UseAngleBrightness"].ToString()); flare.UseAngleCurve = FlareJson.decodeBool(meta["UseAngleCurve"].ToString()); flare.AngleCurve = FlareJson.decodeAnimCurve((Hashtable)meta ["AngleCurve"]); // public LayerMask mask = 1; flare.RaycastPhysics = FlareJson.decodeBool(meta["RaycastPhysics"].ToString()); flare.OffScreenFadeDist = float.Parse(meta["OffScreenFadeDist"].ToString()); flare.useDynamicEdgeBoost = FlareJson.decodeBool(meta["useDynamicEdgeBoost"].ToString()); flare.DynamicEdgeBoost = float.Parse(meta["DynamicEdgeBoost"].ToString()); flare.DynamicEdgeBrightness = float.Parse(meta["DynamicEdgeBrightness"].ToString()); flare.DynamicEdgeRange = float.Parse(meta["DynamicEdgeRange"].ToString()); flare.DynamicEdgeBias = float.Parse(meta["DynamicEdgeBias"].ToString()); flare.DynamicEdgeCurve = FlareJson.decodeAnimCurve((Hashtable)meta ["DynamicEdgeCurve"]); flare.useDynamicCenterBoost = FlareJson.decodeBool(meta["useDynamicCenterBoost"].ToString()); flare.DynamicCenterBoost = float.Parse(meta["DynamicCenterBoost"].ToString()); flare.DynamicCenterBrightness = float.Parse(meta["DynamicCenterBrightness"].ToString()); flare.DynamicCenterRange = float.Parse(meta["DynamicCenterRange"].ToString()); flare.DynamicCenterBias = float.Parse(meta["DynamicCenterBias"].ToString()); flare.neverCull = FlareJson.decodeBool(meta["neverCull"].ToString()); flare.Elements.Clear(); Hashtable elements = (Hashtable)meta["Elements"]; foreach (System.Collections.DictionaryEntry item in elements) { Hashtable element = (Hashtable)elements[item.Key]; ProFlareElement elementNew = new ProFlareElement(); elementNew.Editing = FlareJson.decodeBool(element["Editing"].ToString()); elementNew.Visible = FlareJson.decodeBool(element["Visible"].ToString()); elementNew.SpriteName = element["SpriteName"].ToString(); elementNew.flare = flare; elementNew.flareAtlas = flare._Atlas; elementNew.Brightness = float.Parse(element["Brightness"].ToString()); elementNew.Scale = float.Parse(element["Scale"].ToString()); elementNew.ScaleRandom = float.Parse(element["ScaleRandom"].ToString()); elementNew.ScaleFinal = float.Parse(element["ScaleFinal"].ToString()); elementNew.RandomColorAmount = FlareJson.decodeVector4((Hashtable)element["RandomColorAmount"]); // //Element OffSet Properties elementNew.position = float.Parse(element["position"].ToString()); elementNew.useRangeOffset = FlareJson.decodeBool(element["useRangeOffset"].ToString()); elementNew.SubElementPositionRange_Min = float.Parse(element["SubElementPositionRange_Min"].ToString()); elementNew.SubElementPositionRange_Max = float.Parse(element["SubElementPositionRange_Max"].ToString()); elementNew.SubElementAngleRange_Min = float.Parse(element["SubElementAngleRange_Min"].ToString()); elementNew.SubElementAngleRange_Max = float.Parse(element["SubElementAngleRange_Max"].ToString()); elementNew.OffsetPosition = FlareJson.decodeVector3((Hashtable)element["OffsetPosition"]); elementNew.Anamorphic = FlareJson.decodeVector3((Hashtable)element["Anamorphic"]); elementNew.OffsetPostion = FlareJson.decodeVector3((Hashtable)element["OffsetPostion"]); // //Element Rotation Properties elementNew.angle = float.Parse(element["angle"].ToString()); elementNew.useRandomAngle = FlareJson.decodeBool(element["useRandomAngle"].ToString()); elementNew.useStarRotation = FlareJson.decodeBool(element["useStarRotation"].ToString()); elementNew.AngleRandom_Min = float.Parse(element["AngleRandom_Min"].ToString()); elementNew.AngleRandom_Max = float.Parse(element["AngleRandom_Max"].ToString()); elementNew.OrientToSource = FlareJson.decodeBool(element["OrientToSource"].ToString()); elementNew.rotateToFlare = FlareJson.decodeBool(element["rotateToFlare"].ToString()); elementNew.rotationSpeed = float.Parse(element["rotationSpeed"].ToString()); elementNew.rotationOverTime = float.Parse(element["rotationOverTime"].ToString()); // //Colour Properties, elementNew.useColorRange = FlareJson.decodeBool(element["useColorRange"].ToString()); elementNew.OffsetPosition = FlareJson.decodeVector3((Hashtable)element["OffsetPosition"]); elementNew.ElementTint = FlareJson.decodeColor((Hashtable)element["ElementTint"]); elementNew.SubElementColor_Start = FlareJson.decodeColor((Hashtable)element["SubElementColor_Start"]); elementNew.SubElementColor_End = FlareJson.decodeColor((Hashtable)element["SubElementColor_End"]); // //Scale Curve elementNew.useScaleCurve = FlareJson.decodeBool(element["useScaleCurve"].ToString()); elementNew.ScaleCurve = FlareJson.decodeAnimCurve((Hashtable)element ["ScaleCurve"]); // //Override Properties elementNew.OverrideDynamicEdgeBoost = FlareJson.decodeBool(element["OverrideDynamicEdgeBoost"].ToString()); elementNew.DynamicEdgeBoostOverride = float.Parse(element["DynamicEdgeBoostOverride"].ToString()); elementNew.OverrideDynamicCenterBoost = FlareJson.decodeBool(element["OverrideDynamicCenterBoost"].ToString()); elementNew.DynamicCenterBoostOverride = float.Parse(element["DynamicCenterBoostOverride"].ToString()); elementNew.OverrideDynamicEdgeBrightness = FlareJson.decodeBool(element["OverrideDynamicEdgeBrightness"].ToString()); elementNew.DynamicEdgeBrightnessOverride = float.Parse(element["DynamicEdgeBrightnessOverride"].ToString()); elementNew.OverrideDynamicCenterBrightness = FlareJson.decodeBool(element["OverrideDynamicCenterBrightness"].ToString()); elementNew.DynamicCenterBrightnessOverride = float.Parse(element["DynamicCenterBrightnessOverride"].ToString()); elementNew.type = (ProFlareElement.Type)(int.Parse(element["type"].ToString())); elementNew.size = FlareJson.decodeVector2((Hashtable)element["size"]); Hashtable subElements = (Hashtable)element["subElements"]; if (subElements != null) { foreach (System.Collections.DictionaryEntry subItem in subElements) { Hashtable subElement = (Hashtable)subElements[subItem.Key]; SubElement subElementNew = new SubElement(); subElementNew.color = FlareJson.decodeColor((Hashtable)subElement["color"]); subElementNew.position = float.Parse(subElement["position"].ToString()); subElementNew.offset = FlareJson.decodeVector3((Hashtable)subElement["offset"]); subElementNew.angle = float.Parse(subElement["angle"].ToString()); subElementNew.scale = float.Parse(subElement["scale"].ToString()); subElementNew.random = float.Parse(subElement["random"].ToString()); subElementNew.random2 = float.Parse(subElement["random2"].ToString()); subElementNew.RandomScaleSeed = float.Parse(subElement["RandomScaleSeed"].ToString()); subElementNew.RandomColorSeedR = float.Parse(subElement["RandomColorSeedR"].ToString()); subElementNew.RandomColorSeedG = float.Parse(subElement["RandomColorSeedG"].ToString()); subElementNew.RandomColorSeedB = float.Parse(subElement["RandomColorSeedB"].ToString()); subElementNew.RandomColorSeedA = float.Parse(subElement["RandomColorSeedA"].ToString()); elementNew.subElements.Add(subElementNew); } } bool Found = false; for (int i2 = 0; i2 < flare._Atlas.elementsList.Count; i2++) { if (elementNew.SpriteName == flare._Atlas.elementsList[i2].name) { Found = true; elementNew.elementTextureID = i2; } } if (Found) { flare.Elements.Add(elementNew); } else { Debug.LogWarning("ProFlares - Flare Element Missing From Atlas Not Adding - " + elementNew.SpriteName); } } foreach (ProFlareBatch batch in flare.FlareBatches) { batch.dirty = true; } }