Esempio n. 1
0
        public TextureImporter(AssetLayout layout) :
            base(layout)
        {
            EnableMipMap            = 1;
            SRGBTexture             = 1;
            AlphaTestReferenceValue = 0.5f;
            MipMapFadeDistanceStart = 1;
            MipMapFadeDistanceEnd   = 3;
            HeightScale             = 0.25f;
            GenerateCubemap         = TextureImporterGenerateCubemap.AutoCubemap;
            TextureFormat           = TextureFormat.Alpha8;
            MaxTextureSize          = 2048;
            TextureSettings         = new GLTextureSettings(layout);
            NPOTScale          = TextureImporterNPOTScale.ToNearest;
            CompressionQuality = 50;

            SpriteMode          = SpriteImportMode.Single;
            SpriteExtrude       = 1;
            SpriteMeshType      = SpriteMeshType.Tight;
            SpritePivot         = new Vector2f(0.5f, 0.5f);
            SpritePixelsToUnits = 100.0f;
            SpriteGenerateFallbackPhysicsShape = 1;
            AlphaUsage               = TextureImporterAlphaSource.FromInput;
            AlphaIsTransparency      = 0;
            SpriteTessellationDetail = -1;
            TextureShape             = TextureImporterShape.Texture2D;
            PlatformSettings         = new TextureImporterPlatformSettings[] { new TextureImporterPlatformSettings(layout) };
            SpriteSheet              = new SpriteSheetMetaData(layout);
            SpritePackingTag         = string.Empty;
            Output = new TextureImportOutput(layout);
        }
        protected AnimatorTransitionBase(AssetLayout layout, AssetInfo assetInfo, BaseParameters parameters) :
            base(layout)
        {
            AssetInfo       = assetInfo;
            ObjectHideFlags = HideFlags.HideInHierarchy;

            List <AnimatorCondition> conditionList = new List <AnimatorCondition>(parameters.ConditionConstants.Count);

            for (int i = 0; i < parameters.ConditionConstants.Count; i++)
            {
                ConditionConstant conditionConstant = parameters.ConditionConstants[i].Instance;
                if (conditionConstant.ConditionMode != AnimatorConditionMode.ExitTime)
                {
                    AnimatorCondition condition = new AnimatorCondition(conditionConstant, parameters.TOS);
                    conditionList.Add(condition);
                }
            }
            Conditions = conditionList.ToArray();

            AnimatorState state = parameters.GetDestinationState();

            DstStateMachine = default;

            DstState = state == null ? default : state.File.CreatePPtr(state);

                       Name   = parameters.Name;
                       Solo   = false;
                       Mute   = false;
                       IsExit = parameters.IsExit;
        }
Esempio n. 3
0
 protected AssetImporter(AssetLayout layout) :
     base(layout)
 {
     if (IncludesIDToName)
     {
         if (HasInternalIDToNameTable(layout.Info.Version))
         {
             InternalIDToNameTable = new Dictionary <Tuple <ClassIDType, long>, string>();
         }
         else if (FileIDToRecycleNameRelevant(layout.Info.Version))
         {
             FileIDToRecycleName = new Dictionary <long, string>();
         }
     }
     if (HasExternalObjects(layout.Info.Version))
     {
         ExternalObjects = new Dictionary <SourceAssetIdentifier, PPtr <Object> >();
     }
     if (HasUsedFileIDs(layout.Info.Version))
     {
         UsedFileIDs = Array.Empty <long>();
     }
     UserData           = string.Empty;
     AssetBundleName    = string.Empty;
     AssetBundleVariant = string.Empty;
 }
Esempio n. 4
0
 public IHVImageFormatImporter(AssetLayout layout) :
     base(layout)
 {
     TextureSettings.FilterMode = FilterMode.Bilinear;
     TextureSettings.Aniso      = 1;
     SRGBTexture = true;
 }
Esempio n. 5
0
        private BlendTree(AssetLayout layout, AssetInfo assetInfo, AnimatorController controller, StateConstant state, int nodeIndex) :
            base(layout)
        {
            AssetInfo       = assetInfo;
            ObjectHideFlags = HideFlags.HideInHierarchy;

            VirtualSerializedFile virtualFile = (VirtualSerializedFile)assetInfo.File;
            BlendTreeNodeConstant node        = state.GetBlendTree().NodeArray[nodeIndex].Instance;

            Name = nameof(BlendTree);

            Childs = new ChildMotion[node.ChildIndices.Length];
            for (int i = 0; i < node.ChildIndices.Length; i++)
            {
                Childs[i] = new ChildMotion(virtualFile, controller, state, nodeIndex, i);
            }

            BlendParameter         = node.BlendEventID == uint.MaxValue ? string.Empty : controller.TOS[node.BlendEventID];
            BlendParameterY        = node.BlendEventYID == uint.MaxValue ? string.Empty : controller.TOS[node.BlendEventYID];
            MinThreshold           = node.GetMinThreshold(controller.File.Version);
            MaxThreshold           = node.GetMaxThreshold(controller.File.Version);
            UseAutomaticThresholds = false;
            NormalizedBlendValues  = node.BlendDirectData.Instance.NormalizedBlendValues;
            BlendType = node.BlendType;
        }
Esempio n. 6
0
        private static void FindMinMaxBounds(AssetLayout layout, Mesh mesh, ref SubMesh submesh, out Vector3f min, out Vector3f max)
        {
            if (Mesh.HasCompressedMesh(layout.Info.Version))
            {
                if (mesh.CompressedMesh.Vertices.IsSet)
                {
                    float[] vertices = mesh.CompressedMesh.Vertices.Unpack();
                    FindMinMaxBounds(vertices, submesh.FirstVertex, submesh.VertexCount, out min, out max);
                    return;
                }
            }

            if (Mesh.HasVertexData(layout.Info.Version))
            {
                if (Mesh.IsOnlyVertexData(layout.Info.Version))
                {
                    FindMinMaxBounds(layout, ref mesh.VertexData, submesh.FirstVertex, submesh.VertexCount, out min, out max);
                }
                else
                {
                    if (mesh.MeshCompression == MeshCompression.Off)
                    {
                        FindMinMaxBounds(layout, ref mesh.VertexData, submesh.FirstVertex, submesh.VertexCount, out min, out max);
                    }
                    else
                    {
                        FindMinMaxBounds(mesh.Vertices, submesh.FirstVertex, submesh.VertexCount, out min, out max);
                    }
                }
            }
            else
            {
                FindMinMaxBounds(mesh.Vertices, submesh.FirstVertex, submesh.VertexCount, out min, out max);
            }
        }
Esempio n. 7
0
        private void WriteBlob(AssetLayout layout, MemoryStream memStream, out uint compressedLength, out uint decompressedLength, int segment)
        {
            using (MemoryStream blobMem = new MemoryStream())
            {
                using (AssetWriter blobWriter = new AssetWriter(blobMem, EndianType.LittleEndian, layout))
                {
                    if (segment == 0)
                    {
                        blobWriter.WriteAssetArray(Entries);
                    }
                    WriteSegment(blobWriter, segment);
                }
                decompressedLength = (uint)blobMem.Length;

                blobMem.Position = 0;
#warning TODO:
                compressedLength = 0;

                /*using (Lz4EncodeStream lz4Stream = new Lz4EncodeStream(blobMem, blobMem.Length))
                 * {
                 *      lz4Stream.Write(memStream);
                 *      compressedLength = lz4Stream.Length;
                 * }*/
            }
        }
 public MonoFieldContext(FieldDefinition field, IReadOnlyDictionary <GenericParameter, TypeReference> arguments, AssetLayout layout)
 {
     Layout      = layout;
     Definition  = field;
     ElementType = field.FieldType;
     IsArray     = false;
     Arguments   = arguments;
 }
Esempio n. 9
0
 public MonoImporter(AssetLayout layout) :
     base(layout)
 {
     if (HasDefaultReferences(layout.Info.Version))
     {
         DefaultReferences = new Dictionary <string, PPtr <Object> >();
     }
 }
 public ScriptExportManager(AssetLayout layout, string exportPath)
 {
     if (string.IsNullOrEmpty(exportPath))
     {
         throw new ArgumentNullException(nameof(exportPath));
     }
     Layout       = layout;
     m_exportPath = exportPath;
 }
 public AssetLayout GetLayout(LayoutInfo info)
 {
     if (!m_layouts.TryGetValue(info, out AssetLayout value))
     {
         value = new AssetLayout(info);
         m_layouts.Add(info, value);
     }
     return(value);
 }
Esempio n. 12
0
 public GLTextureSettings(AssetLayout layout)
 {
     FilterMode = (FilterMode)(-1);
     Aniso      = -1;
     MipBias    = -100;
     WrapU      = (TextureWrapMode)(-1);
     WrapV      = (TextureWrapMode)(-1);
     WrapW      = (TextureWrapMode)(-1);
 }
        private AnimatorStateMachine(AssetLayout layout, AssetInfo assetInfo, AnimatorController controller, int stateMachineIndex) :
            base(layout)
        {
            AssetInfo       = assetInfo;
            ObjectHideFlags = HideFlags.HideInHierarchy;

            VirtualSerializedFile virtualFile = (VirtualSerializedFile)assetInfo.File;

            int layerIndex          = controller.Controller.GetLayerIndexByStateMachineIndex(stateMachineIndex);
            ref LayerConstant layer = ref controller.Controller.LayerArray[layerIndex].Instance;
Esempio n. 14
0
        public static GameCollection CreateGameCollection()
        {
            var layoutInfo = new LayoutInfo(new Version(), Platform.StandaloneWin64Player, TransferInstructionFlags.NoTransferInstructionFlags);
            var layout     = new AssetLayout(layoutInfo);
            var parameters = new GameCollection.Parameters(layout);

            parameters.ScriptBackend = ScriptingBackend.Mono;
            var gameCollection = new GameCollection(parameters);

            return(gameCollection);
        }
Esempio n. 15
0
 private AnimatorStateTransition(AssetLayout layout, AssetInfo assetInfo, Parameters parameters) :
     base(layout, assetInfo, parameters)
 {
     TransitionDuration  = parameters.Transition.TransitionDuration;
     TransitionOffset    = parameters.Transition.TransitionOffset;
     ExitTime            = parameters.Transition.GetExitTime(parameters.Version);
     HasExitTime         = parameters.Transition.GetHasExitTime(parameters.Version);
     HasFixedDuration    = parameters.Transition.GetHasFixedDuration(parameters.Version);
     InterruptionSource  = parameters.Transition.GetInterruptionSource(parameters.Version);
     OrderedInterruption = parameters.Transition.OrderedInterruption;
     CanTransitionToSelf = parameters.Transition.CanTransitionToSelf;
 }
Esempio n. 16
0
        public static TypeTree GenerateTypeTree(AssetLayout layout, SerializableType origin)
        {
            TypeTreeContext context = new TypeTreeContext(layout);

            GenerateTypeTree(context, origin);

            TypeTree instance = new TypeTree();

            instance.Nodes            = context.Nodes.ToArray();
            instance.CustomTypeBuffer = Array.Empty <byte>();
            return(instance);
        }
        private void Load(List <string> pathes, LayoutInfo layinfo)
        {
            if (CheckPC(pathes))
            {
            }
            else if (CheckLinux(pathes))
            {
            }
            else if (CheckMac(pathes))
            {
            }
            else if (CheckAndroid(pathes))
            {
            }
            else if (CheckiOS(pathes))
            {
            }
            else if (CheckSwitch(pathes))
            {
            }
            else if (CheckWebGL(pathes))
            {
            }
            else if (CheckWebPlayer(pathes))
            {
            }
            CheckMixed(pathes);

            using (GameStructureProcessor processor = new GameStructureProcessor())
            {
                if (PlatformStructure != null)
                {
                    ProcessPlatformStructure(processor, PlatformStructure);
                }
                if (MixedStructure != null)
                {
                    ProcessPlatformStructure(processor, MixedStructure);
                }
                processor.AddDependencySchemes(RequestDependency);

                if (processor.IsValid)
                {
                    layinfo = layinfo ?? processor.GetLayoutInfo();
                    AssetLayout layout             = new AssetLayout(layinfo);
                    GameCollection.Parameters pars = new GameCollection.Parameters(layout);
                    pars.ScriptBackend           = GetScriptingBackend();
                    pars.RequestAssemblyCallback = OnRequestAssembly;
                    pars.RequestResourceCallback = OnRequestResource;
                    FileCollection = new GameCollection(pars);
                    processor.ProcessSchemes(FileCollection);
                }
            }
        }
Esempio n. 18
0
        public void Read(AssetLayout layout, MemoryStream memStream, uint[] offsets, uint[] compressedLengths, uint[] decompressedLengths)
        {
            for (int i = 0; i < offsets.Length; i++)
            {
                uint offset             = offsets[i];
                uint compressedLength   = compressedLengths[i];
                uint decompressedLength = decompressedLengths[i];

                memStream.Position = offset;
                ReadBlob(layout, memStream, compressedLength, decompressedLength, i);
            }
        }
Esempio n. 19
0
        private static void FindMinMaxBounds(AssetLayout layout, ref VertexData vertexData, int firstVertex, int vertexCount, out Vector3f min, out Vector3f max)
        {
            ChannelInfo channel      = vertexData.GetChannel(layout.Info.Version, ShaderChannel.Vertex);
            int         streamOffset = vertexData.GetStreamOffset(layout.Info.Version, channel.Stream);
            int         streamStride = vertexData.GetStreamStride(layout.Info.Version, channel.Stream);
            int         extraStride  = streamStride - ShaderChannel.Vertex.GetStride(layout.Info.Version);
            int         vertexOffset = firstVertex * streamStride;
            int         begin        = streamOffset + vertexOffset + channel.Offset;

            using (MemoryStream stream = new MemoryStream(vertexData.Data))
            {
                using (AssetReader reader = new AssetReader(stream, EndianType.LittleEndian, layout))
                {
                    stream.Position = begin;
                    Vector3f dummyVertex = reader.ReadAsset <Vector3f>();
                    min = dummyVertex;
                    max = dummyVertex;

                    stream.Position = begin;
                    for (int i = 0; i < vertexCount; i++)
                    {
                        Vector3f vertex = reader.ReadAsset <Vector3f>();
                        if (vertex.X > max.X)
                        {
                            max.X = vertex.X;
                        }
                        else if (vertex.X < min.X)
                        {
                            min.X = vertex.X;
                        }
                        if (vertex.Y > max.Y)
                        {
                            max.Y = vertex.Y;
                        }
                        else if (vertex.Y < min.Y)
                        {
                            min.Y = vertex.Y;
                        }
                        if (vertex.Z > max.Z)
                        {
                            max.Z = vertex.Z;
                        }
                        else if (vertex.Z < min.Z)
                        {
                            min.Z = vertex.Z;
                        }
                        stream.Position += extraStride;
                    }
                }
            }
        }
 private void UnpackSubProgramBlobs(AssetLayout layout, uint[][] offsets, uint[][] compressedLengths, uint[][] decompressedLengths, byte[] compressedBlob)
 {
     Blobs = new ShaderSubProgramBlob[offsets.Length];
     using (MemoryStream memStream = new MemoryStream(compressedBlob))
     {
         for (int i = 0; i < Platforms.Length; i++)
         {
             uint[] blobOffsets             = offsets[i];
             uint[] blobCompressedLengths   = compressedLengths[i];
             uint[] blobDecompressedLengths = decompressedLengths[i];
             Blobs[i].Read(layout, memStream, blobOffsets, blobCompressedLengths, blobDecompressedLengths);
         }
     }
 }
 public TextureImporterPlatformSettings(AssetLayout layout)
 {
     BuildTarget                             = DefaultTexturePlatformName;
     MaxTextureSize                          = 2048;
     ResizeAlgorithm                         = TextureResizeAlgorithm.Mitchell;
     TextureFormat                           = TextureFormat.Automatic;
     TextureCompression                      = TextureImporterCompression.Uncompressed;
     CompressionQuality                      = 50;
     CrunchedCompression                     = false;
     AllowsAlphaSplitting                    = false;
     Overridden                              = false;
     AndroidETC2FallbackOverride             = AndroidETC2FallbackOverride.UseBuildSettings;
     ForceMaximumCompressionQuality_BC6H_BC7 = false;
 }
Esempio n. 22
0
        private static void RecalculateSubmeshBounds(AssetLayout layout, Mesh mesh, ref SubMesh submesh)
        {
            if (submesh.VertexCount == 0)
            {
                submesh.LocalAABB = default;
                return;
            }

            FindMinMaxBounds(layout, mesh, ref submesh, out Vector3f min, out Vector3f max);
            Vector3f center = (min + max) / 2.0f;
            Vector3f extent = max - center;

            submesh.LocalAABB = new AABB(center, extent);
        }
 public SpriteSheetMetaData(AssetLayout layout)
 {
     Sprites           = Array.Empty <SpriteMetaData>();
     Outline           = Array.Empty <Vector2f[]>();
     PhysicsShape      = Array.Empty <Vector2f[]>();
     Bones             = Array.Empty <SpriteBone>();
     SpriteID          = string.Empty;
     InternalID        = 0;
     Vertices          = Array.Empty <Vector2f>();
     Indices           = Array.Empty <int>();
     Edges             = Array.Empty <Int2Storage>();
     Weights           = Array.Empty <BoneWeights4>();
     SecondaryTextures = Array.Empty <SecondarySpriteTexture>();
 }
Esempio n. 24
0
        private void ReadSubProgramBlobs(AssetLayout layout, uint[] offsets, uint[] compressedLengths, uint[] decompressedLengths, byte[] compressedBlob)
        {
            SubProgramBlobs = new ShaderSubProgramBlob[Platforms.Length];
            using (MemoryStream memStream = new MemoryStream(compressedBlob))
            {
                for (int i = 0; i < Platforms.Length; i++)
                {
                    uint offset             = offsets[i];
                    uint compressedLength   = compressedLengths[i];
                    uint decompressedLength = decompressedLengths[i];

                    SubProgramBlobs[i] = ReadSubProgramBlobs(layout, memStream, offset, compressedLength, decompressedLength);
                }
            }
        }
Esempio n. 25
0
        public Animation(AssetLayout layout) :
            base(layout)
        {
            AnimationLayout classLayout = layout.Animation;

            if (classLayout.HasAnimations)
            {
                Animations = Array.Empty <PPtr <AnimationClip> >();
            }
            else
            {
                AnimationsPaired = Array.Empty <Tuple <string, PPtr <AnimationClip> > >();
            }
            PlayAutomatically = true;
        }
Esempio n. 26
0
 public GUIStyle(AssetLayout layout) :
     this()
 {
     Name         = string.Empty;
     Normal       = new GUIStyleState(layout);
     Hover        = new GUIStyleState(layout);
     Active       = new GUIStyleState(layout);
     Focused      = new GUIStyleState(layout);
     OnNormal     = new GUIStyleState(layout);
     OnHover      = new GUIStyleState(layout);
     OnActive     = new GUIStyleState(layout);
     OnFocused    = new GUIStyleState(layout);
     FontSize     = 33;
     RichText     = true;
     TextClipping = layout.Info.Version.IsGreaterEqual(4) ? TextClipping.Overflow : TextClipping.Clip;
     StretchWidth = true;
 }
Esempio n. 27
0
        public GameObject(AssetLayout layout) :
            base(layout)
        {
            GameObjectLayout classLayout = layout.GameObject;

            if (classLayout.IsComponentTuple)
            {
                ComponentTuple = Array.Empty <Tuple <ClassIDType, PPtr <Component> > >();
            }
            else
            {
                Component = Array.Empty <ComponentPair>();
            }
            Name      = string.Empty;
            TagString = TagManager.UntaggedTag;
            IsActive  = true;
        }
Esempio n. 28
0
        public void Write(AssetLayout layout, MemoryStream memStream, out uint[] offsets, out uint[] compressedLengths, out uint[] decompressedLengths)
        {
            int segmentCount = Entries.Length == 0 ? 0 : Entries.Max(t => t.Segment) + 1;

            offsets             = new uint[segmentCount];
            compressedLengths   = new uint[segmentCount];
            decompressedLengths = new uint[segmentCount];
            for (int i = 0; i < segmentCount; i++)
            {
                uint offset = (uint)memStream.Position;
                WriteBlob(layout, memStream, out uint compressedLength, out uint decompressedLength, i);

                offsets[i]             = offset;
                compressedLengths[i]   = compressedLength;
                decompressedLengths[i] = decompressedLength;
            }
        }
 private void UnpackSubProgramBlobs(AssetLayout layout, uint offset, uint compressedLength, uint decompressedLength, byte[] compressedBlob)
 {
     if (compressedBlob.Length == 0)
     {
         Blobs = Array.Empty <ShaderSubProgramBlob>();
     }
     else
     {
         Blobs = new ShaderSubProgramBlob[1];
         using (MemoryStream memStream = new MemoryStream(compressedBlob))
         {
             uint[] offsets             = new uint[] { offset };
             uint[] compressedLengths   = new uint[] { compressedLength };
             uint[] decompressedLengths = new uint[] { decompressedLength };
             Blobs[0].Read(layout, memStream, offsets, compressedLengths, decompressedLengths);
         }
     }
 }
Esempio n. 30
0
        private ShaderSubProgramBlob ReadSubProgramBlobs(AssetLayout layout, MemoryStream memStream, uint offset, uint compressedLength, uint decompressedLength)
        {
            memStream.Position = offset;
            byte[] decompressedBuffer = new byte[decompressedLength];
            using (Lz4DecodeStream lz4Stream = new Lz4DecodeStream(memStream, (int)compressedLength))
            {
                lz4Stream.ReadBuffer(decompressedBuffer, 0, decompressedBuffer.Length);
            }

            using (MemoryStream blobMem = new MemoryStream(decompressedBuffer))
            {
                using (AssetReader blobReader = new AssetReader(blobMem, EndianType.LittleEndian, layout))
                {
                    ShaderSubProgramBlob blob = new ShaderSubProgramBlob();
                    blob.Read(blobReader);
                    return(blob);
                }
            }
        }