// 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(); } } }
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); } }
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++; } }