Ejemplo n.º 1
0
    // 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);
            }
        }
Ejemplo n.º 3
0
    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));
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
    // Use this for initialization
    void Start()
    {
        setbutton  = GameObject.Find("Set");
        _SetObject = setbutton.GetComponent <SetObject> ();

        game_manager = GameObject.Find("GameManager");

        _Question = game_manager.GetComponent <Question> ();
    }
Ejemplo n.º 7
0
        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;
     }
 }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
0
        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);
            }
        }
Ejemplo n.º 13
0
        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 { }
        }
Ejemplo n.º 15
0
        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);
            }
        }
Ejemplo n.º 16
0
    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;
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 21
0
        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
        }