Saturday, September 5, 2015

Thursday, September 3, 2015

Xenoverse AGD Editor



About:
allows editing of leveling experience and attributes

Download:
http://www.mediafire.com/download/wv9zyymai8xt796/AGDEditor1.0.1.exe


Tutorial (How to Use):
coming soon


Xenoverse Price Modifier





About:
created this for changing prices in xenoverse

Download:
http://www.mediafire.com/download/fe5vg1b8x5phy9z/PriceModifier1.0.1.exe

Sunday, August 23, 2015

Xenoverse Msg Editor








About:
allows for editing of the Xenoverse text files or msg files.

Download:
http://www.mediafire.com/download/tt1squjr15m96vv/MsgEditorRebuild1.1.1.exe

How to Use and extra info:
-load up msg file and begin editing
 -95% of all files have only 1 line.

Wednesday, September 24, 2014

Ogre Mesh Loader

this allows you to load ogre mesh on runtime.
//tested and works. doesn't load bone weights yet
[code]
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.IO;

public class OgreMesh {
XmlDocument meshdoc = new XmlDocument();

public void loadFile(string FileName)
{
meshdoc.Load(FileName);
}

public Mesh constructMesh()
{
//Debug.Log ("works");
Mesh mesh = new Mesh();

//indices
XmlNode sharedgeometry = meshdoc.DocumentElement.SelectSingleNode("/mesh/sharedgeometry");
XmlNode vertexbuffer = sharedgeometry.FirstChild;
int Count;
int texCoords;
bool norms;
bool positions;

int.TryParse(sharedgeometry.Attributes["vertexcount"].InnerText,out Count);
bool.TryParse(vertexbuffer.Attributes["positions"].InnerText, out positions);
int.TryParse(vertexbuffer.Attributes["texture_coords"].InnerText, out texCoords);
bool.TryParse(vertexbuffer.Attributes["normals"].InnerText, out norms);

XmlNodeList vertexList = vertexbuffer.ChildNodes;
List<Vector3> Vertices = new List<Vector3> ();
List<Vector3> Normals = new List<Vector3> ();
List<Vector2> UVs = new List<Vector2> ();

for (int i = 0; i < Count; i++)
{
XmlNodeList vertex = vertexList.Item(i).ChildNodes;

if (positions)
{
XmlNode pNode = vertex.Item(findChild(vertex, "position", 0));
Vertices.Add(new Vector3(float.Parse(pNode.Attributes["x"].InnerText),
                              float.Parse(pNode.Attributes["y"].InnerText),
                              float.Parse(pNode.Attributes["z"].InnerText)));
}

if (norms)
{
XmlNode nNode = vertex.Item(findChild(vertex, "normal", 1));
Normals.Add(new Vector3(float.Parse(nNode.Attributes["x"].InnerText),
                             float.Parse(nNode.Attributes["y"].InnerText),
                             float.Parse(nNode.Attributes["z"].InnerText)));
}
if (texCoords > 0)
{
XmlNode tNode = vertex.Item(findChild(vertex, "texcoord", 1));
UVs.Add(new Vector2(float.Parse(tNode.Attributes["u"].InnerText),
                        float.Parse(tNode.Attributes["v"].InnerText)));
}
}

if (positions)
mesh.vertices = Vertices.ToArray();
if (norms)
mesh.normals = Normals.ToArray();
if (texCoords > 0)
mesh.uv = UVs.ToArray();


//triangles/faces
XmlNode faces = meshdoc.DocumentElement.SelectSingleNode("/mesh/submeshes/submesh/faces");
int.TryParse(faces.Attributes["count"].InnerText, out Count);

List<int> Triangles = new List<int> ();
for (int i = 0; i < Count; i++)
{
Triangles.Add(int.Parse(faces.ChildNodes.Item(i).Attributes["v1"].InnerText));
Triangles.Add(int.Parse(faces.ChildNodes.Item(i).Attributes["v2"].InnerText));
Triangles.Add(int.Parse(faces.ChildNodes.Item(i).Attributes["v3"].InnerText));
}

mesh.triangles = Triangles.ToArray ();

return mesh;
}

int findChild(XmlNodeList List, string Name, int firstCheck)
{
if (List.Item(firstCheck).Name == Name)
return firstCheck;

return findChild(List, Name);
}
int findChild(XmlNodeList List, string Name)
{
for(int k = 0; k < List.Count; k++)
{
if (List.Item(k).Name == Name)
return k;
}

return -1;
}

public BoneWeight[] constructSkinning()
{
List<BoneWeight> weights = new List<BoneWeight> ();
















return weights.ToArray ();
}

}

[/code]