public override List <Meshable> ExecuteShape(ShapeObject inSo) { inSo.PivotTurn(2); float w = inSo.Size[0]; List <Vector3> stairLocs = new List <Vector3>(); if (w <= 30) { stairLocs.Add(inSo.Position); Vector3 v = inSo.Vects[0]; v *= (w - stairW); stairLocs.Add(inSo.Position + v); } else if (w < 45) { stairLocs.Add(inSo.Position); Vector3 v = inSo.Vects[0]; v *= 30 - stairW; stairLocs.Add(inSo.Position + v); } else if (w < 60) { float d1 = w / 2 - 15; float d2 = w - d1; Vector3 v1 = inSo.Vects[0] * d1; Vector3 v2 = inSo.Vects[0] * d2; stairLocs.Add(inSo.Position + v1); stairLocs.Add(inSo.Position + v2); } else { stairLocs.Add(inSo.Position); Vector3 v1 = inSo.Vects[0] * (30 - stairW); Vector3 v2 = inSo.Vects[0] * (60 - stairW); stairLocs.Add(inSo.Position + v1); stairLocs.Add(inSo.Position + v2); } List <Meshable> outs = new List <Meshable>(); float coreH = inSo.Size[1] + 3; foreach (Vector3 v in stairLocs) { outs.Add(CreateBox(v, new Vector3(stairW, coreH, stairH), inSo.Vects)); } AssignNames(outs); inSo.meshable.name = inputs.names[0]; outs.Add(inSo.meshable); return(outs); }
// Use this for initialization void Start() { Vector3[] pts = initShape1(); Polygon pg = new Polygon(pts); ShapeObject pgo = ShapeObject.CreatePolygon(pts); Form f = pg.ExtrudeToForm(new Vector3(0, 40, 0)); ShapeObject rf = ShapeObject.CreateMeshable(f); rf.name = "rf"; //ShapeObject so = ShapeObject.CreateMeshable((Meshable)f.Clone()); ShapeObject so = rf.Clone(); //so.PivotMirror(0); so.PivotTurn(2); }