コード例 #1
0
ファイル: FlareLayer.cs プロジェクト: hejob/SB3Utility
 public FlareLayer(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #2
0
ファイル: ParticleAnimator.cs プロジェクト: hejob/SB3Utility
 public ParticleAnimator(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #3
0
ファイル: Material.cs プロジェクト: hejob/SB3Utility
 public Material(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #4
0
ファイル: RigidBody.cs プロジェクト: hejob/SB3Utility
 public RigidBody(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #5
0
ファイル: Cubemap.cs プロジェクト: hejob/SB3Utility
        public new Cubemap Clone(AssetCabinet file)
        {
            Component cubemap = file.Bundle.FindComponent(m_Name, UnityClassID.Cubemap);
            if (cubemap == null)
            {
                file.MergeTypeDefinition(this.file, UnityClassID.Cubemap);

                Cubemap clone = new Cubemap(file);
                file.Bundle.AddComponent(m_Name, clone);
                CopyAttributesTo(clone);
                CopyImageTo(clone);
                foreach (PPtr<Texture2D> texPtr in m_SourceTextures)
                {
                    if (texPtr.asset != null)
                    {
                        clone.m_SourceTextures.Add(new PPtr<Texture2D>(texPtr.instance.Clone(file)));
                    }
                }
                return clone;
            }
            else if (cubemap is NotLoaded)
            {
                NotLoaded notLoaded = (NotLoaded)cubemap;
                if (notLoaded.replacement != null)
                {
                    cubemap = notLoaded.replacement;
                }
                else
                {
                    cubemap = file.LoadComponent(file.SourceStream, notLoaded);
                }
            }
            return (Cubemap)cubemap;
        }
コード例 #6
0
ファイル: MonoBehaviour.cs プロジェクト: hejob/SB3Utility
 public MonoBehaviour(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #7
0
ファイル: GameObject.cs プロジェクト: hejob/SB3Utility
 public GameObject(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #8
0
 public AnimatorController(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #9
0
ファイル: SpriteRenderer.cs プロジェクト: hejob/SB3Utility
        public SpriteRenderer(AssetCabinet file)
            : this(file, 0, UnityClassID.SpriteRenderer, UnityClassID.SpriteRenderer)
        {
            file.ReplaceSubfile(-1, this, null);

            base.SetDefaults();
        }
コード例 #10
0
ファイル: CapsuleCollider.cs プロジェクト: hejob/SB3Utility
 public CapsuleCollider(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #11
0
ファイル: AudioListener.cs プロジェクト: hejob/SB3Utility
 public AudioListener(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #12
0
ファイル: Shader.cs プロジェクト: hejob/SB3Utility
        public Shader(AssetCabinet file)
            : this(file, 0, UnityClassID.Shader, UnityClassID.Shader)
        {
            file.ReplaceSubfile(-1, this, null);

            m_Dependencies = new List<PPtr<Shader>>();
        }
コード例 #13
0
ファイル: MeshRenderer.cs プロジェクト: hejob/SB3Utility
 public MeshRenderer(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #14
0
ファイル: MeshRenderer.cs プロジェクト: hejob/SB3Utility
        public MeshRenderer(AssetCabinet file)
            : this(file, 0, UnityClassID.MeshRenderer, UnityClassID.MeshRenderer)
        {
            file.ReplaceSubfile(-1, this, null);

            SetDefaults();
        }
コード例 #15
0
ファイル: NotLoaded.cs プロジェクト: hejob/SB3Utility
 public NotLoaded(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #16
0
ファイル: TextAsset.cs プロジェクト: hejob/SB3Utility
        public TextAsset Clone(AssetCabinet file)
        {
            Component text = file.Components.Find
            (
                delegate(Component asset)
                {
                    return asset.classID1 == UnityClassID.TextAsset &&
                        (asset is NotLoaded ? ((NotLoaded)asset).Name : ((TextAsset)asset).m_Name) == m_Name;
                }
            );
            if (text == null)
            {
                file.MergeTypeDefinition(this.file, UnityClassID.TextAsset);

                TextAsset dest = new TextAsset(file);
                using (MemoryStream mem = new MemoryStream())
                {
                    this.WriteTo(mem);
                    mem.Position = 0;
                    dest.LoadFrom(mem);
                }
                return dest;
            }
            else if (text is NotLoaded)
            {
                NotLoaded notLoaded = (NotLoaded)text;
                text = file.LoadComponent(file.SourceStream, notLoaded);
            }
            return (TextAsset)text;
        }
コード例 #17
0
 public EllipsoidParticleEmitter(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
 {
     this.file = file;
     this.pathID = pathID;
     this.classID1 = classID1;
     this.classID2 = classID2;
 }
コード例 #18
0
ファイル: MeshFilter.cs プロジェクト: hejob/SB3Utility
        public MeshFilter Clone(AssetCabinet file)
        {
            file.MergeTypeDefinition(this.file, UnityClassID.MeshFilter);

            MeshFilter filter = new MeshFilter(file);
            filter.m_Mesh = new PPtr<Mesh>(m_Mesh.instance != null ? m_Mesh.instance.Clone(file) : null);
            return filter;
        }
コード例 #19
0
ファイル: GameObject.cs プロジェクト: hejob/SB3Utility
 public GameObject(AssetCabinet file)
     : this(file, 0, UnityClassID.GameObject, UnityClassID.GameObject)
 {
     file.ReplaceSubfile(-1, this, null);
     m_Component = new List<KeyValuePair<UnityClassID, PPtr<Component>>>(1);
     m_Layer = 20;
     m_isActive = true;
 }
コード例 #20
0
ファイル: AssetBundle.cs プロジェクト: hejob/SB3Utility
        public AssetBundle(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
        {
            this.file = file;
            this.pathID = pathID;
            this.classID1 = classID1;
            this.classID2 = classID2;

            NeedsUpdate = new HashSet<Component>();
        }
コード例 #21
0
ファイル: TypeParser.cs プロジェクト: hejob/SB3Utility
 UClass GenerateType(AssetCabinet.TypeDefinition typeDef)
 {
     UClass cls = new UClass(typeDef.definitions.type, typeDef.definitions.identifier);
     for (int i = 0; i < typeDef.definitions.children.Length; i++)
     {
         AssetCabinet.TypeDefinitionString memberDef = typeDef.definitions.children[i];
         UType member = GetMember(memberDef);
         cls.Members.Add(member);
     }
     return cls;
 }
コード例 #22
0
ファイル: Mesh.cs プロジェクト: kkdevs/sb3u
        public Mesh(AssetCabinet file) :
            this(file, 0, UnityClassID.Mesh, UnityClassID.Mesh)
        {
            file.ReplaceSubfile(-1, this, null);

            m_Shapes = new BlendShapeData();
            if (file.VersionNumber >= AssetCabinet.VERSION_5_0_0)
            {
                m_StreamCompression = 1;
            }
            m_IsReadable     = true;
            m_KeepVertices   = true;
            m_KeepIndices    = true;
            m_CompressedMesh = new CompressedMesh(file.VersionNumber);
            m_LocalAABB      = new AABB();
            m_MeshUsageFlags = 1;
            if (file.VersionNumber >= AssetCabinet.VERSION_5_0_0)
            {
                m_BakedConvexCollisionMesh   = new byte[0];
                m_BakedTriangleCollisionMesh = new byte[0];
            }
        }
コード例 #23
0
        public UnityParser(UnityParser source)
        {
            FilePath = source.FilePath;

            if (source.ExtendedSignature != null)
            {
                ExtendedSignature = (byte[])source.ExtendedSignature.Clone();
                HeaderLength      = source.HeaderLength;
                Unknown1          = source.Unknown1;
                Unknown2          = source.Unknown2;
                CabinetOffset     = source.CabinetOffset;
                LastByte          = source.LastByte;

                Unknown3 = source.Unknown3;
                Name     = (string)source.Name.Clone();
                Offset   = source.Offset;
            }
            Cabinet = new AssetCabinet(source.Cabinet, this);

            InitTextures();
            DeleteModFiles = new HashSet <AssetCabinet>();
        }
コード例 #24
0
ファイル: MonoBehaviour.cs プロジェクト: kkdevs/sb3u
 public static MonoBehaviour Import(string filePath, AssetCabinet file)
 {
     for (int i = 0; i < file.Types.Count; i++)
     {
         var typeDef = file.Types[i];
         if (typeDef.definitions.type == UnityClassID.MonoBehaviour.ToString() &&
             typeDef.definitions.children.Length > 4)
         {
             var member = typeDef.definitions.children[4];
             if (member.type == "Param" && member.identifier == "list")
             {
                 MonoBehaviour m = new MonoBehaviour(null, 0, file.VersionNumber < AssetCabinet.VERSION_5_5_0 ? (UnityClassID)typeDef.typeId : (UnityClassID)i, UnityClassID.MonoBehaviour);
                 m.Parser = new TypeParser(file, typeDef);
                 m.m_Name = Path.GetFileNameWithoutExtension(filePath);
                 StringToParamList(m, LoadLines(filePath));
                 return(m);
             }
         }
     }
     Report.ReportLog("Warning! No definition of required type found!");
     return(null);
 }
コード例 #25
0
ファイル: Animator.cs プロジェクト: zhangxv12138/SB3Utility
        public void CopyTo(Animator dest)
        {
            if (file.Bundle.numContainerEntries(m_GameObject.instance.m_Name, UnityClassID.GameObject) > 1)
            {
                Report.ReportLog("Warning! Animator " + m_GameObject.instance.m_Name + " has multiple entries in the AssetBundle's Container.");
            }
            dest.file.Bundle.AddComponent(m_GameObject.instance.m_Name, dest.m_GameObject.instance);
            dest.m_Enabled = m_Enabled;
            dest.m_Avatar  = new PPtr <Avatar>(m_Avatar.instance != null ? m_Avatar.instance.Clone(dest.file) : null);

            dest.m_Controller = new PPtr <RuntimeAnimatorController>((Component)null);
            if (m_Controller.asset != null)
            {
                Report.ReportLog("Warning! " + m_Controller.asset.classID1 + " " + AssetCabinet.ToString(m_Controller.asset) + " not duplicated!");
            }

            dest.m_CullingMode           = m_CullingMode;
            dest.m_UpdateMode            = m_UpdateMode;
            dest.m_ApplyRootMotion       = m_ApplyRootMotion;
            dest.m_HasTransformHierarchy = m_HasTransformHierarchy;
            dest.m_AllowConstantClipSamplingOptimization = m_AllowConstantClipSamplingOptimization;
        }
コード例 #26
0
        private void editTextBoxValue_AfterEditTextChanged(object sender, EventArgs e)
        {
            try
            {
                if (treeViewMembers.SelectedNode == null)
                {
                    ReselectEditedNode();
                }

                int line = int.Parse(treeViewMembers.SelectedNode.Name);
                Gui.Scripting.RunScript(EditorVar + ".SetAttributes(line=" + line + ", value=\"" + editTextBoxValue.Text + "\")");
                Changed = Changed;

                AddChange(new Tuple <int, string, int>(line, editTextBoxValue.Text, 0));

                TreeNode node = treeViewMembers.SelectedNode;
                if (((string)node.Tag).Contains("PPtr<"))
                {
                    string name   = null;
                    Int64  pathID = 0;
                    if (Int64.TryParse(editTextBoxValue.Text, out pathID) && pathID != 0)
                    {
                        Component asset = Editor.Parser.file.findComponent[pathID];
                        name = (asset is NotLoaded ? ((NotLoaded)asset).Name : AssetCabinet.ToString(asset)) + " PathID=";
                    }
                    node.Text = node.Tag + ": " + name + editTextBoxValue.Text;
                }
                else
                {
                    node.Text = node.Tag + ": " + editTextBoxValue.Text;
                }
                node.BackColor = Color.SeaGreen;
                treeViewMembers.SelectedNode = null;
            }
            catch (Exception ex)
            {
                Utility.ReportException(ex);
            }
        }
コード例 #27
0
ファイル: TypeParser.cs プロジェクト: hejob/SB3Utility
        UType GetMember(AssetCabinet.TypeDefinitionString member)
        {
            switch (member.type)
            {
            case "char":
                return new Uchar(member.identifier);
            case "bool":
            case "UInt8":
                return new Uint8(member.identifier);
            case "int":
                return new Uint32(member.identifier);
            case "unsigned int":
                return new Uuint32(member.identifier);
            case "float":
                return new Ufloat(member.identifier);
            }

            UType cls;
            if (member.type.StartsWith("PPtr<") && member.type.EndsWith(">"))
            {
                cls = new UPPtr(file, member.identifier);
            }
            else if (member.type == "Array")
            {
                cls = new Uarray();
            }
            else
            {
                cls = new UClass(member.type, member.identifier);
            }
            for (int i = 0; i < member.children.Length; i++)
            {
                AssetCabinet.TypeDefinitionString memberDef = member.children[i];
                UType submember = GetMember(memberDef);
                cls.Members.Add(submember);
            }
            return cls;
        }
コード例 #28
0
        public MonoBehaviour Clone(AssetCabinet file)
        {
            AssetCabinet.TypeDefinition srcDef = this.file.Types.Find
                                                 (
                delegate(AssetCabinet.TypeDefinition def)
            {
                return(def.typeId == (int)this.classID1);
            }
                                                 );
            int destId = 0, minId = 0;

            AssetCabinet.TypeDefinition destDef = null;
            for (int i = 0; i < file.Types.Count; i++)
            {
                if (AssetCabinet.CompareTypes(srcDef, file.Types[i]))
                {
                    destDef = file.Types[i];
                    destId  = destDef.typeId;
                    break;
                }
                if (file.Types[i].typeId < minId)
                {
                    minId = file.Types[i].typeId;
                }
            }
            if (destId == 0)
            {
                destDef = srcDef.Clone();
                destId  = destDef.typeId = minId - 1;
                file.Types.Add(destDef);
            }

            MonoBehaviour dest = new MonoBehaviour(file, (UnityClassID)destId);

            dest.Parser = new TypeParser(file, destDef);
            AssetCabinet.IncompleteClones.Add(new Tuple <Component, Component>(this, dest));
            return(dest);
        }
コード例 #29
0
        public void CopyTo(Animator dest)
        {
            bool multiEntry = file.Bundle != null && file.Bundle.numContainerEntries(m_GameObject.instance.m_Name, UnityClassID.GameObject) > 1;

            dest.m_Enabled = m_Enabled;
            dest.m_Avatar  = new PPtr <Avatar>
                             (
                m_Avatar.instance != null && m_Avatar.instance.classID() == UnityClassID.Avatar
                                ? m_Avatar.instance.Clone(dest.file) : null
                             );
            if (dest.file.Bundle != null)
            {
                if (multiEntry)
                {
                    dest.file.Bundle.AddComponents(m_GameObject.instance.m_Name,
                                                   new List <Component>(new Component[2] {
                        dest.m_GameObject.instance, dest.m_Avatar.instance
                    }));
                }
                else
                {
                    dest.file.Bundle.AddComponent(m_GameObject.instance.m_Name, dest.m_GameObject.instance);
                }
            }

            dest.m_Controller = new PPtr <AnimatorController>((Component)null);
            if (m_Controller.asset != null)
            {
                Report.ReportLog("Warning! " + m_Controller.asset.classID() + " " + AssetCabinet.ToString(m_Controller.asset) + " not duplicated!");
            }

            dest.m_CullingMode            = m_CullingMode;
            dest.m_UpdateMode             = m_UpdateMode;
            dest.m_ApplyRootMotion        = m_ApplyRootMotion;
            dest.m_LinearVelocityBlending = m_LinearVelocityBlending;
            dest.m_HasTransformHierarchy  = m_HasTransformHierarchy;
            dest.m_AllowConstantClipSamplingOptimization = m_AllowConstantClipSamplingOptimization;
        }
コード例 #30
0
        public AssetInfo(AssetCabinet file, Stream stream)
        {
            this.file = file;
            BinaryReader reader = new BinaryReader(stream);

            preloadIndex = reader.ReadInt32();
            preloadSize  = reader.ReadInt32();
            PPtr <Object> objPtr = new PPtr <Object>(stream);

            if (objPtr.m_FileID == 0 && objPtr.m_PathID != 0)
            {
                Component comp = file.FindComponent(objPtr.m_PathID, false);
                if (comp == null)
                {
                    comp = new NotLoaded(file, objPtr.m_PathID, 0, 0);
                }
                asset = new PPtr <Object>(comp);
            }
            else
            {
                asset = objPtr;
            }
        }
コード例 #31
0
        public AssetCabinet(AssetCabinet source, UnityParser parser)
        {
            Parser = parser;

            Format   = source.Format;
            Unknown6 = source.Unknown6;
            Version  = (string)source.Version.Clone();

            Unknown7 = source.Unknown7;

            int numTypes = source.Types.Count;

            Types = new List <TypeDefinition>(numTypes);
            for (int i = 0; i < numTypes; i++)
            {
                TypeDefinition t = source.Types[i];
                Types.Add(t);
            }

            Unknown8 = source.Unknown8;

            int numComponents = source.Components.Count;

            Components = new List <Component>(numComponents);

            int numRefs = source.References.Length;

            References = new Reference[numRefs];
            for (int i = 0; i < numRefs; i++)
            {
                References[i] = source.References[i];
            }

            RemovedList         = new List <NotLoaded>();
            loadingReferencials = false;
            reported            = new HashSet <string>();
        }
コード例 #32
0
        public AnimationClip Clone(AssetCabinet file)
        {
            Component clip = file.Components.Find
                             (
                delegate(Component asset)
            {
                if (asset.classID1 == UnityClassID.AnimationClip)
                {
                    if (asset is NotLoaded && ((NotLoaded)asset).Name == m_Name || ((AnimationClip)asset).m_Name == m_Name)
                    {
                        return(true);
                    }
                }
                return(false);
            }
                             );

            if (clip == null)
            {
                file.MergeTypeDefinition(this.file, UnityClassID.AnimationClip);

                clip = new AnimationClip(file);
            }
            else if (clip is NotLoaded)
            {
                NotLoaded notLoaded = (NotLoaded)clip;
                clip = file.LoadComponent(file.SourceStream, notLoaded);
            }
            using (MemoryStream mem = new MemoryStream())
            {
                WriteTo(mem);
                mem.Position = 0;
                clip.LoadFrom(mem);
            }
            return((AnimationClip)clip);
        }
コード例 #33
0
ファイル: Projector.cs プロジェクト: kkdevs/sb3u
 public Projector(AssetCabinet file) :
     this(file, 0, UnityClassID.Projector, UnityClassID.Projector)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #34
0
 public PPtrCurve(AssetCabinet file, Stream stream)
 {
     this.file = file;
 }
コード例 #35
0
ファイル: AssetCabinet.cs プロジェクト: hejob/SB3Utility
        public static bool CompareTypes(AssetCabinet.TypeDefinitionString tds1, AssetCabinet.TypeDefinitionString tds2)
        {
            if (tds1.type != tds2.type || tds1.identifier != tds2.identifier || tds1.children.Length != tds2.children.Length)
            {
                return false;
            }

            for (int i = 0; i < tds1.children.Length; i++)
            {
                if (!CompareTypes(tds1.children[i], tds2.children[i]))
                {
                    return false;
                }
            }
            return true;
        }
コード例 #36
0
 public AssetInfo(AssetCabinet file)
 {
     this.file = file;
 }
コード例 #37
0
ファイル: MeshRenderer.cs プロジェクト: hejob/SB3Utility
        public MeshRenderer Clone(AssetCabinet file)
        {
            file.MergeTypeDefinition(this.file, UnityClassID.MeshRenderer);

            MeshRenderer meshR = new MeshRenderer(file);
            AssetCabinet.IncompleteClones.Add(new Tuple<Component, Component>(this, meshR));
            return meshR;
        }
コード例 #38
0
 public AnimatorOverrideController(AssetCabinet file) :
     this(file, 0, UnityClassID.AnimatorOverrideController, UnityClassID.AnimatorOverrideController)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #39
0
 public AnimationClipBindingConstant(AssetCabinet file, Stream stream)
 {
     this.file = file;
     LoadFrom(stream);
 }
コード例 #40
0
 public GenericBinding(AssetCabinet file, Stream stream)
 {
     this.file = file;
     LoadFrom(stream);
 }
コード例 #41
0
 public void AddComponent(Component asset)
 {
     AddComponent(AssetCabinet.ToString(asset), asset);
 }
コード例 #42
0
ファイル: MeshFilter.cs プロジェクト: hejob/SB3Utility
 public MeshFilter(AssetCabinet file)
     : this(file, 0, UnityClassID.MeshFilter, UnityClassID.MeshFilter)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #43
0
ファイル: Canvas.cs プロジェクト: kkdevs/sb3u
 public Canvas(AssetCabinet file) :
     this(file, 0, UnityClassID.Canvas, UnityClassID.Canvas)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #44
0
ファイル: AssetCabinet.cs プロジェクト: hejob/SB3Utility
        public AssetCabinet(AssetCabinet source, UnityParser parser)
        {
            Parser = parser;

            Format = source.Format;
            Unknown6 = source.Unknown6;
            Version = (string)source.Version.Clone();

            Unknown7 = source.Unknown7;

            int numTypes = source.Types.Count;
            Types = new List<TypeDefinition>(numTypes);
            for (int i = 0; i < numTypes; i++)
            {
                TypeDefinition t = source.Types[i];
                Types.Add(t);
            }

            Unknown8 = source.Unknown8;

            int numComponents = source.Components.Count;
            Components = new List<Component>(numComponents);

            int numRefs = source.References.Length;
            References = new Reference[numRefs];
            for (int i = 0; i < numRefs; i++)
            {
                References[i] = source.References[i];
            }

            RemovedList = new List<NotLoaded>();
            loadingReferencials = false;
            reported = new HashSet<string>();
        }
コード例 #45
0
ファイル: AssetCabinet.cs プロジェクト: hejob/SB3Utility
 public void MergeTypeDefinition(AssetCabinet file, UnityClassID cls)
 {
     AssetCabinet.TypeDefinition clsDef = Types.Find
     (
         delegate(AssetCabinet.TypeDefinition def)
         {
             return def.typeId == (int)cls;
         }
     );
     if (clsDef == null)
     {
         clsDef = file.Types.Find
         (
             delegate(AssetCabinet.TypeDefinition def)
             {
                 return def.typeId == (int)cls;
             }
         );
         if (clsDef == null)
         {
             Report.ReportLog("Warning! Class Definition for " + cls + " not found!");
             return;
         }
         Types.Add(clsDef);
     }
 }
コード例 #46
0
 public AnimationClipOverride(AssetCabinet file, Stream stream)
 {
     this.file = file;
     LoadFrom(stream);
 }
コード例 #47
0
 public AnimationClipOverride(AssetCabinet file, AnimationClip original, AnimationClip overrideClip)
 {
     this.file      = file;
     m_OriginalClip = new PPtr <AnimationClip>(original);
     m_OverrideClip = new PPtr <AnimationClip>(overrideClip);
 }
コード例 #48
0
 public AnimationEvent(AssetCabinet file, Stream stream)
 {
     this.file = file;
     LoadFrom(stream);
 }
コード例 #49
0
 public EllipsoidParticleEmitter(AssetCabinet file) :
     this(file, 0, UnityClassID.EllipsoidParticleEmitter, UnityClassID.EllipsoidParticleEmitter)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #50
0
 public AnimationClip(AssetCabinet file) :
     this(file, 0, UnityClassID.AnimationClip, UnityClassID.AnimationClip)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #51
0
ファイル: AudioListener.cs プロジェクト: hejob/SB3Utility
 public AudioListener(AssetCabinet file)
     : this(file, 0, UnityClassID.AudioListener, UnityClassID.AudioListener)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #52
0
 public FloatCurve(AssetCabinet file, Stream stream)
 {
     this.file = file;
     LoadFrom(stream);
 }
コード例 #53
0
 public AssetBundle(AssetCabinet file) :
     this(file, 0, UnityClassID.AssetBundle, UnityClassID.AssetBundle)
 {
     file.Components.Insert(0, this);
     file.Bundle = this;
 }
コード例 #54
0
 public PPtrKeyframe(AssetCabinet file, Stream stream)
 {
     this.file = file;
     LoadFrom(stream);
 }
コード例 #55
0
ファイル: MultiLink.cs プロジェクト: zhangxv12138/SB3Utility
 public MultiLink(AssetCabinet file) :
     this(file, 0, UnityClassID.MultiLink, UnityClassID.MultiLink)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #56
0
        public void Dump()
        {
            string msg = String.Empty;

            for (int i = 0; i < m_PreloadTable.Count; i++)
            {
                PPtr <Object> objPtr = m_PreloadTable[i];
                if (objPtr.m_FileID == 0)
                {
                    Component comp = file.FindComponent(objPtr.asset.pathID);
                    if (comp == null)
                    {
                        comp = new NotLoaded(file, objPtr.asset.pathID, 0, 0);
                    }
                    //if (comp.classID1 == UnityClassID.Material // comp.pathID != 0 && comp.classID1 != UnityClassID.GameObject && comp.classID1 != UnityClassID.Transform)
                    {
                        msg += i + " PathID=" + objPtr.asset.pathID + " " + comp.classID1 + " " + (!(comp is NotLoaded) ? AssetCabinet.ToString(comp) : ((NotLoaded)comp).Name) + "\r\n";
                    }
                }
                else
                {
                    msg += i + " external FileID=" + objPtr.m_FileID + " PathID=" + objPtr.m_PathID + "\r\n";
                }
            }
            Report.ReportLog(msg);

            msg = string.Empty;
            for (int i = 0; i < m_Container.Count; i++)
            {
                if (m_Container[i].Value.asset.asset.pathID != 0)
                {
                    Component asset = file.FindComponent(m_Container[i].Value.asset.asset.pathID);
                    msg += i + " " + m_Container[i].Key + " PathID=" + m_Container[i].Value.asset.asset.pathID + " i=" + m_Container[i].Value.preloadIndex + " s=" + m_Container[i].Value.preloadSize + " " + asset.classID1.ToString() + " " + (asset is NotLoaded ? ((NotLoaded)asset).Name : AssetCabinet.ToString(asset)) + "\r\n";
                }
                else
                {
                    msg += "NULL! " + i + " " + m_Container[i].Key + " PathID=" + m_Container[i].Value.asset.asset.pathID + " i=" + m_Container[i].Value.preloadIndex + " s=" + m_Container[i].Value.preloadSize + " NULL!\r\n";
                }
            }
            Report.ReportLog(msg);

            if (m_MainAsset.asset.asset != null)
            {
                Component asset = file.FindComponent(m_MainAsset.asset.asset.pathID);
                msg = "Main Asset i=" + m_MainAsset.preloadIndex + " s=" + m_MainAsset.preloadSize + " " + asset.classID1.ToString() + " " + (asset is NotLoaded ? ((NotLoaded)asset).Name : AssetCabinet.ToString(asset));
                Report.ReportLog(msg);
            }
        }
コード例 #57
0
        private void UpdateComponent(Component asset, List <Tuple <List <PPtr <Object> >, List <KeyValuePair <string, AssetInfo> > > > containerGroups)
        {
            List <Component> assets           = new List <Component>();
            List <Component> transforms       = new List <Component>();
            List <Component> containerRelated = new List <Component>();

            GetDependantAssets(asset, assets, transforms, containerRelated);
            if (asset.classID1 == UnityClassID.GameObject)
            {
                GameObject gameObj  = (GameObject)asset;
                Animator   animator = gameObj.FindLinkedComponent(UnityClassID.Animator);
                if (animator == null)
                {
                    foreach (Component trans in transforms)
                    {
                        GetDependantAssets(trans, assets, null, null);
                    }
                    animator              = new Animator(null, 0, UnityClassID.Animator, UnityClassID.Animator);
                    animator.m_Avatar     = new PPtr <Avatar>((Component)null);
                    animator.m_Controller = new PPtr <RuntimeAnimatorController>((Component)null);
                    GetDependantAssets(animator, assets, transforms, containerRelated);
                    assets.Remove(animator);
                }
            }
            foreach (var group in containerGroups)
            {
                var preloadPart      = group.Item1;
                var containerEntries = group.Item2;
                for (int i = 0; i < containerEntries.Count; i++)
                {
                    var assetPair = containerEntries[i];
                    if (assetPair.Value.asset.asset == asset)
                    {
                        preloadPart.Clear();
                        for (int j = 0; j < assets.Count; j++)
                        {
                            if (assets[j] is ExternalAsset)
                            {
                                ExternalAsset extAsset     = (ExternalAsset)assets[j];
                                PPtr <Object> preloadEntry = new PPtr <Object>((Component)null);
                                preloadEntry.m_FileID = extAsset.FileID;
                                preloadEntry.m_PathID = extAsset.PathID;
                                preloadPart.Add(preloadEntry);
                            }
                            else
                            {
                                preloadPart.Add(new PPtr <Object>(assets[j]));
                            }
                        }

                        string groupName = containerEntries[0].Key;
                        string assetName = AssetCabinet.ToString(asset);
                        if (String.Compare(groupName, assetName, true) != 0)
                        {
                            groupName = assetName.ToLower();
                        }
                        if (containerEntries.Count > 1)
                        {
                            for (int j = 0; j < containerEntries.Count; j++)
                            {
                                switch (containerEntries[j].Value.asset.asset.classID1)
                                {
                                case UnityClassID.Mesh:
                                case UnityClassID.AnimationClip:
                                    containerEntries.RemoveAt(j);
                                    j--;
                                    break;
                                }
                            }
                            for (int j = containerRelated.Count - 1; j >= 0; j--)
                            {
                                AnimationClip clip = containerRelated[j] as AnimationClip;
                                if (clip != null)
                                {
                                    AssetInfo info = new AssetInfo(file);
                                    info.asset = new PPtr <Object>(clip);
                                    containerEntries.Insert(1, new KeyValuePair <string, AssetInfo>(groupName, info));
                                }
                            }
                            for (int j = containerRelated.Count - 1; j >= 0; j--)
                            {
                                MeshRenderer meshR = containerRelated[j] as MeshRenderer;
                                if (meshR != null)
                                {
                                    Mesh mesh = Operations.GetMesh(meshR);
                                    if (mesh != null)
                                    {
                                        AssetInfo info = new AssetInfo(file);
                                        info.asset = new PPtr <Object>(mesh);
                                        containerEntries.Insert(1, new KeyValuePair <string, AssetInfo>(groupName, info));
                                    }
                                }
                            }
                            for (int j = 0; j < containerEntries.Count; j++)
                            {
                                containerEntries[j].Value.preloadSize = assets.Count;
                            }
                        }
                        else
                        {
                            containerEntries[0].Value.preloadSize = assets.Count;
                        }
                        for (int j = 0; j < containerEntries.Count; j++)
                        {
                            if (containerEntries[j].Key != groupName)
                            {
                                containerEntries[j] = new KeyValuePair <string, AssetInfo>(groupName, containerEntries[j].Value);
                            }
                        }
                        return;
                    }
                }
            }
        }
コード例 #58
0
ファイル: ParticleRenderer.cs プロジェクト: hejob/SB3Utility
 public ParticleRenderer(AssetCabinet file, int pathID, UnityClassID classID1, UnityClassID classID2)
     : base(file, pathID, classID1, classID2)
 {
 }
コード例 #59
0
ファイル: Avatar.cs プロジェクト: zhangxv12138/SB3Utility
 public Avatar(AssetCabinet file) :
     this(file, 0, UnityClassID.Avatar, UnityClassID.Avatar)
 {
     file.ReplaceSubfile(-1, this, null);
 }
コード例 #60
0
ファイル: AssetCabinet.cs プロジェクト: hejob/SB3Utility
 public static bool CompareTypes(AssetCabinet.TypeDefinition td1, AssetCabinet.TypeDefinition td2)
 {
     return CompareTypes(td1.definitions, td2.definitions);
 }