public void CreateAxie(string id) { Axie newAxie = new Axie(id); axies.Add(newAxie); GetAxieInformation.Instance.StartAxieCreate(id); }
private void ConstructAxie() { Axie axie = AxieManager.Manager.GetAxie(currentId); if (axie == null) { Debug.LogFormat("Could not construct axie, Id: \"{0}\" was not found", currentId); return; } GameObject newAxieObj = new GameObject("axie" + currentId); newAxieObj.transform.parent = AxieObject.Instance.transform; axieObj = newAxieObj; foreach (AxieBone bone in axie.bones) { string boneName = bone.name.Replace("@", ""); GameObject newBone = new GameObject("bone-" + boneName); if (newBone.name == "bone-root") { newBone.transform.parent = newAxieObj.transform; } else { newBone.transform.parent = newAxieObj.transform.FindDeepChild(bone.parent.Replace("@", "bone-")); newBone.transform.localPosition = new Vector2(bone.x / scaleFactor, bone.y / scaleFactor); if (bone.rotation != 0) { float parentRot = 0; if (transform.parent) { parentRot = transform.parent.rotation.eulerAngles.z; } newBone.transform.Rotate(Vector3.forward, bone.rotation - parentRot /*(bone.rotation - 180f) - parentRot*/); } } } foreach (AxieSkin skin in axie.skins) { string skinName = skin.name; GameObject newSkin = new GameObject("skin-" + skinName); newSkin.transform.parent = newAxieObj.transform.FindDeepChild("bone-" + skin.name); bool partRotate = false; foreach (AxiePart part in axie.parts) { if (part.name.Equals(skinName)) { partRotate = part.rotate; } } Vector3 newPos = new Vector3(skin.x / scaleFactor, skin.y / scaleFactor, 0); Transform newTransform = newSkin.transform.parent.Find("bone-" + skin.name); if (newTransform) { newPos = partRotate ? new Vector3(skin.y / scaleFactor, skin.x / scaleFactor, 0) : newPos; newSkin.transform.parent = newTransform; } if (newTransform) { newPos = new Vector3(-newPos.x, -newPos.y, 0); } if (skinName.Contains("tail")) { newPos = new Vector3(-newPos.x, -newPos.y, 0); } newSkin.transform.localPosition = newPos; if (partRotate) { newSkin.transform.Rotate(Vector3.forward, -90); } //partRotate = false; /*if (skin.rotation != 0f) * { * float parentRot = 0; * if (transform.parent) * parentRot = transform.parent.rotation.eulerAngles.z; * //newSkin.transform.Rotate(Vector3.forward, skin.rotation (skin.rotation - 180f) - parentRot); * } */ /* * if (skin.name.Contains("ear") || skin.name.Contains("mouth")) * newSkin.transform.Rotate(Vector3.forward, -90); */ SpriteRenderer sr = newSkin.AddComponent <SpriteRenderer>(); sr.sprite = axie.GetPartSprite(skinName); if (skinName == "body") { sr.sortingOrder = 1; } else if (skinName == "ear-right" || skinName == "tail" || skinName == ("leg-back-right") || skinName == ("leg-front-right") || skinName == "back") { sr.sortingOrder = 0; } else { sr.sortingOrder = 2; } } axieObj.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); axieObj.transform.localPosition = new Vector3(.12f, 0, 0); axieObj.transform.localRotation = Quaternion.identity; }