private VFXExpression GetPositionFromIndex(VFXExpression indexExpr, IEnumerable <VFXNamedExpression> expressions) { if (shape == SequentialShape.Line) { var start = expressions.First(o => o.name == "Start").exp; var end = expressions.First(o => o.name == "End").exp; var count = expressions.First(o => o.name == "Count").exp; return(VFXOperatorUtility.SequentialLine(start, end, indexExpr, count)); } else if (shape == SequentialShape.Circle) { var center = expressions.First(o => o.name == "Center").exp; var normal = expressions.First(o => o.name == "Normal").exp; var up = expressions.First(o => o.name == "Up").exp; var radius = expressions.First(o => o.name == "Radius").exp; var count = expressions.First(o => o.name == "Count").exp; return(VFXOperatorUtility.SequentialCircle(center, radius, normal, up, indexExpr, count)); } else if (shape == SequentialShape.ThreeDimensional) { var origin = expressions.First(o => o.name == "Origin").exp; var axisX = expressions.First(o => o.name == "AxisX").exp; var axisY = expressions.First(o => o.name == "AxisY").exp; var axisZ = expressions.First(o => o.name == "AxisZ").exp; var countX = expressions.First(o => o.name == "CountX").exp; var countY = expressions.First(o => o.name == "CountY").exp; var countZ = expressions.First(o => o.name == "CountZ").exp; return(VFXOperatorUtility.Sequential3D(origin, axisX, axisY, axisZ, indexExpr, countX, countY, countZ)); } throw new NotImplementedException(); }
protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { var start = inputExpression[0]; var end = inputExpression[1]; var index = inputExpression[2]; var count = inputExpression[3]; return(new[] { VFXOperatorUtility.SequentialLine(start, end, index, count) }); }
private void GetPositionAndDirectionFromIndex(VFXExpression indexExpr, IEnumerable <VFXNamedExpression> expressions, out VFXExpression positionExpr, out VFXExpression directionExpr) { if (shape == SequentialShape.Line) { var start = expressions.First(o => o.name == "Start").exp; var end = expressions.First(o => o.name == "End").exp; var count = expressions.First(o => o.name == "Count").exp; positionExpr = VFXOperatorUtility.SequentialLine(start, end, indexExpr, count, mode); directionExpr = VFXOperatorUtility.SafeNormalize(end - start); } else if (shape == SequentialShape.Circle) { var center = expressions.First(o => o.name == "Center").exp; var normal = expressions.First(o => o.name == "Normal").exp; var up = expressions.First(o => o.name == "Up").exp; var radius = expressions.First(o => o.name == "Radius").exp; var count = expressions.First(o => o.name == "Count").exp; positionExpr = VFXOperatorUtility.SequentialCircle(center, radius, normal, up, indexExpr, count, mode); directionExpr = VFXOperatorUtility.SafeNormalize(positionExpr - center); } else if (shape == SequentialShape.ThreeDimensional) { var origin = expressions.First(o => o.name == "Origin").exp; var axisX = expressions.First(o => o.name == "AxisX").exp; var axisY = expressions.First(o => o.name == "AxisY").exp; var axisZ = expressions.First(o => o.name == "AxisZ").exp; var countX = expressions.First(o => o.name == "CountX").exp; var countY = expressions.First(o => o.name == "CountY").exp; var countZ = expressions.First(o => o.name == "CountZ").exp; positionExpr = VFXOperatorUtility.Sequential3D(origin, axisX, axisY, axisZ, indexExpr, countX, countY, countZ, mode); directionExpr = VFXOperatorUtility.SafeNormalize(positionExpr - origin); } else { throw new NotImplementedException(); } }