Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }