public void AttachLimb(CreatureBodySegment segment, CreatureLimb limb, Vector3 offset) { limb.offset = offset; GameObject limbObject = Instantiate(Resources.Load <GameObject>("Prefabs/Characters/CreatureDisplayNode")); limbObject.transform.parent = segment.obj.transform; limbObject.GetComponent <CreatureDisplayNode>().root = limb; limbObject.GetComponent <SpriteRenderer>().transform.localPosition = offset; limbObject.GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>(limb.animationControllerName); limb.obj = limbObject; limb.root = segment.root; segment.limbs.Add(limb); }
public CreatureBodySegment LoadSegment(int index) { CreatureBodySegment segment = new CreatureBodySegment(); CreatureBodySegment source = segmentPrototypes[index]; segment.name = source.name; segment.prototypeIndex = source.prototypeIndex; segment.segmentType = source.segmentType; segment.animationControllerName = source.animationControllerName; segment.animations = source.animations; segment.segmentOffsets = source.segmentOffsets; return(segment); }
private void readOrganSegmentNode(XmlProcessor xml) { string node; CreatureBodySegment segment = new CreatureBodySegment(); //Get Attributes segment.name = "default"; segment.segmentType = "none"; segment.animationControllerName = "none"; XmlAttribute attribute = xml.getNextAttribute(); while (attribute.name != "") { switch (attribute.name) { case "name": segment.name = attribute.value; break; case "segmentType": segment.segmentType = attribute.value; break; case "animationControllerName": segment.animationControllerName = attribute.value; break; } attribute = xml.getNextAttribute(); } //Get Subnodes node = xml.getNextNode(); while (node != "/OrganSegmentNode") { switch (node) { case "OffsetNode": segment.segmentOffsets.Add(readOffsetNode(xml)); break; case "AnimationNode": segment.animations.Add(readAnimationNode(xml)); break; } node = xml.getNextNode(); } segment.prototypeIndex = segmentPrototypes.Count; segmentPrototypes.Add(segment); }
public void AttachSegment(Creature root, CreatureBodySegment segment, Vector3 offset) { Transform parentTransform; GameObject obj; parentTransform = root.display; obj = Instantiate(Resources.Load <GameObject>("Prefabs/Characters/CreatureDisplayNode")); obj.transform.parent = parentTransform.transform; segment.basePosition = offset; obj.GetComponent <CreatureDisplayNode>().rootSegment = segment; obj.GetComponent <SpriteRenderer>().transform.localPosition = segment.basePosition; obj.GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>(segment.animationControllerName); if (root.segments.Count > 0) { CreatureBodySegment previous = root.segments[root.segments.Count - 1]; obj.transform.parent = previous.obj.transform; segment.previousSegment = previous; previous.nextSegment = segment; segment.basePosition = obj.transform.localPosition; } segment.obj = obj; segment.root = root; root.segments.Add(segment); }