Example #1
0
        static void Main(string[] args)
        {
            var client = new OcularPlaneClient("localhost", 9999);

            client.Ping();

            Console.WriteLine("Connected!");
            Console.WriteLine();

            Console.WriteLine("Containers:");
            foreach (var containerName in client.GetContainerNames())
            {
                Console.WriteLine($"--> {containerName}");
            }
            Console.WriteLine();

            Console.WriteLine("Instances in container 1:");
            var instances = client.GetInstancesInContainer("container1");

            foreach (var instance in instances)
            {
                Console.WriteLine($"--> {instance.Name} ({instance.TypeName}) with id {instance.InstanceId}");
            }
            Console.WriteLine();

            Console.WriteLine($"Properties of {instances[0].Name}:");
            var details = client.GetInstanceDetails(instances[0].InstanceId);

            foreach (var property in details.Properties)
            {
                Console.WriteLine($"--> {property.Name} ({property.TypeName}): {property.ValueAsString}");
            }
            Console.WriteLine();

            Console.WriteLine("Changing property values");
            client.SetPropertyValue(details.InstanceId, details.Properties[0].Name, "122");
            client.SetPropertyValue(details.InstanceId, details.Properties[1].Name, "STRING");
            client.SetPropertyValue(details.InstanceId, details.Properties[2].Name, "Value2");
            Console.WriteLine("Done!");
            Console.WriteLine();

            Console.WriteLine($"Properties of {instances[0].Name}:");
            details = client.GetInstanceDetails(instances[0].InstanceId);
            foreach (var property in details.Properties)
            {
                Console.WriteLine($"--> {property.Name} ({property.TypeName}): {property.ValueAsString}");
            }
            Console.WriteLine();

            Console.WriteLine($"Methods in container:");
            var methods = client.GetMethodsInContainer("container1");

            foreach (var methodReference in methods)
            {
                Console.Write($"--> {methodReference.Name} ({methodReference.MethodId}) with parameters:");
                foreach (var parameterReference in methodReference.Parameters)
                {
                    Console.WriteLine($"----> {parameterReference.ParameterName} of type {parameterReference.TypeName}");
                }
            }
            Console.WriteLine();

            Console.WriteLine("Setting values:");
            var parameters = new Dictionary <string, string>
            {
                { "intVal", "100" },
                { "stringVal", "weeeeee" },
                { "enumVal", "Value2" }
            };

            client.ExecuteMethod(methods[0].MethodId, parameters);

            Console.WriteLine($"Properties of {instances[0].Name}:");
            details = client.GetInstanceDetails(instances[0].InstanceId);
            foreach (var property in details.Properties)
            {
                Console.WriteLine($"--> {property.Name} ({property.TypeName}): {property.ValueAsString}");
            }
            Console.WriteLine();

            Console.WriteLine();
            Console.WriteLine("Finished!");
            Console.ReadLine();
        }
        private void UpdateGridCategories()
        {
            MainGlueWindow.Self.Invoke(() =>
            {
                var selectedInstance = objectListViewModel?.SelectedItem?.Tag;
                if (selectedInstance != null)
                {
                    bool shouldReconstructGrid = lastInstanceGuid != selectedInstance.InstanceId;

                    if (shouldReconstructGrid)
                    {
                        grid.Categories.Clear();

                        var mainCategory      = new MemberCategory("Main Variables");
                        var debuggingCategory = new MemberCategory("Debugging Variables");

                        var details = client.GetInstanceDetails(selectedInstance.InstanceId);
                        foreach (var property in details.Properties)
                        {
                            var member               = new ConnectedInstanceMember();
                            member.Client            = client;
                            member.InstanceReference = selectedInstance;
                            member.PropertyReference = property;
                            member.Type              = TypeManager.GetTypeFromString(property.TypeName);

                            member.Name        = property.Name;
                            member.DisplayName = FlatRedBall.Utilities.StringFunctions.InsertSpacesInCamelCaseString(member.Name);

                            // eventually find the matching NOS and update it.
                            bool shouldAppearInMainList = false;// glueNamedObject.HasCustomVariable(member.Name);

                            if (shouldAppearInMainList)
                            {
                                mainCategory.Members.Add(member);
                            }
                            else
                            {
                                debuggingCategory.Members.Add(member);
                            }
                        }

                        if (mainCategory.Members.Count != 0)
                        {
                            grid.Categories.Add(mainCategory);
                        }
                        if (debuggingCategory.Members.Count != 0)
                        {
                            grid.Categories.Add(debuggingCategory);
                        }

                        lastInstanceGuid = selectedInstance.InstanceId;
                    }
                    else
                    {
                        var details = client.GetInstanceDetails(selectedInstance.InstanceId);

                        foreach (var category in grid.Categories)
                        {
                            foreach (var uncastedMember in category.Members)
                            {
                                var member = uncastedMember as ConnectedInstanceMember;

                                member.PropertyReference = details.Properties.FirstOrDefault(item => item.Name == member.Name);
                            }
                        }

                        grid.Refresh();
                    }
                }
                else
                {
                    lastInstanceGuid = Guid.Empty;
                    grid.Categories.Clear();
                }
            });
            //var instanceMember = new InstanceMember("Some value", this);
            //instanceMember.CustomSetEvent += (owner, value) =>
            //{
            //    System.Console.WriteLine($"Setting the value of {owner} to {value}");
            //};

            //instanceMember.CustomGetEvent += (owner) =>
            //{
            //    System.Console.WriteLine($"Returning the value for {owner}");
            //    return 10;
            //};

            //instanceMember.CustomGetTypeEvent += (owner) =>
            //{
            //    System.Console.WriteLine($"Returning the type for {owner}");

            //    return typeof(int);
            //};

            //category.Members.Add(instanceMember);

            //Grid.Categories.Add(category);
        }