void MakePrefabObjects() { foreach (Objects obj in objects) { foreach (Object_Type1 geomObj in obj.GetObject_Type1()) { PrefabObject prefabObj = new PrefabObject(); ////////////////////////// //Console.WriteLine(br.BaseStream.Position); double x = geomObj.pos.x; double y = geomObj.pos.y; double z = geomObj.pos.z; int id = geomObj.id; Quaternion quat = geomObj.quaternion; Vector3 scale = geomObj.scale; prefabObj.Transform34 = geomObj.rotMatrix34; //quat = ValidateQuaternion(quat); string objectname = Path.GetFileNameWithoutExtension(geomObj.path); prefabObj.Name = objectname; prefabObj.Geometry = geomObj.path; prefabObj.Pos = (float)x + "," + (float)y + "," + (float)z; prefabObj.Rotate = quat.W + "," + quat.X + "," + quat.Y + "," + quat.Z; prefabObj.Scale = scale.X + "," + scale.Y + "," + scale.Z; //Console.WriteLine(prefabObj.Geometry); prefabObj.EntityClass = "GeomEntity"; byte[] asciiBytes = Encoding.ASCII.GetBytes(objectname); prefabObj.Layer = objectname; //prefabObj.LayerGUID = "3675a837-e15f-dfa0-db3a-"+ bytesToString(asciiBytes); prefabObj.LayerGUID = GuidUtility.GenLayerID("sdf33" + objectname + prefabObj.Geometry + prefabObj.Pos); prefabObj.Id = GuidUtility.GenPrefabID("sdf34gffg" + objectname + prefabObj.Geometry + prefabObj.Pos); //ignore %level% geoms if (!prefabObj.Geometry.StartsWith("%level%", StringComparison.OrdinalIgnoreCase)) { prefabObjects.Add(prefabObj); } } } //foreach (AreaShapes areaShape in areaShapes) //{ // foreach (PrefabObject prefabObj in areaShape.GetPrefabObjects()) // { // prefabObjects.Add(prefabObj); // } //} }
XElement AddObjectsFromObjectContainers(XElement el, List <ObjectContainer> objCons, string parentid, string layerid) { XElement Object = el; layerid = GuidUtility.GenLayerID("Main"); string layerName = "Main"; List <ObjectContainer> objContainers = new List <ObjectContainer>(); foreach (ObjectContainer oc in objCons) { objContainers.Add(oc); foreach (Child child in oc.childs) { objContainers.Add(child.Soc); } } foreach (ObjectContainer oc in objContainers) { string portName = oc.portName; foreach (PrefabObject po in oc.prefabObjects) { if (po.Geometry != null) { layerid = GuidUtility.GenLayerID("Main"); layerName = "Main"; //string layerName = oc.name; //string entid = GuidUtility.GenID("ent" + parentid +oc.name+po.Name+ po.Geometry); //string compGuid = GuidUtility.GenID("entcomp" + parentid + oc.name + po.Name + po.Geometry); string entid = GuidUtility.GenID(); string componentGuid = GuidUtility.GenID(); //string prefid = GuidUtility.GenID("entpref" + parentid + oc.name + po.Name+ po.Geometry); XElement obj1 = po.GetAsGeomEntity(parentid, layerid, entid, componentGuid, portName, layerName, lodRatio); Object.Add(obj1); foreach (PrefabObject childPo in po.attachments) { string childentid = GuidUtility.GenID(); string childcomponentGuid = GuidUtility.GenID(); XElement childObj = childPo.GetAsGeomEntity(entid, layerid, childentid, childcomponentGuid, childPo.AttachmentTarget, layerName, lodRatio); Object.Add(childObj); } } if (po.EntityClass == "AnimObject") { layerid = GuidUtility.GenLayerID("Main"); layerName = "Main"; string entid = GuidUtility.GenID(); string componentGuid = GuidUtility.GenID(); XElement obj1 = po.GetAsAnimObject(parentid, layerid, entid, componentGuid, portName, layerName, lodRatio); Object.Add(obj1); } if (po.EntityClass == "LightGroup") { layerid = GuidUtility.GenLayerID("Main"); layerName = "Main"; XElement obj1 = po.GetAsFlowgraphEntity(parentid, layerid, layerName, oc.portName); Object.Add(obj1); int i = 0; //lights and probes (enveroinmentlight) foreach (Light lt in po.lights) { if (lt.EntityClass == "Light") { obj1 = po.GetAsLight(i, layerid, layerName); Object.Add(obj1); } if (lt.EntityClass == "EnvironmentLight") { obj1 = po.GetAsEnvironmentLight(i, layerid, layerName); Object.Add(obj1); } i++; } } //if (po.Type == "VisArea") //{ // layerid = GuidUtility.GenLayerID("Main"); // layerName = "Main"; // string entid = GuidUtility.GenID(); // XElement obj1 = po.GetAsVisArea(entid, layerid, layerName); // Object.Add(obj1); //} //if (po.Type == "Portal") //{ // layerid = GuidUtility.GenLayerID("Main"); // layerName = "Main"; // string entid = GuidUtility.GenID(); // XElement obj1 = po.GetAsPortal(entid, layerid, layerName); // Object.Add(obj1); //} if (po.Type == "EnvironmentLight") { layerid = GuidUtility.GenLayerID("Main"); layerName = "Main"; XElement obj1 = po.GetAsFlowgraphEntity(parentid, layerid, layerName, oc.portName); Object.Add(obj1); layerid = GuidUtility.GenLayerID("Main"); layerName = "Main"; string entid = GuidUtility.GenID(); obj1 = po.GetAsEnvironmentLight2(entid, layerid, layerName); Object.Add(obj1); } if (po.EntityClass == "Light") { layerid = GuidUtility.GenLayerID("Main"); layerName = "Main"; XElement obj1 = new XElement("Object"); string entid = GuidUtility.GenID(); string prefid = GuidUtility.GenID(); obj1.Add(new XAttribute("Name", po.Name)); obj1.Add(new XAttribute("LinkedTo", parentid)); obj1.Add(new XAttribute("Id", entid)); obj1.Add(new XAttribute("LayerGUID", layerid)); obj1.Add(new XAttribute("Layer", layerName)); if (po.Pos != null) { obj1.Add(new XAttribute("Pos", po.Pos)); } else { obj1.Add(new XAttribute("Pos", "0,0,0")); } if (po.Rotate != null) { obj1.Add(new XAttribute("Rotate", po.Rotate)); } obj1.Add(new XAttribute("Type", "Entity")); obj1.Add(new XAttribute("EntityClass", "Light")); obj1.Add(new XAttribute("ColorRGB", "65535")); obj1.Add(po.Properties); Object.Add(obj1); } } //foreach (Part part in ship.parts) //{ // if (part.attachmentPoints != null) // { // List<PrefabObject> prefObjects = oc.GetPrefabObjectsByAttachmentName(p); // } //} } return(Object); }
XElement AddPrefabsFromObjectContainers(XElement el, ShipImplementation ship, string parentid, string layerid) { XElement Object = el; layerid = GuidUtility.GenLayerID("Main"); foreach (ObjectContainer oc in ship.objectContainers) { string layername = oc.name; //layerid = stringToNumbers(layername); //Console.WriteLine(at.name); XElement obj1 = new XElement("Object"); string entid = GuidUtility.GenID("ent" + ship.name + oc.name + parentid); string prefid = GuidUtility.GenID("entpref" + ship.name + oc.name + parentid); obj1.Add(new XAttribute("Type", "Entity")); obj1.Add(new XAttribute("Name", oc.portName)); obj1.Add(new XAttribute("LinkedTo", parentid)); obj1.Add(new XAttribute("Id", entid)); obj1.Add(new XAttribute("LayerGUID", layerid)); obj1.Add(new XAttribute("AttachmentType", "CharacterBone")); obj1.Add(new XAttribute("AttachmentTarget", oc.portName)); obj1.Add(new XAttribute("Layer", layername)); obj1.Add(new XAttribute("EntityClass", "FlowgraphEntity")); Object.Add(obj1); //PrefabAttachment prefabAtt = item.getAttachment(at.name); //XElement obj2 = getPrefab(prefabAtt.prefabLibrary, prefabAtt.prefabName); XElement obj2 = new XElement("Object"); string id = GuidUtility.GenID("entid" + ship.name + oc.name + parentid); string prefablibname = ship.name; obj2.Add(new XAttribute("Type", "Prefab")); obj2.Add(new XAttribute("Name", oc.name)); obj2.Add(new XAttribute("LinkedTo", entid)); obj2.Add(new XAttribute("Id", id)); obj2.Add(new XAttribute("LayerGUID", layerid)); obj2.Add(new XAttribute("Layer", layername)); obj2.Add(new XAttribute("PrefabGUID", prefid)); obj2.Add(new XAttribute("PrefabLibrary", prefablibname)); obj2.Add(new XAttribute("PrefabName", "ObjectContainers." + oc.name)); //prefablib = prefabAtt.prefabLibrary; prefabs.Add(oc.GetAsPrefab(prefablibname, layerid, prefid, layername)); Object.Add(obj2); foreach (Child child in oc.childs) { ObjectContainer ocChild = child.Soc; // Console.WriteLine("ading child {0}", ocChild.name); prefid = GuidUtility.GenID("entprefchild" + ship.name + ocChild.name + parentid); XElement obj3 = new XElement("Object"); string id2 = GuidUtility.GenID("entprefchild2sdfsd" + ship.name + ocChild.name + parentid); string prefablibname2 = ship.name; obj3.Add(new XAttribute("Type", "Prefab")); obj3.Add(new XAttribute("Name", ocChild.name)); obj3.Add(new XAttribute("LinkedTo", entid)); obj3.Add(new XAttribute("Id", id2)); obj3.Add(new XAttribute("LayerGUID", layerid)); obj3.Add(new XAttribute("Layer", layername)); obj3.Add(new XAttribute("PrefabGUID", prefid)); obj3.Add(new XAttribute("PrefabLibrary", prefablibname2)); obj3.Add(new XAttribute("PrefabName", "ObjectContainers." + ocChild.name)); //prefablib = prefabAtt.prefabLibrary; prefabs.Add(ocChild.GetAsPrefab(prefablibname2, layerid, prefid, layername)); Object.Add(obj3); } } return(Object); }