Ejemplo n.º 1
0
        public override void initializeBays(string pName)
        {
            if (parametricObject.isInitialized)
            {
                return;
            }

            parametricObject.isInitialized = true;

            RadialRepeaterTool gener = repeaterToolU as RadialRepeaterTool;

            switch (pName)
            {
            case "Node Shape":
                if (repeaterToolU != null)
                {
                    gener.radius = 3.5f * nodeSrc_p.parametricObject.bounds.size.x;
                }
                break;

            case "Cell Shape":
                if (repeaterToolU != null)
                {
                    gener.radius = 2.5f * cellSrc_p.parametricObject.bounds.size.x;
                }
                break;
            }
        }
Ejemplo n.º 2
0
        public override void initializeBays(string pName)
        {
            //Debug.Log ("RADIAL REPEATER initializeBays");
            if (parametricObject.isInitialized)
            {
                return;
            }
            parametricObject.isInitialized = true;


            RadialRepeaterTool gener = repeaterToolU as RadialRepeaterTool;

            //Debug.Log (pName);

            switch (pName)
            {
            case "Node Mesh":
                gener.radius = 3.5f * nodeSrc_p.parametricObject.bounds.size.x;
                break;

            case "SpanU Mesh":
                gener.radius = 2.5f * spanUSrc_p.parametricObject.bounds.size.x;
                break;
            }

            if (repeaterToolU != null)
            {
                gener.P_Radius.initiateRipple_setFloatValueFromGUIChange(gener.radius);
            }
        }
Ejemplo n.º 3
0
        public override void connectionMadeWith(AXParameter to_p, AXParameter from_p)
        {
            if (from_p == null)            // || from_p.DependsOn == null)
            {
                return;
            }

            if (repeaterToolU == null)
            {
                return;
            }

            AXParameter this_p = (to_p.parametricObject == parametricObject) ? to_p   : from_p;
            AXParameter src_p  = (to_p.parametricObject == parametricObject) ? from_p : to_p;


            switch (this_p.Name)
            {
            case "Node Shape":
                nodeSrc_p = src_p;
                if (!parametricObject.isInitialized)
                {
                    initializeBays(this_p.Name);
                }
                break;

            case "Cell Shape":
                cellSrc_p = src_p;
                if (!parametricObject.isInitialized)
                {
                    initializeBays(this_p.Name);
                }
                break;

            case "Jitter Translation":
                jitterTranslationTool = src_p.parametricObject.generator as JitterTool;
                break;

            case "Jitter Rotation":
                jitterRotationTool = src_p.parametricObject.generator as JitterTool;
                break;

            case "Jitter Scaling":
                jitterScaleTool = src_p.parametricObject.generator as JitterTool;
                break;

            case "RepeaterU":
                repeaterToolU = src_p.parametricObject.generator as RadialRepeaterTool;
                break;
            }
        }
Ejemplo n.º 4
0
        public void setupRepeaters()
        {
            AXParameter input_pU = null;

            if (zAxis_p == null || !zAxis_p.boolval)
            {
                input_pU = P_RepeaterU;
            }

            if (input_pU != null)
            {
                repeaterToolU = (input_pU != null && input_pU.DependsOn != null) ? input_pU.DependsOn.parametricObject.generator as RadialRepeaterTool  : null;
            }
            else
            {
                repeaterToolU = null;
            }
        }
Ejemplo n.º 5
0
        public virtual Matrix4x4 localMatrixFromAddress(RepeaterItem ri, int i = 0, int j = 0)
        {
            if (repeaterToolU == null)
            {
                return(Matrix4x4.identity);
            }

            RadialRepeaterTool gener = repeaterToolU as RadialRepeaterTool;

            float perlinTranslation = 1;
            float perlinRot         = 1;
            float perlinScale       = 1;


            float actualSectorAngle = (repeaterToolU != null) ? repeaterToolU.actualBay : 0;


            float dang = (ri == RepeaterItem.Node) ? (i * actualSectorAngle) : (i * actualSectorAngle + actualSectorAngle / 2);

            // VALIDATION
            if (float.IsNaN(dang) || float.IsInfinity(dang))
            {
                return(Matrix4x4.identity);
            }

            Matrix4x4 radialDispl = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, dang), Vector3.one) * Matrix4x4.TRS(new Vector3(gener.radius, 0, 0), Quaternion.Euler(0, 0, -90), Vector3.one);

            if (jitterTranslationTool != null)
            {
                perlinTranslation = Mathf.PerlinNoise((i * actualSectorAngle) * jitterTranslationTool.perlinScale, 0);
            }

            if (jitterRotationTool != null)
            {
                perlinRot = Mathf.PerlinNoise((i * actualSectorAngle) * jitterRotationTool.perlinScale, 0);
            }

            if (jitterScaleTool != null)
            {
                perlinScale = Mathf.PerlinNoise((i * actualSectorAngle) * jitterScaleTool.perlinScale, 0);
            }



            // TRANSLATION  *********
            Vector3 translate = new Vector3(0, 0, 0);

            if (jitterTranslationTool != null)
            {
                translate += new Vector3(perlinTranslation * jitterTranslationTool.x - jitterTranslationTool.x / 2, perlinTranslation * jitterTranslationTool.y - jitterTranslationTool.y / 2, 0);
            }


            // ROTATION		*********
            Quaternion rotation = Quaternion.Euler(0, 0, 0);

            if (jitterRotationTool != null)
            {
                rotation = Quaternion.Euler((perlinRot * jitterRotationTool.x - jitterRotationTool.x / 2) * 1.5f, (perlinRot * jitterRotationTool.y - jitterRotationTool.y / 2), (perlinRot * jitterRotationTool.z - jitterRotationTool.z / 2)) * rotation;
            }



            // SCALE		**********
            jitterScale = Vector3.zero;

            if (jitterScaleTool != null)
            {
                jitterScale = new Vector3(perlinScale * jitterScaleTool.x - jitterScaleTool.x / 2, perlinScale * jitterScaleTool.y - jitterScaleTool.y / 2, perlinScale * jitterScaleTool.z - jitterScaleTool.z / 2);
            }

            // ******** USE A FUNCTION HERE TO GET FOR HANDLES AS WELL
            Matrix4x4 dm = Matrix4x4.TRS(translate, rotation, Vector3.one + jitterScale) * radialDispl * Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, i * progressiveRotation), Vector3.one);

            return(dm);
        }
Ejemplo n.º 6
0
        public override Matrix4x4 localMatrixFromAddress(RepeaterItem ri, int i = 0, int j = 0, int k = 0)
        {
            if (repeaterToolU == null)
            {
                return(Matrix4x4.identity);
            }

            RadialRepeaterTool gener = repeaterToolU as RadialRepeaterTool;



            float perlinTranslation = 1;
            float perlinRot         = 1;
            float perlinScale       = 1;

            float actualSectorAngle = (repeaterToolU != null) ? repeaterToolU.actualBay : 0;

            float dang = (ri == RepeaterItem.Node) ? (i * actualSectorAngle) : (i * actualSectorAngle + actualSectorAngle / 2);

            Matrix4x4 radialDispl = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, -dang, 0), Vector3.one) * Matrix4x4.TRS(new Vector3(gener.radius, 0, 0), Quaternion.Euler(0, -90, 0), Vector3.one);


            if (jitterTranslationTool != null)
            {
                perlinTranslation = Mathf.PerlinNoise((i * actualSectorAngle + jitterTranslationTool.offset) * jitterTranslationTool.perlinScale, 0);
            }

            if (jitterRotationTool != null)
            {
                perlinRot = Mathf.PerlinNoise((i * actualSectorAngle + jitterRotationTool.offset) * jitterRotationTool.perlinScale, 0);
            }

            if (jitterScaleTool != null)
            {
                perlinScale = Mathf.PerlinNoise((i * actualSectorAngle + jitterScaleTool.offset) * jitterScaleTool.perlinScale, 0);
            }


            // TRANSLATION  *********
            Vector3 translate = new Vector3(0, riser * i, 0);


            if (jitterTranslationTool != null)
            {
                translate += new Vector3(perlinTranslation * jitterTranslationTool.x - jitterTranslationTool.x / 2, perlinTranslation * jitterTranslationTool.y - jitterTranslationTool.y / 2, perlinTranslation * jitterTranslationTool.z - jitterTranslationTool.z / 2);
            }



            // ROTATION		*********
            Quaternion rotation = Quaternion.Euler(0, 0, 0);

            if (jitterRotationTool != null)
            {
                rotation = Quaternion.Euler((perlinRot * jitterRotationTool.x - jitterRotationTool.x / 2) * 1.5f, (perlinRot * jitterRotationTool.y - jitterRotationTool.y / 2), (perlinRot * jitterRotationTool.z - jitterRotationTool.z / 2)) * rotation;
            }



            // SCALE		**********
            jitterScale = Vector3.zero;
            if (jitterScaleTool != null)
            {
                jitterScale = new Vector3(perlinScale * jitterScaleTool.x - jitterScaleTool.x / 2, perlinScale * jitterScaleTool.y - jitterScaleTool.y / 2, perlinScale * jitterScaleTool.z - jitterScaleTool.z / 2);
            }


            // ******** USE A FUNCTION HERE TO GET FOR HANDLES AS WELL
            Matrix4x4 dm = Matrix4x4.TRS(translate, rotation, Vector3.one + jitterScale) * radialDispl * Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(i * progressiveRotationX, 90 + i * progressiveRotationY, i * progressiveRotationZ), Vector3.one);

            //Terrain terrain = Terrain.activeTerrain;
            //if (terrain != null)
            //	dm.m13 = translate.y + terrain.SampleHeight(parametricObject.model.gameObject.transform.TransformPoint(parametricObject.getLocalMatrix().MultiplyPoint(AXUtilities.GetPosition(dm))));


            return(dm);
        }