// Use this for initialization void Start() { setbutton = GameObject.Find("Set"); resetbutton = GameObject.Find("Reset"); _SetObject = setbutton.GetComponent <SetObject> (); _ResetObject = resetbutton.GetComponent <SetObject> (); sprites_lengs = object_Sprites.Length; while (question1 == question2) { question1 = Random.Range(0, sprites_lengs); question2 = Random.Range(0, sprites_lengs); } correct = Random.Range(1, 3); Debug.Log("問題1は" + question1); Debug.Log("問題2は" + question2); GameObject.Find("answer1").GetComponent <Image> ().sprite = object_Sprites [question1]; GameObject.Find("answer2").GetComponent <Image> ().sprite = object_Sprites [question2]; if (correct == 1) { _SetObject.Question_Object = invisible_Objects [question1]; _ResetObject.Question_Object = invisible_Objects [question1]; } else if (correct == 2) { _SetObject.Question_Object = invisible_Objects [question2]; _ResetObject.Question_Object = invisible_Objects [question2]; } }
/// <summary> /// Updates the GUI to show the information of the passed SetObject /// </summary> /// <param name="setObject"></param> public void UpdateSetObject(SetObject setObject) { if (setObject != null) { Text = $"{ProgramName} - {setObject.ObjectType} ({setObject.ObjectID})"; // Transform NumericUpDown_TransIndex.Maximum = setObject.Children.Length; UpdateTransform(setObject, 0); ComboBox_ObjectType.Text = setObject.ObjectType; NumericUpDown_ObjectID.Value = setObject.ObjectID; // Clear the Custom Data list ListView_CustomData.Items.Clear(); // Fill Custom Data list foreach (var parameter in setObject.CustomData) { var lvi = new ListViewItem(parameter.Key); // Parameter Name lvi.SubItems[0].Text = parameter.Key; // Parameter Value lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.SubItems[1].Text = parameter.Value.Data.ToString(); lvi.Tag = parameter.Value.DataType; ListView_CustomData.Items.Add(lvi); } UpdateParameters(setObject); } }
public void AddMeeting() { feedbackText.text = ""; if (String.IsNullOrEmpty(meetingIdField.text) || String.IsNullOrEmpty(meetingNameField.text)) { feedbackText.text = "Must complete all of the required fields to add a meeting"; return; } meetingNameField.text = meetingNameField.text.Replace(" ", ""); List <SetObject> meetingList = new List <SetObject>(); Dictionary <string, object> meetingData = new Dictionary <string, object>() { { "meeting_id", meetingIdField.text }, { "building_id", buildingId }, { "meeting_password", passwordField.text } }; string meetingJson = JsonUtility.ToJson(meetingData); SetObject meeting = new SetObject() { ObjectName = meetingNameField.text, DataObject = meetingData }; ObjectResult entry = new ObjectResult() { ObjectName = meetingNameField.text, DataObject = meetingJson }; meetingList.Add(meeting); myMeetings.Add(meetingNameField.text, entry); PlayFabDataAPI.SetObjects(new SetObjectsRequest() { Entity = LoginManager.instance.playerEntity, Objects = meetingList }, (setResult) => { ReloadMeetings(); meetingNameField.text = ""; meetingIdField.text = ""; passwordField.text = ""; buildingDropDown.GetComponent <Dropdown>().value = 0; buildingId = 0; feedbackText.color = new Color(103f, 255f, 157f); feedbackText.text = "Meeting added successfully!"; }, (error) => { Debug.LogError(error.GenerateErrorReport()); feedbackText.color = new Color(255f, 81f, 81f); feedbackText.text = "Too many meetings, you have to delete one first."; } ); }
public static void WriteDefaultCustomData(SetObject setObject) { setObject.CustomData.Add("Unknown1", new SetObjectParam(typeof(ushort), (ushort)0)); setObject.CustomData.Add("Unknown2", new SetObjectParam(typeof(uint), 0u)); setObject.CustomData.Add("Unknown3", new SetObjectParam(typeof(uint), 0u)); setObject.CustomData.Add("Unknown4", new SetObjectParam(typeof(float), 0f)); setObject.CustomData.Add("RangeIn", new SetObjectParam(typeof(float), 1000f)); setObject.CustomData.Add("RangeOut", new SetObjectParam(typeof(float), 1200f)); }
public static string GetObjModelExtra(SetObject obj, SetObjectType type, string startName = null) { // Get the correct extra's model name string mdlName = startName; foreach (var extra in type.Extras) { if (extra.Type.ToLower() != "model") { continue; } if (string.IsNullOrEmpty(extra.Condition) || LuaScript.EvaluateObjectCondition(obj, type, extra.Condition)) { mdlName = extra.Value; break; } } if (string.IsNullOrEmpty(mdlName)) { return(mdlName); } // If the model name is actually supposed to be the value of // another parameter (e.g. in Gismos), get the name from that instead. if (mdlName.IndexOf('.') == -1) { int mdlNameParamIndex = type.GetParameterIndex(mdlName); if (mdlNameParamIndex != -1) { mdlName = (obj.Parameters[ mdlNameParamIndex].Data as string); } } else { int openIndex = mdlName.IndexOf('{'); int closeIndex = mdlName.IndexOf('}'); if (openIndex != -1 && closeIndex > openIndex) { ++openIndex; if (int.TryParse(mdlName.Substring(openIndex, closeIndex - openIndex), out int index) && index >= 0 && index < type.Parameters.Count) { mdlName = mdlName.Replace($"{{{index}}}", (obj.Parameters[index].Data as string)); } } } return(mdlName); }
// Use this for initialization void Start() { setbutton = GameObject.Find("Set"); _SetObject = setbutton.GetComponent <SetObject> (); game_manager = GameObject.Find("GameManager"); _Question = game_manager.GetComponent <Question> (); }
public void AddCustomData(SetObject obj, string name, string type, object data) { if (obj.CustomData.ContainsKey(name)) { return; } var objParam = GenSetObjectParam(type, data); obj.CustomData.Add(name, objParam); }
public void SelectSetObject(SetObject setObject) { SelectedSetObject = setObject; if (SelectedSetObject != null) { UpdateSetObject(SelectedSetObject); groupBox1.Enabled = true; } else { groupBox1.Text = "Object: (No Object Selected)"; groupBox1.Enabled = false; } }
public AddParamForm(SetObject setObject) : this() { SetObject = setObject; comboBox1.SelectedItem = typeof(uint); comboBox1.Items.Add(typeof(string)); comboBox1.Items.Add(typeof(bool)); comboBox1.Items.Add(typeof(byte)); comboBox1.Items.Add(typeof(uint)); comboBox1.Items.Add(typeof(int)); comboBox1.Items.Add(typeof(float)); comboBox1.Items.Add(typeof(Vector3)); comboBox1.Items.Add(typeof(Quaternion)); }
public static VPModel GetObjectModelInfo(SetObject obj, SetObjectType type, out Vector3 offsetPos, bool loadModels = true) { // Get offset position/scale (if any) offsetPos = GetObjOffsetPos(type); obj.Transform.Scale = GetObjScale(type, obj); // Load Object Model string mdlName = null; if (loadModels && type != null) { mdlName = GetObjModelExtra(obj, type); mdlName = Path.GetFileNameWithoutExtension(mdlName); } return(GetObjectModel(mdlName)); }
public static void LoadObjectResources(GameEntry gameType, SetObject obj, bool loadModels = true) { // Get Object Template (if any) SetObjectType type = null; if (gameType.ObjectTemplates.ContainsKey(obj.ObjectType)) { type = gameType.ObjectTemplates[obj.ObjectType]; } // Update Object Info var mdl = GetObjectModelInfo(obj, type, out Vector3 offsetPos, loadModels); // Spawn Object in World SpawnObject(obj, mdl, offsetPos, gameType.UnitMultiplier); }
/// <summary> /// Updates the GUI to show all the parameters from the passed SetObject /// </summary> /// <param name="setObject"></param> public void UpdateParameters(SetObject setObject) { // Clear the Parameter list ListView_Param.Items.Clear(); // Fill the Parameter list foreach (var parameter in setObject.Parameters) { var lvi = new ListViewItem(parameter.Data as string); var setObjectType = TemplatesColors[setObject.ObjectType]; var setObjectParams = setObjectType.Parameters; string parameterName = parameter.DataType.ToString(); int parameterIndex = setObject.Parameters.IndexOf(parameter); if (parameterIndex < setObjectParams.Count && parameterIndex != -1) { var parameterType = setObjectParams.ElementAt(parameterIndex); lvi.ToolTipText = parameterType.Description; parameterName = parameterType.Name; if (parameter.DataType != parameterType.DataType) { lvi.ForeColor = Color.OrangeRed; } } else { lvi.ForeColor = Color.Red; } // Parameter Name lvi.SubItems[0].Text = parameterName; // Parameter Value lvi.SubItems.Add(new ListViewItem.ListViewSubItem()); lvi.SubItems[1].Text = parameter.Data.ToString(); lvi.Tag = parameter; ListView_Param.Items.Add(lvi); } }
public static Vector3 GetObjScale(SetObjectType type, SetObject obj) { if (type == null) { return(new Vector3(1, 1, 1)); } var scaleExtra = type.GetExtra("scale"); if (scaleExtra != null && !string.IsNullOrEmpty(scaleExtra.Value)) { if (float.TryParse(scaleExtra.Value, out float s)) { return(new Vector3(s, s, s)); } // TODO: Maybe try to parse it as a Vector3 as well? else { int scaleParamIndex = type.GetParameterIndex(scaleExtra.Value); if (scaleParamIndex != -1) { var param = obj.Parameters[scaleParamIndex]; if (param != null) { if (param.DataType == typeof(Vector3)) { return((Vector3)param.Data); } else if (param.DataType == typeof(float)) { float f = (float)param.Data; return(new Vector3(f, f, f)); } } } } } return(new Vector3(1, 1, 1)); }
private void button_Click(object sender, EventArgs e) { try { if (DialogResult.HasFlag(DialogResult.OK)) { // Creates a new SetObjectType if (!Form.TemplatesColors.ContainsKey(comboBox1.Text)) { Form.TemplatesColors.Add(comboBox1.Text, new SetObjectType()); } var setObject = new SetObject( Form.TemplatesColors[comboBox1.Text], comboBox1.Text, GenerateID(Form.SetData)); MainForm.WriteDefaultCustomData(setObject); Form.SetData.Objects.Add(setObject); } } catch { } }
public static bool EvaluateObjectCondition(SetObject obj, SetObjectType template, string condition) { try { var s = new Script(); for (int i = 0; i < template.Parameters.Count; ++i) { var param = template.Parameters[i]; s.Globals[param.Name] = obj.Parameters[i].Data; } string txt = $"return ({condition.Replace("!=", "~=")})"; return(s.DoString(txt).Boolean); } catch (Exception ex) { LuaTerminal.LogError($"ERROR: {ex.Message}"); return(false); } }
private void DeleteClicked(string key) { meetingNameField.text = ""; meetingIdField.text = ""; passwordField.text = ""; buildingDropDown.GetComponent <Dropdown>().value = 0; buildingId = 0; feedbackText.text = ""; myMeetings.Remove(key); List <SetObject> meetingList = new List <SetObject>(); SetObject meeting = new SetObject() { ObjectName = key, DeleteObject = true }; meetingList.Add(meeting); PlayFabDataAPI.SetObjects(new SetObjectsRequest() { Entity = player.playerEntity, Objects = meetingList }, (setResult) => { feedbackText.text = "Meeting deleted successfully"; ReloadMeetings(); }, (error) => { Debug.LogError(error.GenerateErrorReport()); feedbackText.color = new Color(255f, 81f, 81f); feedbackText.text = "Couldn't delete meeting."; } ); }
private void Duplicate_SOBJ_ToolStripMenuItem_Click(object sender, EventArgs e) { if (SelectedSetObject != null) { var sobj = new SetObject(); sobj.ObjectID = NewObjectForm.GenerateID(SetData); sobj.ObjectType = SelectedSetObject.ObjectType; sobj.Transform = new SetObjectTransform(); sobj.Transform.Position = SelectedSetObject.Transform.Position; sobj.Transform.Rotation = SelectedSetObject.Transform.Rotation; sobj.Transform.Scale = SelectedSetObject.Transform.Scale; // Copy Params foreach (var param in SelectedSetObject.Parameters) { var newParam = new SetObjectParam(); newParam.Data = param.Data; newParam.DataType = param.DataType; sobj.Parameters.Add(newParam); } // Copy Transforms var transforms = new List <SetObjectTransform>(); foreach (var transform in SelectedSetObject.Children) { var newTransform = new SetObjectTransform(); newTransform.Position = transform.Position; newTransform.Rotation = transform.Rotation; newTransform.Scale = transform.Scale; transforms.Add(newTransform); } sobj.Children = transforms.ToArray(); SetData.Objects.Add(sobj); SelectSetObject(sobj); UpdateObjects(); } }
/// <summary> /// Updates the GUI to show the selected transform from the passed SetObject /// </summary> /// <param name="setObject"></param> /// <param name="index"></param> public void UpdateTransform(SetObject setObject, int index) { var objectPos = setObject.Transform.Position; var objectRot = setObject.Transform.Rotation.ToEulerAngles(); if (index != 0) { objectPos = setObject.Children[index - 1].Position; objectRot = setObject.Children[index - 1].Rotation.ToEulerAngles(); } groupBox1.Text = $"Object: {setObject.ObjectType} " + $"(X: {objectPos.X}, Y: {objectPos.Y}, Z: {objectPos.Z})"; if (index != 0) { groupBox1.Text += " (Child)"; } NumericUpDown_X.Value = (decimal)objectPos.X; NumericUpDown_Y.Value = (decimal)objectPos.Y; NumericUpDown_Z.Value = (decimal)objectPos.Z; NumericUpDown_Pitch.Value = (decimal)objectRot.X; NumericUpDown_Yaw.Value = (decimal)objectRot.Y; NumericUpDown_Roll.Value = (decimal)objectRot.Z; }
public static void SpawnObject(SetObject obj, string modelName, Vector3 posOffset, float unitMultiplier = 1) { Program.MainUIInvoke(() => { var instance = AddObjectInstance(modelName, (obj.Transform.Position * unitMultiplier) + posOffset, obj.Transform.Rotation, obj.Transform.Scale, obj); if (obj.Children == null) { return; } foreach (var child in obj.Children) { if (child == null) { continue; } AddTransform(modelName, unitMultiplier, child, posOffset); } }); }
public static XElement WriteObject(SetObject obj_, SetObjectType type = null) { if (!(obj_ is GensSetObject)) { throw new Exception("Not a GensSetObject!"); } var obj = obj_ as GensSetObject; // Parameters var elem = new XElement(obj.ObjectType); for (int i = 0; i < obj.Parameters.Count; ++i) { elem.Add(new XElement((type == null) ? $"Parameter{i + 1}" : type.Parameters[i].Name, obj.Parameters[i].Data)); } // MultiSetTransforms if (obj.Children.Length > 0) { var multiSetParam = new XElement("MultiSetParam"); for (int i = 0; i < obj.Children.Length;) { var multiSetElem = new XElement("Element"); multiSetElem.AddElem("Index", ++i); WriteTransform(obj.Children[i], multiSetElem); multiSetParam.Add(multiSetElem); } elem.AddElem("BaseLine", 0); elem.AddElem("Count", obj.Children.Length + 1); // TODO: Is this right? elem.AddElem("Direction", 0); elem.AddElem("Interval", 1.5f); elem.AddElem("IntervalBase", 0); elem.AddElem("PositionBase", 0); elem.AddElem("RotationBase", 0); elem.Add(multiSetParam); } // Transform WriteTransform(obj.Transform, elem); // Special Parameters elem.AddElem("Range", obj.GetCustomDataValue <float>("Range", 100)); elem.AddElem("SetObjectID", obj.ObjectID); elem.AddElem("Target", obj.TargetID); elem.AddElem("TargetPosition", obj.TargetPosition); foreach (var customData in obj.CustomData) { if (customData.Key == "Range") { continue; } elem.Add(new XElement( customData.Key, customData.Value)); } return(elem); }
private void AssetsList_MouseDoubleClick(object sender, MouseEventArgs e) { // Get Clicked Item if (assetsList.SelectedItems.Count < 1) { return; } var item = assetsList.SelectedItems[0]; // Folders if (item.ImageIndex == FolderImageIndex) { currentFolder = (string)item.Tag; searchBox.ShowingHint = true; RefreshGUI(); } // Templates else if (item.Tag is SetObjectType template) { // Generate Object if (Data.CurrentSetLayer == null) { return; } var obj = new SetObject(template, template.Name, (uint)Data.CurrentSetLayer.Objects.Count); Data.CurrentSetLayer.Objects.Add(obj); var script = Stage.Script; if (script == null) { return; // TODO: idk maybe throw an error?? } try { script.Call("InitSetObject", obj, template); } catch (Exception ex) { LuaTerminal.LogError($"ERROR: {ex.Message}"); } // Set Object Position var pos = Viewport.CameraPos + (Viewport.CameraForward * 10); pos /= Stage.GameType.UnitMultiplier; obj.Transform.Position = Types.ToHedgeLib(pos); // Load Object Resources (models, etc.) and Spawn Object Data.LoadObjectResources(Stage.GameType, obj); Viewport.SelectedInstances.Clear(); Viewport.SelectObject(obj); // Refresh UI Program.MainForm.RefreshGUI(); Program.MainForm.RefreshSceneView(); } // Models else if (item.Tag is Dictionary <string, VPModel> group) { var pos = Viewport.CameraPos + (Viewport.CameraForward * 10); pos /= Stage.GameType.UnitMultiplier; // TODO: Set proper instance name var instance = new VPObjectInstance(pos, $"{item.Text}{group.Count}"); Data.AddInstance(item.Text, instance, group); Viewport.SelectedInstances.Clear(); Viewport.SelectObject(instance); // Refresh UI Program.MainForm.RefreshGUI(); Program.MainForm.RefreshSceneView(); } // Materials else if (item.Tag is Asset <GensMaterial> mat) { var matDialog = new MaterialEditor(mat.Data, item.Text, $"{mat.Directory.FullPath}\\{item.Text}{Types.MaterialExtension}"); matDialog.ShowDialog(); } // TODO: Open other types of files }