public CreatureAppendage LoadAppendage(int index) { CreatureAppendage appendage = new CreatureAppendage(); CreatureAppendage source = appendagePrototypes[index]; CombatAction act; appendage.name = source.name; appendage.prototypeIndex = source.prototypeIndex; appendage.animationControllerName = source.animationControllerName; appendage.animations = source.animations; //create combat action for the limb for (int i = 0; i < source.combatActions.Count; i++) { act = new CombatAction(); act.name = source.combatActions[i].name; act.range = source.combatActions[i].range; act.damage = source.combatActions[i].damage; act.windupDuration = source.combatActions[i].windupDuration; act.attackDuration = source.combatActions[i].attackDuration; act.cooldownDuration = source.combatActions[i].cooldownDuration; act.windupAnimation = source.combatActions[i].windupAnimation; act.attackAnimation = source.combatActions[i].attackAnimation; act.backswingAnimation = source.combatActions[i].backswingAnimation; appendage.combatActions.Add(act); } return(appendage); }
private void readOrganAppendageNode(XmlProcessor xml) { string node; CreatureAppendage appendage = new CreatureAppendage(); //Get Tags appendage.name = "default"; appendage.animationControllerName = "none"; XmlAttribute attribute = xml.getNextAttribute(); while (attribute.name != "") { switch (attribute.name) { case "name": appendage.name = attribute.value; break; case "animationControllerName": appendage.animationControllerName = attribute.value; break; } attribute = xml.getNextAttribute(); } //Get Subnodes node = xml.getNextNode(); while (node != "/OrganAppendageNode") { switch (node) { case "AnimationNode": appendage.animations.Add(readAnimationNode(xml)); break; case "ActionNode": appendage.combatActions.Add(readActionNode(xml)); break; } node = xml.getNextNode(); } appendage.prototypeIndex = appendagePrototypes.Count; appendagePrototypes.Add(appendage); }
public void AttachAppendage(CreatureLimb organ, CreatureAppendage appendage) { GameObject obj; Transform display = organ.root.display; obj = Instantiate(Resources.Load <GameObject>("Prefabs/Characters/CreatureDisplayNode")); obj.transform.parent = organ.obj.transform; obj.GetComponent <SpriteRenderer>().transform.position = new Vector3(display.transform.position.x + organ.offset.x, display.transform.position.y + organ.offset.y, organ.offset.z); obj.GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>(appendage.animationControllerName); for (int i = 0; i < appendage.combatActions.Count; i++) { appendage.combatActions[i].limb = organ; } appendage.obj = obj; appendage.root = organ.root; appendage.offset = organ.appendageOffsets[0]; organ.appendage = appendage; }