public void AddPattern(PatternInfo p) { //create new random colour for this pattern colours.Add(RandomColour()); SetPosition(p); points.Add(RaycastOnMap(CalculatePoints(p))); }
private void SetPosition(PatternInfo p) { if (map != null) { //place this transform into correct position, dictated by pattern transform.position = map.TransformDirection(p.relativePosition); //transform.rotation = p.rotation * transform.rotation; } }
//set values in creator to passed in patternInfo, used in Edit public void SetInfo(PatternInfo info) { transform.position = info.relativePosition; //transform.rotation = info.rotation; amountOfPoints = info.fillerAmount; radius = info.radius; angleOffset = info.angleOffset; spawnShape = info.shape; Configure(); }
//returns patternInfo based upon current values in creator public PatternInfo CreateInfo() { PatternInfo temp = new PatternInfo(); //set to relative position from map temp.relativePosition = map.InverseTransformDirection(transform.position); //temp.rotation = transform.rotation; temp.fillerAmount = amountOfPoints; temp.radius = radius; temp.angleOffset = angleOffset; temp.viewPercentage = percentage; temp.shape = currentShape; temp.towardsCenter = towardsCenter; return(temp); }
//takes in patterInfo and calls all relevant shape calls public static Vector3[] CreatePattern(PatternCreator.PatternInfo p) { switch (p.shape) { case SpawnShape.CIRCLE: return(Shapes.Circle(p.radius, p.angleOffset, p.circlePoints)); case SpawnShape.STAR: return(Shapes.Star(p.radius, p.radiusSecond, p.fillerAmount)); case SpawnShape.X: return(Shapes.Cross(p.radius, p.angleOffset, p.fillerAmount)); case SpawnShape.CheckMark: return(Shapes.CheckMark(p.radius, p.radiusSecond, p.angleOffset, p.fillerAmount)); default: return(Shapes.Simple(p.shape, p.radius, p.angleOffset, p.fillerAmount)); } }
private Vector3[] CalculatePoints(PatternInfo p) { Vector3 mapXZ = map.transform.position; mapXZ.y = transform.position.y; transform.rotation = Quaternion.FromToRotation(transform.forward, mapXZ - transform.position) * transform.rotation; transform.rotation = Quaternion.FromToRotation(transform.forward, map.position - transform.position) * transform.rotation; //store/update the rotation... currentInfo.rotation = transform.up; //calculate points for each pattern info List <Vector3> list = new List <Vector3>(PatternHelper.CreatePattern(p)); //setup rotation Vector3 spawnAxis = Quaternion.AngleAxis(p.angleOffset, map.position - transform.position) * transform.up; Quaternion rot = Quaternion.LookRotation(map.position - transform.position, spawnAxis); //apply rotation to points for (int i = 0; i < list.Count; i++) { list[i] = rot * list[i]; } //reset rotation of transform transform.rotation = Quaternion.identity; int numberToHide = Mathf.RoundToInt(list.Count * (1 - (p.viewPercentage * 0.01f))); if (numberToHide > 0) { for (int i = 0; i < numberToHide; i++) { list.RemoveAt(list.Count - 1); } } return(list.ToArray()); }
public void SetSelection(PatternInfo p, int index) { currentSelection = index; currentInfo = p; }
public void AddPatternInfo(PatternInfo p) { values = ArrayEX.Grow(values, values.Length + 1, p); }