Ejemplo n.º 1
0
    public override Vector3 CalcVectorField(DynamicFieldModel model, int posIndex, Vector3 pos, out Color primaryColor)
    {
        Vector3 res = Vector3.zero;

        primaryColor = Color.white;
        foreach (var s in this.AllSpans)
        {
            if (s.LatestAlpha > 0.0f)
            {
                if (s.FieldCache == null)
                {
                    s.FieldCache = new Vector3[model.CellCount];
                    for (int c = 0; c < model.CellCount; c++)
                    {
                        var cPos   = model.FieldsCells.Array[c].Pos;
                        var cField = Vector3.zero;
                        for (int i = 1; i < s.Line.Points.Length; i++)
                        {
                            var fm  = s.Line.Points [i - 1];
                            var to  = s.Line.Points [i];
                            var fld = DynamicFieldModel.ChakraFieldAlongLineV4(cPos, fm, to, false);
                            cField += fld;
                        }
                        s.FieldCache [c] = cField;
                    }
                }
                primaryColor = ((s == this.SpanCrownToDanTien) ? Color.white : Color.green);
                res         += s.FieldCache [posIndex] * Mathf.Pow(s.LatestAlpha, 0.75f);
            }
        }
        return(res);
    }
Ejemplo n.º 2
0
    public override Vector3 CalcVectorField(DynamicFieldModel model, int posIndex, Vector3 pos, out Color primaryColor)
    {
        Vector3 res = Vector3.zero;

        primaryColor = Color.white;
        foreach (var ps in this.AllSpans)
        {
            if (ps.LatestOverallAlpha > 0.0f)
            {
                if (ps.FlowFieldCache != null)
                {
                    // ready to go
                }
                else
                {
                    ps.FlowFieldCache = new Vector3[model.CellCount];
                    for (int c = 0; c < model.CellCount; c++)
                    {
                        var cPos   = model.FieldsCells.Array [c].Pos;
                        var cField = Vector3.zero;
                        for (int i = 1; i < ps.Line.Points.Length; i++)
                        {
                            var fm  = ps.Line.Points [i - 1];
                            var to  = ps.Line.Points [i];
                            var fld = DynamicFieldModel.ChakraFieldAlongLineV4(cPos, fm, to, false);
                            cField += fld;
                        }
                        ps.FlowFieldCache [c] = cField;
                    }
                }
                res += ps.FlowFieldCache [posIndex] * ps.LatestOverallAlpha;
            }
        }
        return(res);
    }