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); }
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); }
// 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... } } }
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); } }
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; }
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(); }
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); } }
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; } }