// Start is called before the first frame update void Start() { model_system = GetComponent<Parametric_L_System>(); turtle = GetComponent<Parametric_Turtle>(); LineModule ln = new LineModule('F', 0, 1, GrowthList.LINEAR); ln.LineWidth = 0.1f; ln.LineLength = 0.5f; List<SystemModule> lm = new List<SystemModule>(); lm.Add(ln); lm.Add(new SystemModule('[', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm.Add(new RotationModule('+', 0, 1, GrowthList.LINEAR, new Vector3(0, 0, 1), 45f)); lm.Add(ln.CopyModule()); lm.Add(new SystemModule(']', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm.Add(new SystemModule('2', 0, 1, GrowthList.NON_DEVELOPMENTAL)); List<SystemModule> lm2 = new List<SystemModule>(); lm2.Add(ln.CopyModule()); lm2.Add(new SystemModule('[', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm2.Add(new RotationModule('+', 0, 1, GrowthList.LINEAR, new Vector3(0, 0, 1), -45f)); lm2.Add(ln.CopyModule()); lm2.Add(new SystemModule(']', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm2.Add(new SystemModule('1', 0, 1, GrowthList.NON_DEVELOPMENTAL)); model_system.Productions.Add('1', lm); model_system.Productions.Add('2', lm2); }
// Update is called once per frame void Update() { if (player_triggered) { float phyto_velocity = 1.01f - (phyto.Motor.Velocity.y / peak_time); float jump_age = Mathf.Lerp(0, 1f, phyto_velocity); foreach (SystemModule m in ProximalModules) { if (m is RotationModule) { RotationModule rm = m as RotationModule; rm.RotationAxis = Vector3.Cross(phyto.transform.position - this.transform.position, Vector3.up).normalized; rm.RotationScalar = -Vector3.Angle(phyto.transform.position - this.transform.position, Vector3.up); } else if (m is LineModule) { LineModule lm = m as LineModule; lm.LineLength = Vector3.Distance(phyto.transform.position, this.transform.position); } if (m.Age < m.TerminalAge) { m.Age = jump_age; } } MainAxis.Age = jump_age; Turtle.TurtleAnalysis(0f); if (phyto_velocity >= 1) { player_triggered = false; phyto.DoubleJump.RemoveListener(DerivePlatform); } } }
public void SetUI(LineModule lm) { currentModule = lm; jointToggle.isOn = lm.jointed; widthSlider.Slider.value = lm.LineWidth; lengthSlider.Slider.value = lm.LineLength; colorPicker.CurrentColor = lm.DrawColor; }
public void Init(LineModule lm) { currentModule = lm; ToggleJointed(); SetColor(); SetInitialWidth(); SetInitialLength(); }
// Start is called before the first frame update void Start() { LineModule stem_module = new LineModule('F', 0, 1, GrowthList.LINEAR); stem_module.LineWidth = 0.5f; stem_module.LineLength = 5.0f; //MeshModule stem_module = new MeshModule('M', 0, 1, GrowthList.LINEAR); //stem_module.x = 0.1f; //stem_module.y = 1f; //stem_module.z = 0.1f; RotationModule rotation_module = new RotationModule('+', 0, 1, GrowthList.NON_DEVELOPMENTAL, new Vector3(0, 0, 1), 0f, true); SystemModule branch_open_module = new BranchModule('[', 0, 1, GrowthList.NON_DEVELOPMENTAL, true); SystemModule branch_close_module = new BranchModule(']', 0, 1, GrowthList.NON_DEVELOPMENTAL, false); ObjectModule leaf_module = new ObjectModule('O', 0, 1, GrowthList.LOGISTIC, "Prefabs/ModuleObjects/ManilkaraLeaf"); leaf_module.scale = Vector3.one * 2.5f; List <SystemModule> main_axis = new List <SystemModule>(); //main_axis.Add(branch_open_module); main_axis.Add(rotation_module); main_axis.Add(stem_module); main_axis.Add(new ApexModule('2', 0, 1, GrowthList.LINEAR, "Prefabs/ModuleObjects/PlatformApex")); //main_axis.Add(branch_close_module); main_axis.Add(new ApexModule('1', 0, 1, GrowthList.LINEAR, "Prefabs/ModuleObjects/Apex")); system.Productions.Add('1', main_axis); List <SystemModule> platform_axis = new List <SystemModule>(); platform_axis.Add(branch_open_module); platform_axis.Add(rotation_module); platform_axis.Add(stem_module); platform_axis.Add(new PhysicsMoverModule('3', 0, 1, GrowthList.LINEAR, "Prefabs/ModuleObjects/LeafWhorlMover")); platform_axis.Add(branch_close_module); system.Productions.Add('2', platform_axis); List <SystemModule> leaf_whorl = new List <SystemModule>(); leaf_whorl.Add(branch_open_module); for (int i = 0; i < 4; i++) { leaf_whorl.Add(branch_open_module.CopyModule()); leaf_whorl.Add(new RotationModule('+', 0, 1, GrowthList.LINEAR, Vector3.right, -45f, false)); leaf_whorl.Add(leaf_module.CopyModule()); leaf_whorl.Add(branch_close_module.CopyModule()); leaf_whorl.Add(new RotationModule('+', 0, 1, GrowthList.NON_DEVELOPMENTAL, Vector3.up, 90f, false)); } leaf_whorl.Add(branch_close_module); system.Productions.Add('3', leaf_whorl); ApexModule axiom_apex = system.Axiom as ApexModule; turtle.TurtleAnalysis(0f); axiom_apex.Apex.ActivateApex(); }
private void LineListView_SelectedIndexChanged(object sender, EventArgs e) { LineSelectedIndex = LineListView.FocusedItem.Index; module = _lineModule[LineSelectedIndex]; LineStartPxTB.Text = module._centerP.X + ""; LineStartPyTB.Text = module._centerP.Y + ""; LineEndPxTB.Text = module._endP.X + ""; LineEndPyTB.Text = module._endP.Y + ""; LineSiteListViewRefresh(); LineSelectedLab.Text = LineSelectedIndex + ""; }
/// <summary> /// 曲線圖初始 /// </summary> /// <returns></returns> public List <LineModule> Create_Line() { List <LineModule> line = new List <LineModule>(); for (int i = 0; i < 1440; i++) { if ((i / 60).ToString().Length > 1) { if ((i % 60).ToString().Length > 1) { LineModule lineModule = new LineModule() { Argument = Convert.ToDateTime($"{DateTime.Now:yyyy-MM-dd} {i / 60}:{i % 60}:00"), Value = rnd.Next(200, 400) }; line.Add(lineModule); } else { LineModule lineModule = new LineModule() { Argument = Convert.ToDateTime($"{DateTime.Now:yyyy-MM-dd} {i / 60}:0{i % 60}:00"), Value = rnd.Next(200, 400) }; line.Add(lineModule); } } else { if ((i % 60).ToString().Length > 1) { LineModule lineModule = new LineModule() { Argument = Convert.ToDateTime($"{DateTime.Now:yyyy-MM-dd} 0{i / 60}:{i % 60}:00"), Value = rnd.Next(200, 400) }; line.Add(lineModule); } else { LineModule lineModule = new LineModule() { Argument = Convert.ToDateTime($"{DateTime.Now:yyyy-MM-dd} 0{i / 60}:0{i % 60}:00"), Value = rnd.Next(200, 400) }; line.Add(lineModule); } } } return(line); }
public override SystemModule CopyModule() { LineModule lm = LineModule.CreateInstance <LineModule>(); lm.Symbol = Symbol; lm.Age = Age; lm.TerminalAge = TerminalAge; lm.Growth = Growth; lm.DrawColor = DrawColor; lm.LineWidth = LineWidth; lm.LineLength = LineLength; lm.jointed = jointed; return(lm); }
private void LineDownBtn_Click(object sender, EventArgs e) { if (LineSelectedIndex == -1) { MessageBox.Show("请选择线路!"); return; } if (LineSelectedIndex == _lineModule.Count - 1) { return; } LineModule line = _lineModule[LineSelectedIndex + 1]; _lineModule[LineSelectedIndex + 1] = _lineModule[LineSelectedIndex]; _lineModule[LineSelectedIndex] = line; LineListViewRefresh(); }
private void SearchsimpleButton_Click(object sender, EventArgs e) { if (gridView1.Columns.Count > 0) { gridView1.Columns.Clear(); } if (chartControl.Series.Count > 0) { chartControl.Series.Clear(); } ReportSearchEnumType = (ReportSearchEnumType)SearchTypecomboBoxEdit.SelectedIndex; switch (ReportSearchEnumType) { case ReportSearchEnumType.kW: { if (Form1.ConnectionFlag) { if (ElectricConfigs.Count > 0) { var ElectricConfig = ElectricConfigs.Where(g => g.DeviceName == SearchDevicecomboBoxEdit.Text).Single(); var data = SqlMethod.Search_ThreePhaseElectricMeter_Log(Convert.ToDateTime(StartdateEdit.EditValue).ToString("yyyyMMdd"), Convert.ToDateTime(EnddateEdit.EditValue).ToString("yyyyMMdd"), ElectricConfig.GatewayIndex, ElectricConfig.DeviceIndex); if (data != null) { gridControl.DataSource = data; chartControl.DataSource = data; #region 報表 for (int i = 0; i < gridView1.Columns.Count; i++) { if (gridView1.Columns[i].FieldName == "ttimen") { gridView1.Columns[i].Caption = "時間"; gridView1.Columns[i].DisplayFormat.FormatString = "yyyy/MM/dd HH:mm"; gridView1.Columns[i].BestFit(); } else if (gridView1.Columns[i].FieldName == "kw") { gridView1.Columns[i].Caption = "即時用電"; gridView1.Columns[i].BestFit(); } else { gridView1.Columns[i].Visible = false; } } #endregion #region 圖表 Series series = new Series($"{SearchDevicecomboBoxEdit.Text}", ViewType.Line); series.ArgumentDataMember = "ttimen"; series.ValueDataMembers.AddRange(new string[] { "kw" }); series.CrosshairLabelPattern = "{S} \r時間 : {A:yyyy-MM-dd HH:mm}\r{V:0.##} kW"; series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; chartControl.Series.Add(series); if (chartControl.DataSource != null && chartControl.Series.Count > 0) { XYDiagram diagram = (XYDiagram)chartControl.Diagram; if (diagram != null) { diagram.EnableAxisXZooming = true; //放大縮小 diagram.EnableAxisXScrolling = true; //拖曳 diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Minute; // 顯示設定 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Minute; // 刻度設定 diagram.AxisX.Label.Angle = 90; diagram.AxisX.Label.TextPattern = "{A:yyyy-MM-dd HH:mm}"; //X軸顯示 diagram.AxisX.WholeRange.SideMarginsValue = 0; //不需要邊寬 } chartControl.CrosshairOptions.ShowArgumentLabels = false; //是否顯示Y軸垂直線 chartControl.CrosshairOptions.ShowArgumentLine = false; //是否顯示Y軸垂直線 //chartControl.CrosshairOptions.ShowCrosshairLabels = false;//是否顯示Y軸垂直線 } #endregion } } } else { TimeSpan timeSpan = Convert.ToDateTime(EnddateEdit.EditValue).Subtract(Convert.ToDateTime(StartdateEdit.EditValue)); List <LineModule> Data = new List <LineModule>(); for (int day = 0; day < timeSpan.TotalDays + 1; day++) { var data = Create_Line(Convert.ToDateTime(StartdateEdit.EditValue).AddDays(day)); Data.AddRange(data); } gridControl.DataSource = Data; chartControl.DataSource = Data; #region 報表 for (int i = 0; i < gridView1.Columns.Count; i++) { if (gridView1.Columns[i].FieldName == "Argument") { gridView1.Columns[i].Caption = "時間"; gridView1.Columns[i].DisplayFormat.FormatString = "yyyy/MM/dd HH:mm"; gridView1.Columns[i].BestFit(); } else if (gridView1.Columns[i].FieldName == "Value") { gridView1.Columns[i].Caption = "即時用電"; gridView1.Columns[i].BestFit(); } else { gridView1.Columns[i].Visible = false; } } #endregion #region 圖表 Series series = new Series($"{SearchDevicecomboBoxEdit.Text}", ViewType.Line); series.ArgumentDataMember = "Argument"; series.ValueDataMembers.AddRange(new string[] { "Value" }); series.CrosshairLabelPattern = "{S} \r時間 : {A:yyyy-MM-dd HH:mm}\r{V:0.##} kW"; series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; chartControl.Series.Add(series); if (chartControl.DataSource != null && chartControl.Series.Count > 0) { XYDiagram diagram = (XYDiagram)chartControl.Diagram; if (diagram != null) { diagram.EnableAxisXZooming = true; //放大縮小 diagram.EnableAxisXScrolling = true; //拖曳 diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Minute; // 顯示設定 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Minute; // 刻度設定 diagram.AxisX.Label.Angle = 90; diagram.AxisX.Label.TextPattern = "{A:yyyy-MM-dd HH:mm}"; //X軸顯示 diagram.AxisX.WholeRange.SideMarginsValue = 0; //不需要邊寬 } chartControl.CrosshairOptions.ShowArgumentLabels = false; //是否顯示Y軸垂直線 chartControl.CrosshairOptions.ShowArgumentLine = false; //是否顯示Y軸垂直線 //chartControl.CrosshairOptions.ShowCrosshairLabels = false;//是否顯示Y軸垂直線 } #endregion } } break; case ReportSearchEnumType.kWh: { if (Form1.ConnectionFlag) { if (ElectricConfigs.Count > 0) { var ElectricConfig = ElectricConfigs.Where(g => g.DeviceName == SearchDevicecomboBoxEdit.Text).Single(); var data = SqlMethod.Search_ElectricTotalPrice(Convert.ToDateTime(StartdateEdit.EditValue).ToString("yyyyMMdd"), Convert.ToDateTime(EnddateEdit.EditValue).ToString("yyyyMMdd"), ElectricConfig.GatewayIndex, ElectricConfig.DeviceIndex); if (data != null) { gridControl.DataSource = data; chartControl.DataSource = data; #region 報表 for (int i = 0; i < gridView1.Columns.Count; i++) { if (gridView1.Columns[i].FieldName == "ttimen") { gridView1.Columns[i].Caption = "時間"; gridView1.Columns[i].DisplayFormat.FormatString = "yyyy/MM/dd"; gridView1.Columns[i].BestFit(); } else if (gridView1.Columns[i].FieldName == "KwhTotal") { gridView1.Columns[i].Caption = "累積用電"; gridView1.Columns[i].BestFit(); } else { gridView1.Columns[i].Visible = false; } } #endregion #region 圖表 Series series = new Series($"{SearchDevicecomboBoxEdit.Text}", ViewType.Bar); series.ArgumentDataMember = "ttimen"; series.ValueDataMembers.AddRange(new string[] { "KwhTotal" }); series.CrosshairLabelPattern = "{S} \r時間 : {A:yyyy-MM-dd HH:mm}\r{V:0.##} kWh"; series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; chartControl.Series.Add(series); if (chartControl.DataSource != null && chartControl.Series.Count > 0) { XYDiagram diagram = (XYDiagram)chartControl.Diagram; if (diagram != null) { diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Day; // 顯示設定 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Day; // 刻度設定 diagram.AxisX.Label.Angle = 90; diagram.AxisX.Label.TextPattern = "{A:yyyy-MM-dd}"; //X軸顯示 diagram.AxisX.WholeRange.SideMarginsValue = 0; //不需要邊寬 } chartControl.CrosshairOptions.ShowArgumentLabels = false; //是否顯示Y軸垂直線 chartControl.CrosshairOptions.ShowArgumentLine = false; //是否顯示Y軸垂直線 //chartControl.CrosshairOptions.ShowCrosshairLabels = false;//是否顯示Y軸垂直線 } #endregion } } } else { TimeSpan timeSpan = Convert.ToDateTime(EnddateEdit.EditValue).Subtract(Convert.ToDateTime(StartdateEdit.EditValue)); List <LineModule> Data = new List <LineModule>(); for (int day = 0; day < timeSpan.TotalDays + 1; day++) { var data = new LineModule() { Argument = Convert.ToDateTime($"{Convert.ToDateTime(StartdateEdit.EditValue).AddDays(day):yyyy-MM-dd} 00:00:00"), Value = rnd.Next(200, 400) };; Data.Add(data); } gridControl.DataSource = Data; chartControl.DataSource = Data; #region 報表 for (int i = 0; i < gridView1.Columns.Count; i++) { if (gridView1.Columns[i].FieldName == "Argument") { gridView1.Columns[i].Caption = "時間"; gridView1.Columns[i].DisplayFormat.FormatString = "yyyy/MM/dd"; gridView1.Columns[i].BestFit(); } else if (gridView1.Columns[i].FieldName == "Value") { gridView1.Columns[i].Caption = "累積用電"; gridView1.Columns[i].BestFit(); } else { gridView1.Columns[i].Visible = false; } } #endregion #region 圖表 Series series = new Series($"{SearchDevicecomboBoxEdit.Text}", ViewType.Bar); series.ArgumentDataMember = "Argument"; series.ValueDataMembers.AddRange(new string[] { "Value" }); series.CrosshairLabelPattern = "{S} \r時間 : {A:yyyy-MM-dd HH:mm}\r{V:0.##} kWh"; series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; chartControl.Series.Add(series); if (chartControl.DataSource != null && chartControl.Series.Count > 0) { XYDiagram diagram = (XYDiagram)chartControl.Diagram; if (diagram != null) { diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Day; // 顯示設定 diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Day; // 刻度設定 diagram.AxisX.Label.Angle = 90; diagram.AxisX.Label.TextPattern = "{A:yyyy-MM-dd}"; //X軸顯示 diagram.AxisX.WholeRange.SideMarginsValue = 0; //不需要邊寬 } chartControl.CrosshairOptions.ShowArgumentLabels = false; //是否顯示Y軸垂直線 chartControl.CrosshairOptions.ShowArgumentLine = false; //是否顯示Y軸垂直線 //chartControl.CrosshairOptions.ShowCrosshairLabels = false;//是否顯示Y軸垂直線 } #endregion } } break; } }
public void BuildDefaultSystem() { ObjectModule om = new ObjectModule('O', 0, 1, GrowthList.LINEAR, ObjectBuilder.OBJECT_PATH + ObjectList.SIMPLE_LEAF); om.scale = Vector3.one * 0.1f; om.rotation = new Vector3(90, 0, 0); ObjectModule om_right = new ObjectModule('O', 0, 1, GrowthList.LINEAR, ObjectBuilder.OBJECT_PATH + ObjectList.SIMPLE_LEAF); om_right.scale = Vector3.one * 0.1f; om_right.rotation = new Vector3(90, 180, 0); om_right.jointed = true; JointModule jm = new JointModule('{', 0, 1, GrowthList.LINEAR, JointBuilder.JOINT_PATH + JointModule.HINGE_JOINT); jm.jointSpringSpring = 10f; jm.jointSpringDamper = 99f; jm.jointLimitMin = -10; jm.jointLimitMax = 10; ObjectModule om_right_z = new ObjectModule('O', 0, 1, GrowthList.LOGISTIC, ObjectBuilder.OBJECT_PATH + ObjectList.SIMPLE_LEAF); om_right_z.scale = Vector3.one * 0.1f; om_right_z.rotation = new Vector3(90, 90, 0); JointModule jmc = new JointModule('{', 0, 1, GrowthList.LINEAR, JointBuilder.JOINT_PATH + JointModule.CHARACTER_JOINT); jmc.mass = 1; jmc.jointSpringSpring = 10f; jmc.jointSpringDamper = 99f; jmc.jointLimitMin = -10; jmc.jointLimitMax = 10; jmc.twistLimit1 = -10; jmc.twistLimit2 = 10; jmc.twistSpringSpring = 10f; jmc.twistSpringDamper = 99f; LineModule ln = new LineModule('F', 0, 1, GrowthList.EXPONENTIAL); ln.LineWidth = 0.1f; ln.LineLength = 0.1f; ln.jointed = true; ObjectModule om_z = new ObjectModule('O', 0, 1, GrowthList.LINEAR, ObjectBuilder.OBJECT_PATH + ObjectList.SIMPLE_LEAF); om_z.scale = Vector3.one * 0.1f; om_z.rotation = new Vector3(90, -90, 0); List <SystemModule> lm = new List <SystemModule>(); lm.Add(jmc.CopyModule()); lm.Add(ln.CopyModule()); lm.Add(new SystemModule('[', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm.Add(jm.CopyModule()); lm.Add(new RotationModule('+', 0, 1, GrowthList.LINEAR, new Vector3(1, 0, 0), 45f)); lm.Add(om_right.CopyModule()); lm.Add(new SystemModule('}', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm.Add(new SystemModule(']', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm.Add(new SystemModule('1', 0, 1, GrowthList.NON_DEVELOPMENTAL)); lm.Add(new SystemModule('}', 0, 1, GrowthList.NON_DEVELOPMENTAL)); Productions.Add('1', lm); }