示例#1
0
        // Use this for initialization
        void Start()
        {
            GameObject g = clawGoal;

            craneTarget = g.transform;

            ik        = GetComponent <TelescopeIK>();
            ik.target = craneTarget;
            segment   = GetComponent <TelescopeSegment>();

            craneTarget.position = calibrationPos.position;

            currentTarget = calibrationPos;
            currentMode   = CraneMode.Holding;
            segment.ExtendImmediate(0);

            segment.LastShell.AlwaysExtend = true;
            segment.LastShell.SetTransform();

            Vector3 clawPos     = segment.LastShell.EndPointWS;
            Vector3 clawForward = segment.LastShell.EndTangentWS;

            claw.transform.position = clawPos + clawForward * 0.1f;
            claw.transform.forward  = -clawForward;

            claw.transform.parent = segment.LastShell.transform;
        }
        // Update is called once per frame
        void LateUpdate()
        {
            if (Input.GetKeyDown("i"))
            {
                meshRenderer.enabled = true;
                segment = FindObjectOfType <TelescopeSegment>();
                if (segment)
                {
                    TelescopeShell shell = segment.LastShell;
                    transform.parent = shell.transform;
                    segment.MinExt   = 0.35f;

                    segment.ExtendImmediate(0);
                }
            }

            if (Input.GetKeyDown("2"))
            {
                SplineCanvas c = FindObjectOfType <SplineCanvas>();
                c.ReloadFromFile("rescue.canvas");
            }

            if (Input.GetKeyDown("1"))
            {
                animator.SetTrigger("toggle-close");
                if (!rescued)
                {
                    rescued = true;
                    teddyBear.transform.parent = transform;
                }
                else
                {
                    teddyBear.transform.parent = null;
                    teddyBear.activate         = true;
                    CameraControl cc = Camera.main.GetComponent <CameraControl>();
                    cc.FreeMove();
                }
            }
        }
示例#3
0
        void OnEnable()
        {
            TelescopeSegment ts = (TelescopeSegment)target;

            if (foldouts == null)
            {
                foldouts = new List <bool>();
            }

            if (ts.parameters == null)
            {
                ts.parameters = new List <TelescopeParameters>();

                while (ts.parameters.Count > ts.initNumShells)
                {
                    ts.parameters.RemoveAt(ts.parameters.Count - 1);
                    foldouts.RemoveAt(ts.parameters.Count - 1);
                }
                while (ts.parameters.Count < ts.initNumShells)
                {
                    if (ts.parameters.Count == 0)
                    {
                        ts.parameters.Add(new TelescopeParameters(1, 0.5f, ts.wallThickness, 0, 0, 0));
                    }
                    else
                    {
                        ts.parameters.Add(new TelescopeParameters(0, 0, ts.wallThickness, 0, 0, 0));
                    }
                    foldouts.Add(false);
                }
            }

            for (int i = 0; i < ts.parameters.Count; i++)
            {
                foldouts.Add(true);
            }
        }
示例#4
0
        public override void OnInspectorGUI()
        {
            TelescopeSegment ts = (TelescopeSegment)target;

            ts.material       = (Material)EditorGUILayout.ObjectField("Material", ts.material, typeof(Material), false);
            ts.fountainPrefab = (GameObject)EditorGUILayout.ObjectField("Fountain Prefab", ts.fountainPrefab, typeof(GameObject), false);

            ts.rootSegment    = EditorGUILayout.Toggle("Root Segment", ts.rootSegment);
            ts.ReversedOption = EditorGUILayout.Toggle("Reversed", ts.ReversedOption);

            ts.parent = (TelescopeElement)EditorGUILayout.ObjectField("Parent telescope", ts.parent, typeof(TelescopeElement), true);
            ts.parentElementNumber = EditorGUILayout.IntField("Parent Element Number", ts.parentElementNumber);
            ts.offsetFromParent    = EditorGUILayout.Vector3Field("Offset From Parent", ts.offsetFromParent);

            EditorGUILayout.Space();

            // Parameters for the entire telescope
            ts.initNumShells    = EditorGUILayout.IntField("Number of Shells", ts.initNumShells);
            ts.initialDirection = EditorGUILayout.Vector3Field("Initial Direction", ts.initialDirection);
            ts.initialUp        = EditorGUILayout.Vector3Field("Initial Up", ts.initialUp);

            // Keep parameter list synced with shell count
            while (ts.parameters.Count > ts.initNumShells)
            {
                ts.parameters.RemoveAt(ts.parameters.Count - 1);
                foldouts.RemoveAt(ts.parameters.Count - 1);
            }
            while (ts.parameters.Count < ts.initNumShells)
            {
                if (ts.parameters.Count == 0)
                {
                    ts.parameters.Add(new TelescopeParameters(1, 0.5f, ts.wallThickness, 0, 0, 0));
                }
                else
                {
                    ts.parameters.Add(new TelescopeParameters(0, 0, ts.wallThickness, 0, 0, 0));
                }
                foldouts.Add(false);
            }

            EditorGUILayout.Space();

            // Let each shell be edited separately
            for (int i = 0; i < ts.parameters.Count; i++)
            {
                ts.parameters[i].thickness = ts.wallThickness;
                // Display options for this parameter
                foldouts[i] = EditorGUILayout.Foldout(foldouts[i], "Shell " + i);
                EditorGUILayout.Space();
                if (foldouts[i])
                {
                    EditorGUI.indentLevel++;
                    if (i == 0)
                    {
                        ts.parameters[i].length          = EditorGUILayout.FloatField("Initial length", ts.parameters[i].length);
                        ts.parameters[i].radius          = EditorGUILayout.FloatField("Initial radius", ts.parameters[i].radius);
                        ts.parameters[i].curvature       = EditorGUILayout.FloatField("Curvature", ts.parameters[i].curvature);
                        ts.parameters[i].twistFromParent = EditorGUILayout.FloatField("Twist angle", ts.parameters[i].twistFromParent);
                        ts.parameters[i].torsion         = EditorGUILayout.FloatField("Torsion", ts.parameters[i].torsion);
                    }
                    else
                    {
                        ts.parameters[i].length          = EditorGUILayout.FloatField("Length change", ts.parameters[i].length);
                        ts.parameters[i].radius          = EditorGUILayout.FloatField("Radius change", ts.parameters[i].radius);
                        ts.parameters[i].curvature       = EditorGUILayout.FloatField("Curvature change", ts.parameters[i].curvature);
                        ts.parameters[i].twistFromParent = EditorGUILayout.FloatField("Twist angle", ts.parameters[i].twistFromParent);
                        ts.parameters[i].torsion         = EditorGUILayout.FloatField("Torsion change", ts.parameters[i].torsion);
                    }
                    EditorGUILayout.Space();
                    EditorGUI.indentLevel--;
                }
            }
        }
 // Use this for initialization
 void Start()
 {
     segment = GetComponent <TelescopeSegment>();
 }
        // Update is called once per frame
        void Update()
        {
            frame++;
            if (frame > 0 && counter == 0)
            {
                canvas.ReloadFromFile("octo2.canvas");
                counter++;
            }
            if (frame > 10 && counter == 1)
            {
                canvas.SplineToDCurve();
                counter++;
            }
            if (frame > 20 && counter == 2)
            {
                canvas.DCurveToTIC();
                counter++;
            }
            if (frame > 30 && counter == 3)
            {
                canvas.ConfirmTIC();
                canvas.TICToTelescope();
                counter++;
            }

            if (frame > 40 && counter == 4)
            {
                canvas.ActiveStructure.transform.rotation *= Quaternion.AngleAxis(180, Vector3.up);

                foreach (TelescopeJuncture j in canvas.ActiveStructure.junctures)
                {
                    j.customMesh   = octoTop;
                    j.junctureType = JunctureType.CustomMesh;
                    j.SetMaterial(octoMaterial);
                }

                foreach (TelescopeSegment seg in canvas.ActiveStructure.segments)
                {
                    foreach (TelescopeShell shell in seg.shells)
                    {
                        shell.setMaterial(octoMaterial);
                    }
                }

                KeepOnGround keep = canvas.ActiveStructure.gameObject.AddComponent <KeepOnGround>();
                keep.groundLevel = 1f;
                keep.targets     = new List <Transform>();

                foreach (TelescopeSegment seg in canvas.ActiveStructure.segments)
                {
                    keep.targets.Add(seg.LastShell.transform);
                }

                counter++;
            }

            if (frame > 50 && counter == 5)
            {
                int[] indices = { 3, 4, 1, 0, 5, 2 };

                Vector3 initialPoint = 4.5f * Vector3.right + 1f * Vector3.up;

                foreach (int i in indices)
                {
                    GameObject obj = new GameObject();
                    obj.transform.position = initialPoint;

                    JitterPosition j = obj.AddComponent <JitterPosition>();
                    j.changeInterval = 1f;
                    j.radius         = 4f;
                    j.startOffset    = Random.Range(0, j.changeInterval);

                    initialPoint = Quaternion.AngleAxis(-60f, Vector3.up) * initialPoint;

                    TelescopeSegment seg = canvas.ActiveStructure.segments[i];
                    TelescopeIK      ik  = seg.gameObject.AddComponent <TelescopeIK>();

                    ik.FreezeFirst = true;
                    ik.target      = obj.transform;
                }

                counter++;
            }
        }