// -- Sprオブジェクトの構築を行う
    public override ObjectIf Build()
    {
        PHBallJointIf jo = gameObject.GetComponent <PHBallJointBehaviour>().sprObject as PHBallJointIf;

        if (jo == null)
        {
            return(null);
        }
        PHBallJointNonLinearMotorDesc d     = new PHBallJointNonLinearMotorDesc();
        PHBallJointNonLinearMotorIf   motor = jo.CreateMotor(PHBallJointNonLinearMotorIf.GetIfInfoStatic(), d) as PHBallJointNonLinearMotorIf;

        if (motor == null)
        {
            return(null);
        }
        arraywrapper_double s_double, d_double;

        for (int i = 0; i < 3; i++)
        {
            switch (values[i].springMode)
            {
            case 0:
                s_double = new arraywrapper_double(2);
                Copy(values[i].springParam, s_double, 2);
                break;

            case 1:
                s_double = new arraywrapper_double(4);
                Copy(values[i].springParam, s_double, 4);
                break;

            default:
                values[i].springMode = 0;
                s_double             = new arraywrapper_double(4);
                Copy(values[i].springParam, s_double, 4);
                break;
            }
            switch (values[i].damperMode)
            {
            case 0:
                d_double = new arraywrapper_double(2);
                Copy(values[i].damperParam, d_double, 2);
                break;

            case 1:
                d_double = new arraywrapper_double(4);
                Copy(values[i].damperParam, d_double, 4);
                break;

            default:
                values[i].damperMode = 0;
                d_double             = new arraywrapper_double(4);
                Copy(values[i].damperParam, d_double, 4);
                break;
            }
            motor.SetFuncFromDatabaseN(i, values[i].springMode, values[i].damperMode, s_double, d_double);
            print(i + " " + values[i].springMode + " " + values[i].damperMode + " " + s_double + " " + d_double);
        }
        return(motor);
    }
Ejemplo n.º 2
0
    // -- Sprオブジェクトの構築を行う
    public override ObjectIf Build()
    {
        PHHingeJointIf jo = gameObject.GetComponent <PHHingeJointBehaviour>().sprObject as PHHingeJointIf;

        if (jo == null)
        {
            Debug.Log("No Joint"); return(null);
        }

        PH1DJointNonLinearMotorDesc d = (PH1DJointNonLinearMotorDesc)desc;
        PH1DJointNonLinearMotorIf   m = jo.CreateMotor(PH1DJointNonLinearMotorIf.GetIfInfoStatic(), d) as PH1DJointNonLinearMotorIf;

        if (m == null)
        {
            Debug.Log("Motor Null"); return(null);
        }

        arraywrapper_double s_double, d_double;

        switch (springMode)
        {
        case 0:
            s_double = new arraywrapper_double(2);
            Copy(springParam, s_double, 2);
            break;

        case 1:
            s_double = new arraywrapper_double(4);
            Copy(springParam, s_double, 4);
            break;

        default:
            springMode = 0;
            s_double   = new arraywrapper_double(4);
            Copy(springParam, s_double, 4);
            break;
        }
        switch (damperMode)
        {
        case 0:
            d_double = new arraywrapper_double(2);
            Copy(damperParam, d_double, 2);
            break;

        case 1:
            d_double = new arraywrapper_double(4);
            Copy(damperParam, d_double, 4);
            break;

        default:
            damperMode = 0;
            d_double   = new arraywrapper_double(4);
            Copy(damperParam, d_double, 4);
            break;
        }
        // m.SetFuncFromDatabase(springMode, damperMode, s_double, d_double);

        return(m);
    }
Ejemplo n.º 3
0
    // ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
    // その他のメソッド

    void Copy(double[] p, arraywrapper_double param, int n)
    {
        int l = System.Math.Min(n, p.Length);

        for (int i = 0; i < l; i++)
        {
            param[i] = p[i];
        }
    }
Ejemplo n.º 4
0
        public static arraywrapper_double ToArrayWrapperDouble(this double[] d)
        {
            int l = d.Length;
            arraywrapper_double wd = new arraywrapper_double(nelm: (uint)l);

            for (int i = 0; i < l; i++)
            {
                wd[i] = d[i];
            }
            return(wd);
        }