예제 #1
0
        public static GodzClassInfo get(uint classHash)
        {
            GodzClassInfo cp = new GodzClassInfo();

            // constructs a class info that has all the properties from this class
            // with it's parents
            ClassBase temp = ClassBase.findClass(classHash);

            while (temp != null)
            {
                //find the GodzClassInfo for this class....
                GodzClassInfo classDesc = (GodzClassInfo)mClassMap[temp.getObjectName()];
                if (classDesc != null)
                {
                    // append the properties
                    int num = classDesc.cpList.Count;
                    for (int i = 0; i < num; i++)
                    {
                        cp.cpList.Add(classDesc.cpList[i]);
                    }
                }

                temp = temp.getSuperClass();
            }

            return(cp);
        }
예제 #2
0
        public ObjectBase newInstance(Package p)
        {
            ClassBase godzClass = ClassBase.findClass(classhash);

            if (godzClass != null)
            {
                //set package
                ObjectBase obj = godzClass.newInstance();

                if (p != null)
                {
                    obj.setPackage(p);

                    DatabaseObjectInfo info = new DatabaseObjectInfo();
                    info.dbUser   = dbUser;
                    info.locked   = locked;
                    info.objID    = objID;
                    info.revision = revision;
                    DatabaseObjectRegistry.Items[obj] = info;

                    obj.Id = objID;

                    Editor.ImportXMLData(obj, xmlData);
                    Editor.ImportObjectReferences(obj, p);

                    return(obj);
                }
            }

            return(null);
        }
예제 #3
0
        // This is the method to run when the timer is raised.
        private void MainForm1_Timer(Object myObject, EventArgs myEventArgs)
        {
            //tick the game logic so events are dispersed
            //float elapsedTime = GodzUtil.RunMainPass();
            //Console.WriteLine("Elapsed Time " + elapsedTime);
            GodzUtil.RunMainPass();

            TabPanelData currTab = getTabPanel();

            if (currTab != null)
            {
                currTab.mListener.OnTick();
            }

            foreach (GodzGlue.PackageFuture pf in mFutures)
            {
                if (pf.isReady())
                {
                    GodzGlue.Package p = pf.getPackage();
                    packages.Add(p);

                    //iterate through all the trees and update...
                    int len = mTabs.Count;
                    for (int i = 0; i < len; i++)
                    {
                        TabPage      tab  = mTabs[i];
                        TabPanelData data = (TabPanelData)mTabMap[tab];
                        data.mListener.PackageLoaded(p);
                    }

                    //see if its the editor package
                    if (p.GetName() == mEditorName)
                    {
                        //now assign the editor icon to all Entity objects
                        uint      entityName = GodzUtil.GetHashCode("WEntity");
                        ClassBase classBase  = ClassBase.findClass(entityName);
                        if (classBase != null)
                        {
                            uint matName = GodzUtil.GetHashCode("icon");
                            mDefaultEntityMaterial = p.FindObject(matName) as Material;
                            if (mDefaultEntityMaterial != null)
                            {
                                classBase.setMaterial(mDefaultEntityMaterial);
                            }
                        }
                    }

                    mFutures.Remove(pf);
                    break; //list was modified while iterating...
                }
            }
        }
예제 #4
0
        protected override void FillInList(ITypeDescriptorContext context, IServiceProvider provider, ListBox listBox)
        {
            //Note: ITypeDescriptorContext contains the Instance object

            ClassBase objectTemplateClass = ClassBase.findClass("ProjectileTemplate");

            //Get all the projectiles and add to this dropdown....
            List <DatabaseObject> projectileTemplates = new List <DatabaseObject>();

            Editor.LoadObjectsOfType(ref projectileTemplates, 0, objectTemplateClass);

            for (int i = 0; i < projectileTemplates.Count; i++)
            {
                string name = Editor.GetPropertyFromXML("Name", projectileTemplates[i].xmlData);
                listBox.Items.Add(name);
            }
        }
예제 #5
0
        private void AddTemplateToTree(TreeNode packageNode, DatabaseObject obj)
        {
            String objName = Editor.GetPropertyFromXML("Name", obj.xmlData); //obj.getObjectName();


            if (objName == null)
            {
                ClassBase gc = ClassBase.findClass(obj.classhash);
                objName = gc.ClassName;
            }

            System.Windows.Forms.TreeNode objectNode = new TreeNode(objName);
            packageNode.Nodes.Add(objectNode);
            objectNode.Tag = obj;
            objectNode.ContextMenuStrip = blankTemplateContextMenuStrip1;
            //objectMap[obj] = objectNode;

            //mTemplateNode = objectNode;
        }
예제 #6
0
        private void buildTree()
        {
            //reset
            treeView1.Nodes.Clear();

            System.Windows.Forms.TreeNode packageRoot = new TreeNode("Packages");
            treeView1.Nodes.Add(packageRoot);

            //retrieve all objects from DB
            List <DatabaseObject> list = new List <DatabaseObject>();

            Editor.LoadObjects(ref list, 0);

            //get all packages...
            List <PackageInfo> packs = new List <PackageInfo>();

            Editor.GetPackages(ref packs);

            foreach (PackageInfo p in packs)
            {
                AddPackage(p);
            }


            foreach (DatabaseObject data in list)
            {
                ClassBase godzClass = ClassBase.findClass(data.classhash);
                if (godzClass != null && godzClass.IsA("ObjectTemplate"))
                {
                    //see if we already added the package
                    Object temp = mPackageMap[data.packageHash];

                    if (temp != null)
                    {
                        PackageNode pnode       = (PackageNode)temp;
                        TreeNode    parent_node = pnode.node;
                        AddTemplateToTree(parent_node, data);
                    }
                }
            }

            treeView1.ExpandAll();
        }
예제 #7
0
        private void addTemplateToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Ask the user to select the type of Template
            ClassBase          godzClass = ClassBase.findClass("ObjectTemplate");
            ClassSelectionForm form      = new ClassSelectionForm(godzClass);

            if (form.ShowDialog() == DialogResult.OK)
            {
                //open up the template editor for this type...
                mTemplate = form.mSelectedType.newInstance();
                mTemplate.setPackage(mSelectedPackage);

                //Assign this object a package...
                mTemplate.setPackage(mSelectedPackage);

                object proxy = Editor.GetNewObjectProxy(mTemplate);
                propertyGrid1.SelectedObject = proxy;

                AddTemplateToTree(mPackageNode, mTemplate);

                Editor.AddEntity(mSelectedPackage.GetName(), mTemplate);
            }
        }
예제 #8
0
        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            currentNode = e.Node;
            if (e.Node.Tag is PackageInfo)
            {
                mPackageNode = e.Node;
                PackageInfo pinfo = (PackageInfo)e.Node.Tag;

                // Find the package...
                Package p = GodzUtil.FindPackage(pinfo.hash);
                if (p != null)
                {
                    mSelectedPackage = p;
                }
                else
                {
                    // Create the package.
                    // Note/Bug: if the pack exists somewhere on the
                    // hard drive and the user later loads that one
                    // it will lose this object.
                    mSelectedPackage = GodzUtil.AddPackage(pinfo.name, pinfo.type);
                }

                mTemplate = null;
                mValue    = null;
                propertyGrid1.SelectedObject = null;
            }
            else if (e.Node.Tag is ObjectBase)
            {
                // Stores context information
                PropertyContextData contextData   = null;
                ClassBase           templateClass = ClassBase.findClass("ObjectTemplate");

                ObjectBase obj = (ObjectBase)e.Node.Tag;
                if (obj.IsA(templateClass))
                {
                    mTemplate     = (ObjectBase)e.Node.Tag;
                    mTemplateNode = e.Node;

                    mSelectedPackage = mTemplate.getPackage();
                }
                else
                {
                    mSelectedPackage = obj.getPackage();

                    //Set the 'Template' parent object as the context. This way
                    //the property knows about it's parent Object
                    TreeNode tnode = e.Node.Parent;
                    while (tnode != null)
                    {
                        Object temp = tnode.Tag;
                        if (temp is ObjectBase)
                        {
                            ObjectBase tempBase = (ObjectBase)temp;
                            if (tempBase.IsA(templateClass))
                            {
                                contextData          = new PropertyContextData();
                                contextData.context1 = tempBase;
                                break;
                            }
                        }

                        tnode = tnode.Parent;
                    }
                }

                //Debug.Assert(mSelectedPackage != null);
                object          proxy    = Editor.GetNewObjectProxy(obj);
                ObjectBaseProxy objProxy = (ObjectBaseProxy)proxy;
                objProxy.contextData         = contextData;
                propertyGrid1.SelectedObject = proxy;

                mValue = null;
            }
            else if (e.Node.Tag is PropertyClassSelection)
            {
                PropertyClassSelection propertySelection = (PropertyClassSelection)e.Node.Tag;
                mSelectedPackage = propertySelection.obj.getPackage();
                mValue           = new PropertyGridValue();

                //refresh the property
                propertySelection.cp = propertySelection.obj.getPropertyValue(propertySelection.cp.mName);

                if (propertySelection.cp.mPropertyType == ClassPropertyType.PropertyType_HashCode)
                {
                    mValue.value = Editor.GetHashString(propertySelection.cp.mObjectHash);
                }
                else
                {
                    mValue.value = propertySelection.cp.mText;
                }

                mValue.mPropertySelection    = propertySelection;
                propertyGrid1.SelectedObject = mValue;
            }
        }