public static void saveConfiguration(IFormConfiguration formConfiguration) { string fileSavePath = Application.persistentDataPath + "/FormConfigSlot" + (formConfiguration.getIndex() + 1) + ".xml"; Debug.Log("Save:" + fileSavePath); XmlDocument xmlDoc = new XmlDocument(); XmlElement root = xmlDoc.CreateElement("", "form", ""); //save data root.SetAttribute("branchPositionDeltaX", formConfiguration.getBranchPositionDelta().x.ToString()); root.SetAttribute("branchPositionDeltaY", formConfiguration.getBranchPositionDelta().y.ToString()); root.SetAttribute("branchPositionDeltaZ", formConfiguration.getBranchPositionDelta().z.ToString()); root.SetAttribute("branchTwistDeltaX", formConfiguration.getBranchTwistDelta().x.ToString()); root.SetAttribute("branchTwistDeltaY", formConfiguration.getBranchTwistDelta().y.ToString()); root.SetAttribute("branchTwistDeltaZ", formConfiguration.getBranchTwistDelta().z.ToString()); root.SetAttribute("index", formConfiguration.getIndex().ToString()); root.SetAttribute("mutationStrength", formConfiguration.getMutationStrength().ToString()); root.SetAttribute("scaleBranch", formConfiguration.getScaleBranch().ToString()); root.SetAttribute("scaleDelta", formConfiguration.getScaleDelta().ToString()); root.SetAttribute("scaleTrunk", formConfiguration.getScaleTrunk().ToString()); root.SetAttribute("stackIterations", formConfiguration.getStackIterations().ToString()); root.SetAttribute("stackShapeIndex", formConfiguration.getStackShapeIndex().ToString()); root.SetAttribute("stackStartTwistX", formConfiguration.getStackStartTwist().x.ToString()); root.SetAttribute("stackStartTwistY", formConfiguration.getStackStartTwist().y.ToString()); root.SetAttribute("stackStartTwistZ", formConfiguration.getStackStartTwist().z.ToString()); root.SetAttribute("stackTwistDeltaX", formConfiguration.getStackTwistDelta().x.ToString()); root.SetAttribute("stackTwistDeltaY", formConfiguration.getStackTwistDelta().y.ToString()); root.SetAttribute("stackTwistDeltaZ", formConfiguration.getStackTwistDelta().z.ToString()); root.SetAttribute("startPositionX", formConfiguration.getStartPosition().x.ToString()); root.SetAttribute("startPositionY", formConfiguration.getStartPosition().y.ToString()); root.SetAttribute("startPositionZ", formConfiguration.getStartPosition().z.ToString()); root.SetAttribute("startRotationX", formConfiguration.getStartRotation().x.ToString()); root.SetAttribute("startRotationY", formConfiguration.getStartRotation().y.ToString()); root.SetAttribute("startRotationZ", formConfiguration.getStartRotation().z.ToString()); root.SetAttribute("startScale", formConfiguration.getStartScale().ToString()); root.SetAttribute("trunkIterations", formConfiguration.getTrunkIterations().ToString()); root.SetAttribute("trunkPositionDeltaX", formConfiguration.getTrunkPositionDelta().x.ToString()); root.SetAttribute("trunkPositionDeltaY", formConfiguration.getTrunkPositionDelta().y.ToString()); root.SetAttribute("trunkPositionDeltaZ", formConfiguration.getTrunkPositionDelta().z.ToString()); root.SetAttribute("trunklRotationDeltaX", formConfiguration.getTrunkRotationDelta().x.ToString()); root.SetAttribute("trunklRotationDeltaY", formConfiguration.getTrunkRotationDelta().y.ToString()); root.SetAttribute("trunklRotationDeltaZ", formConfiguration.getTrunkRotationDelta().z.ToString()); xmlDoc.AppendChild(root); //save xmlDoc.Save(fileSavePath); }
public static void saveConfiguration(IFormConfiguration formConfiguration) { string fileSavePath = Application.persistentDataPath + "/FormConfigSlot" + (formConfiguration.getIndex() + 1) + ".xml"; Debug.Log ("Save:" + fileSavePath); XmlDocument xmlDoc = new XmlDocument(); XmlElement root = xmlDoc.CreateElement("", "form", ""); //save data root.SetAttribute("branchPositionDeltaX", formConfiguration.getBranchPositionDelta().x.ToString()); root.SetAttribute("branchPositionDeltaY", formConfiguration.getBranchPositionDelta().y.ToString()); root.SetAttribute("branchPositionDeltaZ", formConfiguration.getBranchPositionDelta().z.ToString()); root.SetAttribute("branchTwistDeltaX", formConfiguration.getBranchTwistDelta().x.ToString()); root.SetAttribute("branchTwistDeltaY", formConfiguration.getBranchTwistDelta().y.ToString()); root.SetAttribute("branchTwistDeltaZ", formConfiguration.getBranchTwistDelta().z.ToString()); root.SetAttribute("index", formConfiguration.getIndex().ToString()); root.SetAttribute("mutationStrength", formConfiguration.getMutationStrength().ToString()); root.SetAttribute("scaleBranch", formConfiguration.getScaleBranch().ToString()); root.SetAttribute("scaleDelta", formConfiguration.getScaleDelta().ToString()); root.SetAttribute("scaleTrunk", formConfiguration.getScaleTrunk().ToString()); root.SetAttribute("stackIterations", formConfiguration.getStackIterations().ToString()); root.SetAttribute("stackShapeIndex", formConfiguration.getStackShapeIndex().ToString()); root.SetAttribute("stackStartTwistX", formConfiguration.getStackStartTwist().x.ToString()); root.SetAttribute("stackStartTwistY", formConfiguration.getStackStartTwist().y.ToString()); root.SetAttribute("stackStartTwistZ", formConfiguration.getStackStartTwist().z.ToString()); root.SetAttribute("stackTwistDeltaX", formConfiguration.getStackTwistDelta().x.ToString()); root.SetAttribute("stackTwistDeltaY", formConfiguration.getStackTwistDelta().y.ToString()); root.SetAttribute("stackTwistDeltaZ", formConfiguration.getStackTwistDelta().z.ToString()); root.SetAttribute("startPositionX", formConfiguration.getStartPosition().x.ToString()); root.SetAttribute("startPositionY", formConfiguration.getStartPosition().y.ToString()); root.SetAttribute("startPositionZ", formConfiguration.getStartPosition().z.ToString()); root.SetAttribute("startRotationX", formConfiguration.getStartRotation().x.ToString()); root.SetAttribute("startRotationY", formConfiguration.getStartRotation().y.ToString()); root.SetAttribute("startRotationZ", formConfiguration.getStartRotation().z.ToString()); root.SetAttribute("startScale", formConfiguration.getStartScale().ToString()); root.SetAttribute("trunkIterations", formConfiguration.getTrunkIterations().ToString()); root.SetAttribute("trunkPositionDeltaX", formConfiguration.getTrunkPositionDelta().x.ToString()); root.SetAttribute("trunkPositionDeltaY", formConfiguration.getTrunkPositionDelta().y.ToString()); root.SetAttribute("trunkPositionDeltaZ", formConfiguration.getTrunkPositionDelta().z.ToString()); root.SetAttribute("trunklRotationDeltaX", formConfiguration.getTrunkRotationDelta().x.ToString()); root.SetAttribute("trunklRotationDeltaY", formConfiguration.getTrunkRotationDelta().y.ToString()); root.SetAttribute("trunklRotationDeltaZ", formConfiguration.getTrunkRotationDelta().z.ToString()); xmlDoc.AppendChild(root); //save xmlDoc.Save(fileSavePath); }
public IFormConfiguration(IFormConfiguration config) { this.index = config.getIndex (); this.startPosition = config.getStartPosition (); this.startRotation = config.getStartRotation (); this.trunkPositionDelta = config.getTrunkPositionDelta (); this.trunkRotationDelta = config.getTrunkRotationDelta (); this.trunkIterations = config.getTrunkIterations (); this.scaleTrunk = config.getScaleTrunk (); this.branchPositionDelta = config.getBranchPositionDelta (); this.branchTwistDelta = config.getBranchTwistDelta (); this.stackIterations = config.getStackIterations (); this.startScale = config.getStartScale (); this.scaleDelta = config.getScaleDelta (); this.scaleBranch = config.getScaleBranch (); this.stackStartTwist = config.getStackStartTwist (); this.stackTwistDelta = config.getStackTwistDelta (); this.stackShape = config.getStackShape (); this.mutationStrength = config.getMutationStrength (); }
public IFormConfiguration(IFormConfiguration config) { this.index = config.getIndex(); this.startPosition = config.getStartPosition(); this.startRotation = config.getStartRotation(); this.trunkPositionDelta = config.getTrunkPositionDelta(); this.trunkRotationDelta = config.getTrunkRotationDelta(); this.trunkIterations = config.getTrunkIterations(); this.scaleTrunk = config.getScaleTrunk(); this.branchPositionDelta = config.getBranchPositionDelta(); this.branchTwistDelta = config.getBranchTwistDelta(); this.stackIterations = config.getStackIterations(); this.startScale = config.getStartScale(); this.scaleDelta = config.getScaleDelta(); this.scaleBranch = config.getScaleBranch(); this.stackStartTwist = config.getStackStartTwist(); this.stackTwistDelta = config.getStackTwistDelta(); this.stackShape = config.getStackShape(); this.mutationStrength = config.getMutationStrength(); }
public static void loadConfiguration(IFormConfiguration formConfiguration) { string fileSavePath = Application.persistentDataPath + "/FormConfigSlot" + (formConfiguration.getIndex() + 1) + ".xml"; Debug.Log("Load:" + fileSavePath); XmlDocument xmlDoc = new XmlDocument(); if (System.IO.File.Exists(fileSavePath)) { xmlDoc.Load(new XmlTextReader(fileSavePath)); XmlElement root = xmlDoc.DocumentElement; float x = float.Parse(root.GetAttribute("branchPositionDeltaX")); float y = float.Parse(root.GetAttribute("branchPositionDeltaY")); float z = float.Parse(root.GetAttribute("branchPositionDeltaZ")); formConfiguration.setBranchPositionDelta(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("branchTwistDeltaX")); y = float.Parse(root.GetAttribute("branchTwistDeltaY")); z = float.Parse(root.GetAttribute("branchTwistDeltaZ")); formConfiguration.setBranchTwistDelta(new Vector3(x, y, z)); formConfiguration.setIndex(int.Parse(root.GetAttribute("index"))); formConfiguration.setMutationStrength(float.Parse(root.GetAttribute("mutationStrength"))); formConfiguration.setScaleBranch(bool.Parse(root.GetAttribute("scaleBranch"))); formConfiguration.setScaleDelta(float.Parse(root.GetAttribute("scaleDelta"))); formConfiguration.setScaleTrunk(bool.Parse(root.GetAttribute("scaleTrunk"))); formConfiguration.setStackIterations(int.Parse(root.GetAttribute("stackIterations"))); formConfiguration.setStackShape(int.Parse(root.GetAttribute("stackShapeIndex"))); x = float.Parse(root.GetAttribute("stackStartTwistX")); y = float.Parse(root.GetAttribute("stackStartTwistY")); z = float.Parse(root.GetAttribute("stackStartTwistZ")); formConfiguration.setStackStartTwist(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("stackTwistDeltaX")); y = float.Parse(root.GetAttribute("stackTwistDeltaY")); z = float.Parse(root.GetAttribute("stackTwistDeltaZ")); formConfiguration.setStackTwistDelta(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("startPositionX")); y = float.Parse(root.GetAttribute("startPositionY")); z = float.Parse(root.GetAttribute("startPositionZ")); formConfiguration.setStartPosition(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("startRotationX")); y = float.Parse(root.GetAttribute("startRotationY")); z = float.Parse(root.GetAttribute("startRotationZ")); formConfiguration.setStartRotation(new Vector3(x, y, z)); formConfiguration.setStartScale(float.Parse(root.GetAttribute("startScale"))); formConfiguration.setTrunkIterations(int.Parse(root.GetAttribute("trunkIterations"))); x = float.Parse(root.GetAttribute("trunkPositionDeltaX")); y = float.Parse(root.GetAttribute("trunkPositionDeltaY")); z = float.Parse(root.GetAttribute("trunkPositionDeltaZ")); formConfiguration.setTrunkPositionDelta(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("trunklRotationDeltaX")); y = float.Parse(root.GetAttribute("trunklRotationDeltaY")); z = float.Parse(root.GetAttribute("trunklRotationDeltaZ")); formConfiguration.setTrunkRotationDelta(new Vector3(x, y, z)); //perfom bounds checks and fix formConfiguration.validateAndFix(); } else { Debug.Log("File Not Found:" + fileSavePath); } }
public void displayFormBuilderPalette(IFormConfiguration formConfig) { // Make a background box GUI.Box(new Rect(10, 10, 700, 590), "Builder Palette"); bool displayStarfishControls = false; bool displayLoxodromeControls = false; bool displayRingControls = false; if (formConfig.getFormProcessor().GetType() == typeof(StarfishForm)) { displayStarfishControls = true; } else if (formConfig.getFormProcessor().GetType() == typeof(LoxodromeForm)) { displayLoxodromeControls = true; } else if (formConfig.getFormProcessor().GetType() == typeof(RingForm)) { displayRingControls = true; } /* TRUNK */ //start position Vector3 startPosition = formConfig.getStartPosition(); startPositionX = startPosition.x; startPositionY = startPosition.y; startPositionZ = startPosition.z; GUI.Label(new Rect(20, 40, 150, 20), "Trunk Start Position X"); startPositionX = GUI.HorizontalSlider(new Rect(180, 45, 180, 20), startPositionX, -5, 5); GUI.Label(new Rect(20, 70, 150, 20), "Trunk Start Position Y"); startPositionY = GUI.HorizontalSlider(new Rect(180, 75, 180, 20), startPositionY, -5, 5); GUI.Label(new Rect(20, 100, 150, 20), "Trunk Start Position Z"); startPositionZ = GUI.HorizontalSlider(new Rect(180, 105, 180, 20), startPositionZ, -5, 5); startPosition.x = startPositionX; startPosition.y = startPositionY; startPosition.z = startPositionZ; formConfig.setStartPosition(startPosition); // start rotation Vector3 startRotation = formConfig.getStartRotation(); startRotationX = startRotation.x; startRotationY = startRotation.y; startRotationZ = startRotation.z; if (displayLoxodromeControls) { GUI.Label(new Rect(370, 40, 150, 20), "Rhumb Angle"); //startRotationX = GUI.HorizontalSlider (new Rect (520, 45, 180, 20), startRotationX, 0.1f, 2f); startRotationX = GUI.HorizontalSlider(new Rect(520, 45, 180, 20), startRotationX, 0, 2f); } if (displayStarfishControls) { GUI.Label(new Rect(370, 40, 150, 20), "Trunk Start Rotation X"); startRotationX = GUI.HorizontalSlider(new Rect(520, 45, 180, 20), startRotationX, 0, 360); } if (displayStarfishControls || displayRingControls) { GUI.Label(new Rect(370, 70, 150, 20), "Trunk Start Rotation Y"); startRotationY = GUI.HorizontalSlider(new Rect(520, 75, 180, 20), startRotationY, 0, 360); GUI.Label(new Rect(370, 100, 150, 20), "Trunk Start Rotation Z"); startRotationZ = GUI.HorizontalSlider(new Rect(520, 105, 180, 20), startRotationZ, 0, 360); } startRotation.x = startRotationX; startRotation.y = startRotationY; startRotation.z = startRotationZ; formConfig.setStartRotation(startRotation); //trunk position delta Vector3 trunkPositionDelta = formConfig.getTrunkPositionDelta(); trunkPositionDeltaX = trunkPositionDelta.x; trunkPositionDeltaY = trunkPositionDelta.y; trunkPositionDeltaZ = trunkPositionDelta.z; if (displayStarfishControls || displayRingControls) { GUI.Label(new Rect(20, 130, 150, 20), "Trunk Position Delta X"); trunkPositionDeltaX = GUI.HorizontalSlider(new Rect(180, 135, 180, 20), trunkPositionDeltaX, -1, 1); GUI.Label(new Rect(20, 160, 150, 20), "Trunk Position Delta Y"); trunkPositionDeltaY = GUI.HorizontalSlider(new Rect(180, 165, 180, 20), trunkPositionDeltaY, -1, 1); GUI.Label(new Rect(20, 190, 150, 20), "Trunk Position Delta Z"); trunkPositionDeltaZ = GUI.HorizontalSlider(new Rect(180, 195, 180, 20), trunkPositionDeltaZ, -1, 1); } trunkPositionDelta.x = trunkPositionDeltaX; trunkPositionDelta.y = trunkPositionDeltaY; trunkPositionDelta.z = trunkPositionDeltaZ; formConfig.setTrunkPositionDelta(trunkPositionDelta); //trunk rotation delta Vector3 trunkRotatiomnDelta = formConfig.getTrunkRotationDelta(); trunkRotationDeltaX = trunkRotatiomnDelta.x; trunkRotationDeltaY = trunkRotatiomnDelta.y; trunkRotationDeltaZ = trunkRotatiomnDelta.z; if (displayStarfishControls) { GUI.Label(new Rect(20, 220, 150, 20), "Trunk Rotation Delta X"); trunkRotationDeltaX = GUI.HorizontalSlider(new Rect(180, 225, 180, 20), trunkRotationDeltaX, -60, 60); } if (displayStarfishControls || displayRingControls) { GUI.Label(new Rect(20, 250, 150, 20), "Trunk Rotation Delta Y"); trunkRotationDeltaY = GUI.HorizontalSlider(new Rect(180, 255, 180, 20), trunkRotationDeltaY, -60, 60); GUI.Label(new Rect(20, 280, 150, 20), "Trunk Rotation Delta Z"); trunkRotationDeltaZ = GUI.HorizontalSlider(new Rect(180, 285, 180, 20), trunkRotationDeltaZ, -60, 60); } trunkRotatiomnDelta.x = trunkRotationDeltaX; trunkRotatiomnDelta.y = trunkRotationDeltaY; trunkRotatiomnDelta.z = trunkRotationDeltaZ; formConfig.setTrunkRotationDelta(trunkRotatiomnDelta); //trunk iterations trunkIterations = formConfig.getTrunkIterations(); GUI.Label(new Rect(20, 310, 150, 20), "Trunk Iterations *"); trunkIterations = GUI.HorizontalSlider(new Rect(180, 315, 180, 20), trunkIterations, 1, 24); formConfig.setTrunkIterations((int)trunkIterations); /* BRANCH */ //branch position delta Vector3 branchPositionDelta = formConfig.getBranchPositionDelta(); branchPositionDeltaX = branchPositionDelta.x; branchPositionDeltaY = branchPositionDelta.y; branchPositionDeltaZ = branchPositionDelta.z; if (displayRingControls || displayLoxodromeControls) { GUI.Label(new Rect(370, 130, 150, 20), "Radius"); branchPositionDeltaX = GUI.HorizontalSlider(new Rect(520, 135, 180, 20), branchPositionDeltaX, 0.2f, 1); } if (displayStarfishControls) { GUI.Label(new Rect(370, 130, 150, 20), "Branch Position Delta X"); branchPositionDeltaX = GUI.HorizontalSlider(new Rect(520, 135, 180, 20), branchPositionDeltaX, -1, 1); GUI.Label(new Rect(370, 160, 150, 20), "Branch Position Delta Y"); branchPositionDeltaY = GUI.HorizontalSlider(new Rect(520, 165, 180, 20), branchPositionDeltaY, -1, 1); GUI.Label(new Rect(370, 190, 150, 20), "Branch Position Delta Z"); branchPositionDeltaZ = GUI.HorizontalSlider(new Rect(520, 195, 180, 20), branchPositionDeltaZ, -1, 1); } branchPositionDelta.x = branchPositionDeltaX; branchPositionDelta.y = branchPositionDeltaY; branchPositionDelta.z = branchPositionDeltaZ; formConfig.setBranchPositionDelta(branchPositionDelta); //branch rotation delta Vector3 branchRotationDelta = formConfig.getBranchTwistDelta(); branchRotationDeltaX = branchRotationDelta.x; branchRotationDeltaY = branchRotationDelta.y; branchRotationDeltaZ = branchRotationDelta.z; if (displayStarfishControls) { GUI.Label(new Rect(370, 220, 150, 20), "Branch Rotation Delta X"); branchRotationDeltaX = GUI.HorizontalSlider(new Rect(520, 225, 180, 20), branchRotationDeltaX, -30, 30); GUI.Label(new Rect(370, 250, 150, 20), "Branch Rotation Delta Y"); branchRotationDeltaY = GUI.HorizontalSlider(new Rect(520, 255, 180, 20), branchRotationDeltaY, -30, 30); GUI.Label(new Rect(370, 280, 150, 20), "Branch Rotation Delta Z"); branchRotationDeltaZ = GUI.HorizontalSlider(new Rect(520, 285, 180, 20), branchRotationDeltaZ, -30, 30); } branchRotationDelta.x = branchRotationDeltaX; branchRotationDelta.y = branchRotationDeltaY; branchRotationDelta.z = branchRotationDeltaZ; formConfig.setBranchTwistDelta(branchRotationDelta); //branch iterations branchIterations = formConfig.getStackIterations(); GUI.Label(new Rect(370, 310, 150, 20), "Branch Iterations *"); branchIterations = GUI.HorizontalSlider(new Rect(520, 315, 180, 20), branchIterations, 1, 60); formConfig.setStackIterations((int)branchIterations); /* STACK */ //stack start rotation Vector3 stackStartRotation = formConfig.getStackStartTwist(); stackStartRotationX = stackStartRotation.x; stackStartRotationY = stackStartRotation.y; stackStartRotationZ = stackStartRotation.z; GUI.Label(new Rect(20, 340, 150, 20), "Stack Start Rotation X"); stackStartRotationX = GUI.HorizontalSlider(new Rect(180, 345, 180, 20), stackStartRotationX, 0, 360); GUI.Label(new Rect(20, 370, 150, 20), "Stack Start Rotation Y"); stackStartRotationY = GUI.HorizontalSlider(new Rect(180, 375, 180, 20), stackStartRotationY, 0, 360); GUI.Label(new Rect(20, 400, 150, 20), "Stack Start Rotation Z"); stackStartRotationZ = GUI.HorizontalSlider(new Rect(180, 405, 180, 20), stackStartRotationZ, 0, 360); stackStartRotation.x = stackStartRotationX; stackStartRotation.y = stackStartRotationY; stackStartRotation.z = stackStartRotationZ; formConfig.setStackStartTwist(stackStartRotation); //stack rotation delta Vector3 stackRotationDelta = formConfig.getStackTwistDelta(); stackRotationDeltaX = stackRotationDelta.x; stackRotationDeltaY = stackRotationDelta.y; stackRotationDeltaZ = stackRotationDelta.z; GUI.Label(new Rect(370, 340, 150, 20), "Stack Rotation Delta X"); stackRotationDeltaX = GUI.HorizontalSlider(new Rect(520, 345, 180, 20), stackRotationDeltaX, -30, 30); GUI.Label(new Rect(370, 370, 150, 20), "Stack Rotation Delta Y"); stackRotationDeltaY = GUI.HorizontalSlider(new Rect(520, 375, 180, 20), stackRotationDeltaY, -30, 30); GUI.Label(new Rect(370, 400, 150, 20), "Stack Rotation Delta Z"); stackRotationDeltaZ = GUI.HorizontalSlider(new Rect(520, 405, 180, 20), stackRotationDeltaZ, -30, 30); stackRotationDelta.x = stackRotationDeltaX; stackRotationDelta.y = stackRotationDeltaY; stackRotationDelta.z = stackRotationDeltaZ; formConfig.setStackTwistDelta(stackRotationDelta); /* MUTATION STRENGTH */ mutationStrength = formConfig.getMutationStrength(); GUI.Label(new Rect(20, 430, 150, 20), "Mutation Strength"); mutationStrength = GUI.HorizontalSlider(new Rect(180, 435, 180, 20), mutationStrength, 0.5f, 3.5f); formConfig.setMutationStrength(mutationStrength); /* SCALING */ scaling = formConfig.getScaleDelta(); GUI.Label(new Rect(370, 430, 150, 20), "Scaling *"); scaling = GUI.HorizontalSlider(new Rect(520, 435, 180, 20), scaling, 0.9f, 1.1f); formConfig.setScaleDelta(scaling); /* STACK SHAPE */ selectedShape = formConfig.getStackShapeIndex(); selectedShape = GUI.SelectionGrid(new Rect(20, 460, 200, 60), selectedShape, shapeGridStrings, 2); formConfig.setStackShape(selectedShape); /* Form Processor */ if (formConfig.getFormProcessor().GetType() == typeof(StarfishForm)) { selectedFormProcessor = 0; } else if (formConfig.getFormProcessor().GetType() == typeof(LoxodromeForm)) { selectedFormProcessor = 1; } else if (formConfig.getFormProcessor().GetType() == typeof(RingForm)) { selectedFormProcessor = 2; } selectedFormProcessor = GUI.SelectionGrid(new Rect(20, 525, 200, 60), selectedFormProcessor, formProcessorStrings, 2); if (selectedFormProcessor == 0) { formConfig.setFormProcessor(new StarfishForm()); } else if (selectedFormProcessor == 1) { formConfig.setFormProcessor(new LoxodromeForm()); } else if (selectedFormProcessor == 2) { formConfig.setFormProcessor(new RingForm()); } /* Configurations */ selectedConfiguration = formConfig.getIndex(); selectedConfiguration = GUI.SelectionGrid(new Rect(230, 460, 300, 90), selectedConfiguration, configurationGridStrings, 3); if (selectedConfiguration != formConfig.getIndex()) { //selected configuration changed callback.changeSelectedFormConfig(selectedConfiguration); } /* Control buttons */ if (GUI.Button(new Rect(540, 460, 160, 26), "Reset Config")) { formConfig.reset(); } if (GUI.Button(new Rect(540, 490, 160, 26), "Create Form")) { callback.createNewBrush(); } if (GUI.Button(new Rect(540, 520, 160, 26), "Clear Brush")) { callback.clearBrush(); } /* Load and Save buttons */ if (GUI.Button(new Rect(230, 560, 147, 26), "Load")) { ConfigXML.loadConfiguration(formConfig); } if (GUI.Button(new Rect(383, 560, 147, 26), "Save")) { ConfigXML.saveConfiguration(formConfig); } }
public void displayFormBuilderPalette(IFormConfiguration formConfig) { // Make a background box GUI.Box(new Rect(10, 10, 700, 590), "Builder Palette"); bool displayStarfishControls = false; bool displayLoxodromeControls = false; bool displayRingControls = false; if (formConfig.getFormProcessor ().GetType () == typeof(StarfishForm)) { displayStarfishControls = true; } else if (formConfig.getFormProcessor ().GetType () == typeof(LoxodromeForm)) { displayLoxodromeControls = true; } else if (formConfig.getFormProcessor().GetType() == typeof(RingForm)) { displayRingControls = true; } /* TRUNK */ //start position Vector3 startPosition = formConfig.getStartPosition (); startPositionX = startPosition.x; startPositionY = startPosition.y; startPositionZ = startPosition.z; GUI.Label (new Rect (20, 40, 150, 20), "Trunk Start Position X"); startPositionX = GUI.HorizontalSlider (new Rect (180, 45, 180, 20), startPositionX, -5, 5); GUI.Label (new Rect (20, 70, 150, 20), "Trunk Start Position Y"); startPositionY = GUI.HorizontalSlider (new Rect (180, 75, 180, 20), startPositionY, -5, 5); GUI.Label (new Rect (20, 100, 150, 20), "Trunk Start Position Z"); startPositionZ = GUI.HorizontalSlider (new Rect (180, 105, 180, 20), startPositionZ, -5, 5); startPosition.x = startPositionX; startPosition.y = startPositionY; startPosition.z = startPositionZ; formConfig.setStartPosition (startPosition); // start rotation Vector3 startRotation = formConfig.getStartRotation (); startRotationX = startRotation.x; startRotationY = startRotation.y; startRotationZ = startRotation.z; if (displayLoxodromeControls) { GUI.Label (new Rect (370, 40, 150, 20), "Rhumb Angle"); //startRotationX = GUI.HorizontalSlider (new Rect (520, 45, 180, 20), startRotationX, 0.1f, 2f); startRotationX = GUI.HorizontalSlider (new Rect (520, 45, 180, 20), startRotationX, 0, 2f); } if (displayStarfishControls) { GUI.Label (new Rect (370, 40, 150, 20), "Trunk Start Rotation X"); startRotationX = GUI.HorizontalSlider (new Rect (520, 45, 180, 20), startRotationX, 0, 360); } if (displayStarfishControls || displayRingControls) { GUI.Label (new Rect (370, 70, 150, 20), "Trunk Start Rotation Y"); startRotationY = GUI.HorizontalSlider (new Rect (520, 75, 180, 20), startRotationY, 0, 360); GUI.Label (new Rect (370, 100, 150, 20), "Trunk Start Rotation Z"); startRotationZ = GUI.HorizontalSlider (new Rect (520, 105, 180, 20), startRotationZ, 0, 360); } startRotation.x = startRotationX; startRotation.y = startRotationY; startRotation.z = startRotationZ; formConfig.setStartRotation (startRotation); //trunk position delta Vector3 trunkPositionDelta = formConfig.getTrunkPositionDelta (); trunkPositionDeltaX = trunkPositionDelta.x; trunkPositionDeltaY = trunkPositionDelta.y; trunkPositionDeltaZ = trunkPositionDelta.z; if (displayStarfishControls || displayRingControls) { GUI.Label (new Rect (20, 130, 150, 20), "Trunk Position Delta X"); trunkPositionDeltaX = GUI.HorizontalSlider (new Rect (180, 135, 180, 20), trunkPositionDeltaX, -1, 1); GUI.Label (new Rect (20, 160, 150, 20), "Trunk Position Delta Y"); trunkPositionDeltaY = GUI.HorizontalSlider (new Rect (180, 165, 180, 20), trunkPositionDeltaY, -1, 1); GUI.Label (new Rect (20, 190, 150, 20), "Trunk Position Delta Z"); trunkPositionDeltaZ = GUI.HorizontalSlider (new Rect (180, 195, 180, 20), trunkPositionDeltaZ, -1, 1); } trunkPositionDelta.x = trunkPositionDeltaX; trunkPositionDelta.y = trunkPositionDeltaY; trunkPositionDelta.z = trunkPositionDeltaZ; formConfig.setTrunkPositionDelta (trunkPositionDelta); //trunk rotation delta Vector3 trunkRotatiomnDelta = formConfig.getTrunkRotationDelta (); trunkRotationDeltaX = trunkRotatiomnDelta.x; trunkRotationDeltaY = trunkRotatiomnDelta.y; trunkRotationDeltaZ = trunkRotatiomnDelta.z; if (displayStarfishControls) { GUI.Label (new Rect (20, 220, 150, 20), "Trunk Rotation Delta X"); trunkRotationDeltaX = GUI.HorizontalSlider (new Rect (180, 225, 180, 20), trunkRotationDeltaX, -60, 60); } if (displayStarfishControls || displayRingControls) { GUI.Label (new Rect (20, 250, 150, 20), "Trunk Rotation Delta Y"); trunkRotationDeltaY = GUI.HorizontalSlider (new Rect (180, 255, 180, 20), trunkRotationDeltaY, -60, 60); GUI.Label (new Rect (20, 280, 150, 20), "Trunk Rotation Delta Z"); trunkRotationDeltaZ = GUI.HorizontalSlider (new Rect (180, 285, 180, 20), trunkRotationDeltaZ, -60, 60); } trunkRotatiomnDelta.x = trunkRotationDeltaX; trunkRotatiomnDelta.y = trunkRotationDeltaY; trunkRotatiomnDelta.z = trunkRotationDeltaZ; formConfig.setTrunkRotationDelta (trunkRotatiomnDelta); //trunk iterations trunkIterations = formConfig.getTrunkIterations (); GUI.Label (new Rect (20, 310, 150, 20), "Trunk Iterations *"); trunkIterations = GUI.HorizontalSlider (new Rect (180, 315, 180, 20), trunkIterations, 1, 24); formConfig.setTrunkIterations ((int)trunkIterations); /* BRANCH */ //branch position delta Vector3 branchPositionDelta = formConfig.getBranchPositionDelta (); branchPositionDeltaX = branchPositionDelta.x; branchPositionDeltaY = branchPositionDelta.y; branchPositionDeltaZ = branchPositionDelta.z; if (displayRingControls || displayLoxodromeControls) { GUI.Label (new Rect (370, 130, 150, 20), "Radius"); branchPositionDeltaX = GUI.HorizontalSlider (new Rect (520, 135, 180, 20), branchPositionDeltaX, 0.2f, 1); } if (displayStarfishControls) { GUI.Label (new Rect (370, 130, 150, 20), "Branch Position Delta X"); branchPositionDeltaX = GUI.HorizontalSlider (new Rect (520, 135, 180, 20), branchPositionDeltaX, -1, 1); GUI.Label (new Rect (370, 160, 150, 20), "Branch Position Delta Y"); branchPositionDeltaY = GUI.HorizontalSlider (new Rect (520, 165, 180, 20), branchPositionDeltaY, -1, 1); GUI.Label (new Rect (370, 190, 150, 20), "Branch Position Delta Z"); branchPositionDeltaZ = GUI.HorizontalSlider (new Rect (520, 195, 180, 20), branchPositionDeltaZ, -1, 1); } branchPositionDelta.x = branchPositionDeltaX; branchPositionDelta.y = branchPositionDeltaY; branchPositionDelta.z = branchPositionDeltaZ; formConfig.setBranchPositionDelta (branchPositionDelta); //branch rotation delta Vector3 branchRotationDelta = formConfig.getBranchTwistDelta (); branchRotationDeltaX = branchRotationDelta.x; branchRotationDeltaY = branchRotationDelta.y; branchRotationDeltaZ = branchRotationDelta.z; if (displayStarfishControls) { GUI.Label (new Rect (370, 220, 150, 20), "Branch Rotation Delta X"); branchRotationDeltaX = GUI.HorizontalSlider (new Rect (520, 225, 180, 20), branchRotationDeltaX, -30, 30); GUI.Label (new Rect (370, 250, 150, 20), "Branch Rotation Delta Y"); branchRotationDeltaY = GUI.HorizontalSlider (new Rect (520, 255, 180, 20), branchRotationDeltaY, -30, 30); GUI.Label (new Rect (370, 280, 150, 20), "Branch Rotation Delta Z"); branchRotationDeltaZ = GUI.HorizontalSlider (new Rect (520, 285, 180, 20), branchRotationDeltaZ, -30, 30); } branchRotationDelta.x = branchRotationDeltaX; branchRotationDelta.y = branchRotationDeltaY; branchRotationDelta.z = branchRotationDeltaZ; formConfig.setBranchTwistDelta (branchRotationDelta); //branch iterations branchIterations = formConfig.getStackIterations (); GUI.Label (new Rect (370, 310, 150, 20), "Branch Iterations *"); branchIterations = GUI.HorizontalSlider (new Rect (520, 315, 180, 20), branchIterations, 1, 60); formConfig.setStackIterations ((int)branchIterations); /* STACK */ //stack start rotation Vector3 stackStartRotation = formConfig.getStackStartTwist (); stackStartRotationX = stackStartRotation.x; stackStartRotationY = stackStartRotation.y; stackStartRotationZ = stackStartRotation.z; GUI.Label (new Rect (20, 340, 150, 20), "Stack Start Rotation X"); stackStartRotationX = GUI.HorizontalSlider (new Rect (180, 345, 180, 20), stackStartRotationX, 0, 360); GUI.Label (new Rect (20, 370, 150, 20), "Stack Start Rotation Y"); stackStartRotationY = GUI.HorizontalSlider (new Rect (180, 375, 180, 20), stackStartRotationY, 0, 360); GUI.Label (new Rect (20, 400, 150, 20), "Stack Start Rotation Z"); stackStartRotationZ = GUI.HorizontalSlider (new Rect (180, 405, 180, 20), stackStartRotationZ, 0, 360); stackStartRotation.x = stackStartRotationX; stackStartRotation.y = stackStartRotationY; stackStartRotation.z = stackStartRotationZ; formConfig.setStackStartTwist (stackStartRotation); //stack rotation delta Vector3 stackRotationDelta = formConfig.getStackTwistDelta (); stackRotationDeltaX = stackRotationDelta.x; stackRotationDeltaY = stackRotationDelta.y; stackRotationDeltaZ = stackRotationDelta.z; GUI.Label (new Rect (370, 340, 150, 20), "Stack Rotation Delta X"); stackRotationDeltaX = GUI.HorizontalSlider (new Rect (520, 345, 180, 20), stackRotationDeltaX, -30, 30); GUI.Label (new Rect (370, 370, 150, 20), "Stack Rotation Delta Y"); stackRotationDeltaY = GUI.HorizontalSlider (new Rect (520, 375, 180, 20), stackRotationDeltaY, -30, 30); GUI.Label (new Rect (370, 400, 150, 20), "Stack Rotation Delta Z"); stackRotationDeltaZ = GUI.HorizontalSlider (new Rect (520, 405, 180, 20), stackRotationDeltaZ, -30, 30); stackRotationDelta.x = stackRotationDeltaX; stackRotationDelta.y = stackRotationDeltaY; stackRotationDelta.z = stackRotationDeltaZ; formConfig.setStackTwistDelta (stackRotationDelta); /* MUTATION STRENGTH */ mutationStrength = formConfig.getMutationStrength (); GUI.Label (new Rect (20, 430, 150, 20), "Mutation Strength"); mutationStrength = GUI.HorizontalSlider (new Rect (180, 435, 180, 20), mutationStrength, 0.5f, 3.5f); formConfig.setMutationStrength (mutationStrength); /* SCALING */ scaling = formConfig.getScaleDelta (); GUI.Label (new Rect (370, 430, 150, 20), "Scaling *"); scaling = GUI.HorizontalSlider (new Rect (520, 435, 180, 20), scaling, 0.9f, 1.1f); formConfig.setScaleDelta (scaling); /* STACK SHAPE */ selectedShape = formConfig.getStackShapeIndex (); selectedShape = GUI.SelectionGrid (new Rect (20, 460, 200, 60), selectedShape, shapeGridStrings, 2); formConfig.setStackShape (selectedShape); /* Form Processor */ if (formConfig.getFormProcessor().GetType() == typeof(StarfishForm)) { selectedFormProcessor = 0; } else if (formConfig.getFormProcessor().GetType() == typeof(LoxodromeForm)) { selectedFormProcessor = 1; } else if (formConfig.getFormProcessor().GetType() == typeof(RingForm)) { selectedFormProcessor = 2; } selectedFormProcessor = GUI.SelectionGrid (new Rect (20, 525, 200, 60), selectedFormProcessor, formProcessorStrings, 2); if (selectedFormProcessor == 0) { formConfig.setFormProcessor(new StarfishForm()); } else if (selectedFormProcessor == 1) { formConfig.setFormProcessor(new LoxodromeForm()); } else if (selectedFormProcessor == 2) { formConfig.setFormProcessor(new RingForm()); } /* Configurations */ selectedConfiguration = formConfig.getIndex (); selectedConfiguration = GUI.SelectionGrid (new Rect (230, 460, 300, 90), selectedConfiguration, configurationGridStrings, 3); if (selectedConfiguration != formConfig.getIndex ()) { //selected configuration changed callback.changeSelectedFormConfig(selectedConfiguration); } /* Control buttons */ if (GUI.Button(new Rect(540, 460, 160, 26), "Reset Config")) { formConfig.reset(); } if (GUI.Button(new Rect(540, 490, 160, 26), "Create Form")) { callback.createNewBrush(); } if (GUI.Button(new Rect(540, 520, 160, 26), "Clear Brush")) { callback.clearBrush(); } /* Load and Save buttons */ if (GUI.Button(new Rect(230, 560, 147, 26), "Load")) { ConfigXML.loadConfiguration(formConfig); } if (GUI.Button(new Rect(383, 560, 147, 26), "Save")) { ConfigXML.saveConfiguration(formConfig); } }
public static void loadConfiguration(IFormConfiguration formConfiguration) { string fileSavePath = Application.persistentDataPath + "/FormConfigSlot" + (formConfiguration.getIndex() + 1) + ".xml"; Debug.Log ("Load:" + fileSavePath); XmlDocument xmlDoc = new XmlDocument(); if (System.IO.File.Exists (fileSavePath)) { xmlDoc.Load(new XmlTextReader(fileSavePath)); XmlElement root = xmlDoc.DocumentElement; float x = float.Parse(root.GetAttribute("branchPositionDeltaX")); float y = float.Parse(root.GetAttribute("branchPositionDeltaY")); float z = float.Parse(root.GetAttribute("branchPositionDeltaZ")); formConfiguration.setBranchPositionDelta(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("branchTwistDeltaX")); y = float.Parse(root.GetAttribute("branchTwistDeltaY")); z = float.Parse(root.GetAttribute("branchTwistDeltaZ")); formConfiguration.setBranchTwistDelta(new Vector3(x, y, z)); formConfiguration.setIndex(int.Parse(root.GetAttribute("index"))); formConfiguration.setMutationStrength(float.Parse(root.GetAttribute("mutationStrength"))); formConfiguration.setScaleBranch(bool.Parse(root.GetAttribute("scaleBranch"))); formConfiguration.setScaleDelta(float.Parse(root.GetAttribute("scaleDelta"))); formConfiguration.setScaleTrunk(bool.Parse(root.GetAttribute("scaleTrunk"))); formConfiguration.setStackIterations(int.Parse(root.GetAttribute("stackIterations"))); formConfiguration.setStackShape(int.Parse(root.GetAttribute("stackShapeIndex"))); x = float.Parse(root.GetAttribute("stackStartTwistX")); y = float.Parse(root.GetAttribute("stackStartTwistY")); z = float.Parse(root.GetAttribute("stackStartTwistZ")); formConfiguration.setStackStartTwist(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("stackTwistDeltaX")); y = float.Parse(root.GetAttribute("stackTwistDeltaY")); z = float.Parse(root.GetAttribute("stackTwistDeltaZ")); formConfiguration.setStackTwistDelta(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("startPositionX")); y = float.Parse(root.GetAttribute("startPositionY")); z = float.Parse(root.GetAttribute("startPositionZ")); formConfiguration.setStartPosition(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("startRotationX")); y = float.Parse(root.GetAttribute("startRotationY")); z = float.Parse(root.GetAttribute("startRotationZ")); formConfiguration.setStartRotation(new Vector3(x, y, z)); formConfiguration.setStartScale(float.Parse(root.GetAttribute("startScale"))); formConfiguration.setTrunkIterations(int.Parse(root.GetAttribute("trunkIterations"))); x = float.Parse(root.GetAttribute("trunkPositionDeltaX")); y = float.Parse(root.GetAttribute("trunkPositionDeltaY")); z = float.Parse(root.GetAttribute("trunkPositionDeltaZ")); formConfiguration.setTrunkPositionDelta(new Vector3(x, y, z)); x = float.Parse(root.GetAttribute("trunklRotationDeltaX")); y = float.Parse(root.GetAttribute("trunklRotationDeltaY")); z = float.Parse(root.GetAttribute("trunklRotationDeltaZ")); formConfiguration.setTrunkRotationDelta(new Vector3(x, y, z)); //perfom bounds checks and fix formConfiguration.validateAndFix(); } else { Debug.Log("File Not Found:" + fileSavePath); } }