コード例 #1
0
        public override Transform GetTransform()
        {
            UnityNodeBase transformNode = GetChildNodeByType(PCFResourceType.TRANSFORM);

            if (transformNode != null)
            {
                return(transformNode.GetTransform());
            }

            return(this.transform);
        }
コード例 #2
0
        private void FindTransformsInHierarchy(UnityNodeBase node, Dictionary <string, Transform> mapping)
        {
            if (node.GetResourceType() == PCFResourceType.TRANSFORM)
            {
                Transform trans = node.GetTransform();
                mapping.Add(node.GetName(), trans);
            }

            for (int i = 0; i < node.ChildNodes.Count; i++)
            {
                UnityNodeBase   child = node.ChildNodes[i];
                PCFResourceType type  = child.GetResourceType();

                //Optimize search by not going into subtress that do not contain bones.
                if (type == PCFResourceType.ROOT || type == PCFResourceType.OBJECT || type == PCFResourceType.TRANSFORM)
                {
                    FindTransformsInHierarchy(child, mapping);
                }
            }
        }
コード例 #3
0
        public override void Deserialize(Dictionary <PCFResourceType, DataBlockBase> dataBlocks,
                                         UnityNodeBase parentNode,
                                         ResourceResponse resourceResponse,
                                         List <Action <UnityNodeBase> > postInstallActions,
                                         bool optimizedLoad)
        {
            if (!this.isDeserialized)
            {
                //Deserialize pointed node id.
                ResourceBlock dataBlock = dataBlocks[resourceType] as ResourceBlock;
                AssetResource resource  = dataBlock.GetResource(this.referenceID);

                byte[] bytes = resource.GetResourceData();

                UInt32 referencedNodeID = BitConverter.ToUInt32(bytes, 0);
                //JObject metaData = JObject.Parse(System.Text.Encoding.UTF8.GetString(metaDataBuffer));

                //UInt32 referencedNodeID = metaData.Value<UInt32>("targetReferenceID");

                Dictionary <UInt32, UnityNodeBase> referencedNodes = resourceResponse.GetReferencedNodes;

                if (referencedNodes.ContainsKey(referencedNodeID))
                {
                    UnityNodeBase referencedNode = referencedNodes[referencedNodeID];

                    Transform transform = referencedNode.GetTransform();

                    if (transform != null)
                    {
                        resourceResponse.GetFieldDeserializer.SetArrayItem(transform);
                    }
                }

                this.isDeserialized = true;
            }
        }