예제 #1
0
        public void PrepareAndExecute(Delegate PrepareCallback, Delegate UserCallback)
        {
            String LMethodName = getText();

            Admin.GetServerMethodParameters((TDBXReader MetaDatas) =>
            {
                parameters   = new List <DSRESTParameter>();
                bool Cicla   = true;
                bool IsEqual = false;
                while (MetaDatas.next())
                {
                    if (Cicla && IsEqual)
                    {
                        break;
                    }
                    if (LMethodName.Equals(MetaDatas.getValue("MethodAlias").GetAsString()))
                    {
                        IsEqual           = true;
                        Cicla             = false;
                        DSRESTParameter p = new DSRESTParameter(
                            MetaDatas.getValue("Name").GetAsString(),                 //param.Name,
                            MetaDatas.getValue("DBXParameterDirection").GetAsInt32(), //param.Direction,
                            MetaDatas.getValue("DBXType").GetAsInt32(),               //param.DBXType,
                            MetaDatas.getValue("ParameterTypeName").GetAsString());   //param.TypeName);
                        parameters.Add(p);
                    }
                    else
                    {
                        Cicla = true;
                    }
                }
                PrepareCallback.DynamicInvoke();
                Connection.execute(this, Admin, UserCallback);
            });
        }
        public override void Save(SaveContext saveContext)
        {
            base.Save(saveContext);

            var utility = saveContext.Utility;

            saveContext.WriteObjectListPointerPlaceholder(Meshes);

            // Materials
            saveContext.WriteDICTPointerPlaceholder(ModelMaterials);

            // Shapes
            saveContext.WriteObjectListPointerPlaceholder(Shapes);

            // Mesh Node Visibilities
            saveContext.WriteObjectListPointerPlaceholder(MeshNodeVisibilities);

            utility.Write(Flags);

            utility.Write((uint)FaceCulling);

            utility.Write(LayerId);

            // Load a Skeleton if this model has one
            if (HasSkeleton)
            {
                saveContext.WritePointerPlaceholder(Skeleton);
            }

            /////////////////////////////
            // Begin saving dependent data

            // Save Lists
            saveContext.SaveAndMarkReference(Meshes);
            saveContext.SaveAndMarkReference(Shapes);
            saveContext.SaveAndMarkReference(MeshNodeVisibilities);      // I'm not SURE this is where this goes (no test data at the moment I'm writing this) but all lists seem to follow here

            // Save DICT headers
            saveContext.SaveAndMarkReference(MetaDatas);
            saveContext.SaveAndMarkReference(AnimGroup);
            saveContext.SaveAndMarkReference(ModelMaterials);

            // Now for other interior data...
            MetaDatas?.SaveEntries(saveContext);
            AnimGroup?.SaveEntries(saveContext);

            Meshes.SaveList(saveContext);
            ModelMaterials?.SaveEntries(saveContext);
            Shapes.SaveList(saveContext);
            MeshNodeVisibilities.SaveList(saveContext);

            if (HasSkeleton)
            {
                saveContext.SaveAndMarkReference(Skeleton);
            }
        }