public static List <ElementGroup> GetElementGroups(ProBuilderMesh mesh, PivotPoint pivot, HandleOrientation orientation, bool collectCoincident) { var groups = new List <ElementGroup>(); var trs = mesh.transform.localToWorldMatrix; var selectMode = ProBuilderEditor.selectMode; switch (pivot) { case PivotPoint.IndividualOrigins: { if (selectMode.ContainsFlag(SelectMode.Vertex | SelectMode.TextureVertex)) { foreach (var list in GetVertexSelectionGroups(mesh, collectCoincident)) { var bounds = Math.GetBounds(mesh.positionsInternal, list); var rot = UnityEngine.ProBuilder.HandleUtility.GetVertexRotation(mesh, orientation, list); groups.Add(new ElementGroup(list, trs.MultiplyPoint3x4(bounds.center), rot)); } } else if (selectMode.ContainsFlag(SelectMode.Edge | SelectMode.TextureEdge)) { foreach (var list in GetEdgeSelectionGroups(mesh)) { var bounds = Math.GetBounds(mesh.positionsInternal, list); var rot = UnityEngine.ProBuilder.HandleUtility.GetEdgeRotation(mesh, orientation, list); List <int> indices; if (collectCoincident) { indices = new List <int>(); mesh.GetCoincidentVertices(list, indices); } else { indices = list.SelectMany(x => new int[] { x.a, x.b }).ToList(); } groups.Add(new ElementGroup(indices, trs.MultiplyPoint3x4(bounds.center), rot)); } } else if (selectMode.ContainsFlag(SelectMode.Face | SelectMode.TextureFace)) { foreach (var list in GetFaceSelectionGroups(mesh)) { var bounds = Math.GetBounds(mesh.positionsInternal, list); var rot = UnityEngine.ProBuilder.HandleUtility.GetFaceRotation(mesh, orientation, list); List <int> indices; if (collectCoincident) { indices = new List <int>(); mesh.GetCoincidentVertices(list, indices); } else { indices = list.SelectMany(x => x.distinctIndexesInternal).ToList(); } groups.Add(new ElementGroup(indices, trs.MultiplyPoint3x4(bounds.center), rot)); } } break; } case PivotPoint.ActiveElement: { var indices = collectCoincident ? mesh.GetCoincidentVertices(mesh.selectedIndexesInternal) : new List <int>(mesh.selectedIndexesInternal); var position = mesh.transform.position; var rotation = mesh.transform.rotation; if (selectMode.ContainsFlag(SelectMode.Face | SelectMode.TextureFace)) { var face = mesh.GetActiveFace(); if (face != null) { position = trs.MultiplyPoint3x4(Math.GetBounds(mesh.positionsInternal, face.distinctIndexesInternal).center); rotation = UnityEngine.ProBuilder.HandleUtility.GetFaceRotation(mesh, orientation, new Face[] { face }); } } else if (selectMode.ContainsFlag(SelectMode.Edge | SelectMode.TextureEdge)) { var edge = mesh.GetActiveEdge(); if (edge != Edge.Empty) { position = trs.MultiplyPoint3x4(Math.GetBounds(mesh.positionsInternal, new int [] { edge.a, edge.b }).center); rotation = UnityEngine.ProBuilder.HandleUtility.GetEdgeRotation(mesh, orientation, new Edge[] { edge }); } } else if (selectMode.ContainsFlag(SelectMode.Vertex | SelectMode.TextureVertex)) { var vertex = mesh.GetActiveVertex(); if (vertex > -1) { position = trs.MultiplyPoint3x4(mesh.positionsInternal[vertex]); rotation = UnityEngine.ProBuilder.HandleUtility.GetVertexRotation(mesh, orientation, new int[] { vertex }); } } groups.Add(new ElementGroup(indices, position, rotation)); break; } default: { var indices = collectCoincident ? mesh.GetCoincidentVertices(mesh.selectedIndexesInternal) : new List <int>(mesh.selectedIndexesInternal); var position = MeshSelection.bounds.center; var rotation = Quaternion.identity; if (selectMode.ContainsFlag(SelectMode.Face | SelectMode.TextureFace)) { var face = mesh.GetActiveFace(); if (face != null) { rotation = UnityEngine.ProBuilder.HandleUtility.GetFaceRotation(mesh, orientation, new Face[] { face }); } } else if (selectMode.ContainsFlag(SelectMode.Edge | SelectMode.TextureEdge)) { var edge = mesh.GetActiveEdge(); if (edge != Edge.Empty) { rotation = UnityEngine.ProBuilder.HandleUtility.GetEdgeRotation(mesh, orientation, new Edge[] { edge }); } } else if (selectMode.ContainsFlag(SelectMode.Vertex | SelectMode.TextureVertex)) { var vertex = mesh.GetActiveVertex(); if (vertex > -1) { rotation = UnityEngine.ProBuilder.HandleUtility.GetVertexRotation(mesh, orientation, new int[] { vertex }); } } groups.Add(new ElementGroup(indices, position, rotation)); break; } } return(groups); }
internal abstract MeshAndElementSelection GetElementSelection(ProBuilderMesh mesh, PivotPoint pivot, HandleOrientation orientation);
public MeshAndElementSelection(ProBuilderMesh mesh, PivotPoint pivot, HandleOrientation orientation, bool collectCoincidentIndices) { m_Mesh = mesh; m_ElementGroups = ElementGroup.GetElementGroups(mesh, pivot, orientation, collectCoincidentIndices); }
internal override MeshAndElementSelection GetElementSelection(ProBuilderMesh mesh, PivotPoint pivot) { return(new MeshAndPositions(mesh, pivot)); }
public static List <Candle> HA_M_Candles(Instrument instrument, out InstrumentDetails instrumentDetails) { instrumentDetails = new InstrumentDetails(); Candle haPreviounsCandle = null; Candle haCurrentCandle = null; List <Candle> haCandles = new List <Candle>(); int ema50Period = 50; int ema9Period = 9; List <Candle> candles = OANDA.Data.Prices.GetCandles(instrument.Name, ema50Period, "M"); instrumentDetails.Current = candles.LastOrDefault().Close; EMA ema50 = new EMA(ema50Period); EMA ema9 = new EMA(ema9Period); List <MyTrade.Core.Model.Candle> wcandles = MyTrade.Core.SqliteDataAccess.WeekyCandles.LoadCandles(instrument.Name); PivotPoints pps = new PivotPoints(); PivotPoint wpps = pps.Get(wcandles[wcandles.Count - 2], instrumentDetails.Current); instrumentDetails.W_PivotPoints = wpps; List <MyTrade.Core.Model.Candle> mcandles = MyTrade.Core.SqliteDataAccess.MonthlyCandles.LoadCandles(instrument.Name); PivotPoint mpps = pps.Get(mcandles[mcandles.Count - 2], instrumentDetails.Current); instrumentDetails.M_PivotPoints = mpps; instrumentDetails.TimeFrame = Core.Constants.TimeFrame.DAILY; for (int i = 0; i < candles.Count; i++) { instrumentDetails.Max = Math.Max(instrumentDetails.Max, candles[i].High); if (i == 0) { instrumentDetails.Min = candles[i].Low; instrumentDetails.Min = Math.Min(candles[i].Low, instrumentDetails.Min); haPreviounsCandle = HeikinAshi.GeneratePrevious(candles[i]); haCandles.Add(haPreviounsCandle); } else { haCurrentCandle = HeikinAshi.Generate(haPreviounsCandle, candles[i]); haCandles.Add(haCurrentCandle); haPreviounsCandle = haCurrentCandle; } if (i == (candles.Count - 1)) { if (instrumentDetails.EMAs == null) { instrumentDetails.EMAs = new List <Core.Model.Indicators.EMA>(); } ema50.AddDataPoint(candles[i].Close); ema9.AddDataPoint(candles[i].Close); instrumentDetails.EMAs.Add(new Core.Model.Indicators.EMA() { Period = 50, Value = ema50.Average }); instrumentDetails.EMAs.Add(new Core.Model.Indicators.EMA() { Period = 9, Value = ema9.Average }); } else { ema50.AddDataPoint(candles[i].Close); ema9.AddDataPoint(candles[i].Close); } } return(haCandles); }
internal override MeshAndElementSelection GetElementSelection(ProBuilderMesh mesh, PivotPoint pivot, HandleOrientation orientation) { return(new MeshAndTextures(mesh, pivot, orientation)); }
public override void PostInitialize() { bool oldShapeManagerSuppressAdd = FlatRedBall.Math.Geometry.ShapeManager.SuppressAddingOnVisibilityTrue; FlatRedBall.Math.Geometry.ShapeManager.SuppressAddingOnVisibilityTrue = true; base.PostInitialize(); if (SpriteInstance.Parent == null) { SpriteInstance.CopyAbsoluteToRelative(); SpriteInstance.AttachTo(this, false); } if (SpriteInstance.Parent == null) { base.SpriteInstance.X = 0f; } else { base.SpriteInstance.RelativeX = 0f; } if (SpriteInstance.Parent == null) { base.SpriteInstance.Y = 0f; } else { base.SpriteInstance.RelativeY = 0f; } base.SpriteInstance.Texture = AllParticles; base.SpriteInstance.LeftTexturePixel = 1802f; base.SpriteInstance.RightTexturePixel = 1908f; base.SpriteInstance.TopTexturePixel = 1741f; base.SpriteInstance.BottomTexturePixel = 1897f; base.SpriteInstance.TextureScale = 1f; base.SpriteInstance.AnimationChains = BaseStructureAnimationChainListFile; base.SpriteInstance.CurrentChainName = "FireTower"; if (mAxisAlignedRectangleInstance.Parent == null) { mAxisAlignedRectangleInstance.CopyAbsoluteToRelative(); mAxisAlignedRectangleInstance.AttachTo(this, false); } base.AxisAlignedRectangleInstance.Width = 64f; base.AxisAlignedRectangleInstance.Height = 64f; if (LightSpriteInstance.Parent == null) { LightSpriteInstance.CopyAbsoluteToRelative(); LightSpriteInstance.AttachTo(this, false); } if (LightSpriteInstance.Parent == null) { base.LightSpriteInstance.X = 19f; } else { base.LightSpriteInstance.RelativeX = 19f; } if (LightSpriteInstance.Parent == null) { base.LightSpriteInstance.Y = 70f; } else { base.LightSpriteInstance.RelativeY = 70f; } if (LightSpriteInstance.Parent == null) { base.LightSpriteInstance.Z = -1f; } else { base.LightSpriteInstance.RelativeZ = -1f; } base.LightSpriteInstance.Texture = AllParticles; base.LightSpriteInstance.LeftTexturePixel = 1792f; base.LightSpriteInstance.RightTexturePixel = 2048f; base.LightSpriteInstance.TopTexturePixel = 1792f; base.LightSpriteInstance.BottomTexturePixel = 2048f; base.LightSpriteInstance.TextureScale = 1f; base.LightSpriteInstance.Width = 1f; base.LightSpriteInstance.Height = 1f; base.LightSpriteInstance.AnimationChains = StructureGlowAnimationChainList; base.LightSpriteInstance.CurrentChainName = "FireGlow"; #if FRB_MDX LightSpriteInstance.ColorOperation = Microsoft.DirectX.Direct3D.TextureOperation.Modulate; #else base.LightSpriteInstance.ColorOperation = FlatRedBall.Graphics.ColorOperation.Modulate; #endif base.LightSpriteInstance.Blue = 0.5f; base.LightSpriteInstance.Alpha = 1f; if (AimSpriteInstance.Parent == null) { AimSpriteInstance.CopyAbsoluteToRelative(); AimSpriteInstance.AttachTo(this, false); } if (AimSpriteInstance.Parent == null) { base.AimSpriteInstance.X = 19f; } else { base.AimSpriteInstance.RelativeX = 19f; } if (AimSpriteInstance.Parent == null) { base.AimSpriteInstance.Y = 102f; } else { base.AimSpriteInstance.RelativeY = 102f; } if (AimSpriteInstance.Parent == null) { base.AimSpriteInstance.Z = 1f; } else { base.AimSpriteInstance.RelativeZ = 1f; } base.AimSpriteInstance.Texture = AllParticles; base.AimSpriteInstance.LeftTexturePixel = 1988f; base.AimSpriteInstance.RightTexturePixel = 2023f; base.AimSpriteInstance.TopTexturePixel = 1844f; base.AimSpriteInstance.BottomTexturePixel = 1925f; base.AimSpriteInstance.TextureScale = 1f; if (PivotPoint.Parent == null) { PivotPoint.CopyAbsoluteToRelative(); PivotPoint.AttachTo(this, false); } if (PivotPoint.Parent == null) { base.PivotPoint.X = 19f; } else { base.PivotPoint.RelativeX = 19f; } if (PivotPoint.Parent == null) { base.PivotPoint.Y = 70f; } else { base.PivotPoint.RelativeY = 70f; } if (LightAimSpriteInstance.Parent == null) { LightAimSpriteInstance.CopyAbsoluteToRelative(); LightAimSpriteInstance.AttachTo(this, false); } base.LightAimSpriteInstance.Texture = AllParticles; base.LightAimSpriteInstance.TextureScale = 1f; base.LightAimSpriteInstance.AnimationChains = StructureGlowAnimationChainList; base.LightAimSpriteInstance.CurrentChainName = "FireAimGlow"; base.LightAimSpriteInstance.Visible = true; FlatRedBall.Math.Geometry.ShapeManager.SuppressAddingOnVisibilityTrue = oldShapeManagerSuppressAdd; }
internal abstract MeshAndElementSelection GetElementSelection(ProBuilderMesh mesh, PivotPoint pivot);