From ee8fc66e48f085dbe8f9bc349d511f5c5b825a29 Mon Sep 17 00:00:00 2001 From: IzayoiJiichan Date: Fri, 7 Aug 2020 00:01:00 +0900 Subject: [PATCH] v1.0.0 --- CHANGELOG.md | 4 + CHANGELOG.md.meta | 7 + LICENSE.md | 21 + LICENSE.md.meta | 7 + README.md | 53 +++ README.md.meta | 7 + Runtime.meta | 8 + Runtime/Buffers.meta | 8 + Runtime/Buffers/ArraySegmentByteBuffer.cs | 196 ++++++++++ .../Buffers/ArraySegmentByteBuffer.cs.meta | 11 + Runtime/Buffers/IByteBuffer.cs | 49 +++ Runtime/Buffers/IByteBuffer.cs.meta | 11 + Runtime/Buffers/Pin.cs | 104 +++++ Runtime/Buffers/Pin.cs.meta | 11 + .../Buffers/ReadOnlyArraySegmentByteBuffer.cs | 84 ++++ .../ReadOnlyArraySegmentByteBuffer.cs.meta | 11 + Runtime/Defines.meta | 8 + Runtime/Defines/VertexKey.cs | 52 +++ Runtime/Defines/VertexKey.cs.meta | 11 + Runtime/Enums.meta | 8 + Runtime/Enums/EnumStrings.meta | 8 + Runtime/Enums/EnumStrings/GltfAccessorType.cs | 25 ++ .../EnumStrings/GltfAccessorType.cs.meta | 11 + Runtime/Enums/EnumStrings/GltfAlphaMode.cs | 20 + .../Enums/EnumStrings/GltfAlphaMode.cs.meta | 11 + .../EnumStrings/GltfAnimationChannelPath.cs | 19 + .../GltfAnimationChannelPath.cs.meta | 11 + .../GltfAnimationInterpolationType.cs | 27 ++ .../GltfAnimationInterpolationType.cs.meta | 11 + .../EnumStrings/GltfCameraProjectionType.cs | 15 + .../GltfCameraProjectionType.cs.meta | 11 + Runtime/Enums/UnityEngine.meta | 8 + Runtime/Enums/UnityEngine/CoreModule.cs | 66 ++++ Runtime/Enums/UnityEngine/CoreModule.cs.meta | 11 + .../Enums/UnityEngine/ParticleSystemModule.cs | 364 ++++++++++++++++++ .../UnityEngine/ParticleSystemModule.cs.meta | 11 + Runtime/Enums/UnityEngine/PhysicsModule.cs | 69 ++++ .../Enums/UnityEngine/PhysicsModule.cs.meta | 11 + Runtime/Enums/UnityEngine/Rendering.cs | 148 +++++++ Runtime/Enums/UnityEngine/Rendering.cs.meta | 11 + Runtime/Enums/UnityEngine/SkyboxShader.cs | 46 +++ .../Enums/UnityEngine/SkyboxShader.cs.meta | 11 + Runtime/Enums/WebGL.meta | 8 + Runtime/Enums/WebGL/GltfBufferViewTarget.cs | 26 ++ .../Enums/WebGL/GltfBufferViewTarget.cs.meta | 11 + Runtime/Enums/WebGL/GltfComponentType.cs | 35 ++ Runtime/Enums/WebGL/GltfComponentType.cs.meta | 11 + Runtime/Enums/WebGL/GltfCullFaceMode.cs | 19 + Runtime/Enums/WebGL/GltfCullFaceMode.cs.meta | 11 + Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs | 26 ++ .../Enums/WebGL/GltfMeshPrimitiveMode.cs.meta | 11 + .../Enums/WebGL/GltfTextureMagFilterMode.cs | 20 + .../WebGL/GltfTextureMagFilterMode.cs.meta | 11 + .../Enums/WebGL/GltfTextureMinFilterMode.cs | 32 ++ .../WebGL/GltfTextureMinFilterMode.cs.meta | 11 + Runtime/Enums/WebGL/GltfTextureTarget.cs | 33 ++ Runtime/Enums/WebGL/GltfTextureTarget.cs.meta | 11 + Runtime/Enums/WebGL/GltfTextureWrapMode.cs | 23 ++ .../Enums/WebGL/GltfTextureWrapMode.cs.meta | 11 + Runtime/Extensions.meta | 8 + .../Extensions/GltfAccessorTypeExtensions.cs | 42 ++ .../GltfAccessorTypeExtensions.cs.meta | 11 + .../Extensions/GltfComponentTypeExtensions.cs | 38 ++ .../GltfComponentTypeExtensions.cs.meta | 11 + Runtime/Storage.meta | 8 + Runtime/Storage/GltfChunk.cs | 115 ++++++ Runtime/Storage/GltfChunk.cs.meta | 11 + Runtime/Storage/GltfChunkType.cs | 17 + Runtime/Storage/GltfChunkType.cs.meta | 11 + Runtime/Storage/GltfHeader.cs | 25 ++ Runtime/Storage/GltfHeader.cs.meta | 11 + Runtime/Structs.meta | 8 + Runtime/Structs/Color3.cs | 45 +++ Runtime/Structs/Color3.cs.meta | 11 + Runtime/Structs/Color4.cs | 57 +++ Runtime/Structs/Color4.cs.meta | 11 + Runtime/Structs/Matrix2.cs | 50 +++ Runtime/Structs/Matrix2.cs.meta | 11 + Runtime/Structs/Matrix3.cs | 75 ++++ Runtime/Structs/Matrix3.cs.meta | 11 + Runtime/Structs/Vector4Uint.cs | 44 +++ Runtime/Structs/Vector4Uint.cs.meta | 11 + Runtime/Structs/Vector4Ushort.cs | 44 +++ Runtime/Structs/Vector4Ushort.cs.meta | 11 + Runtime/VgoGltf.asmdef | 13 + Runtime/VgoGltf.asmdef.meta | 7 + package.json | 27 ++ package.json.meta | 7 + 88 files changed, 2657 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 CHANGELOG.md.meta create mode 100644 LICENSE.md create mode 100644 LICENSE.md.meta create mode 100644 README.md create mode 100644 README.md.meta create mode 100644 Runtime.meta create mode 100644 Runtime/Buffers.meta create mode 100644 Runtime/Buffers/ArraySegmentByteBuffer.cs create mode 100644 Runtime/Buffers/ArraySegmentByteBuffer.cs.meta create mode 100644 Runtime/Buffers/IByteBuffer.cs create mode 100644 Runtime/Buffers/IByteBuffer.cs.meta create mode 100644 Runtime/Buffers/Pin.cs create mode 100644 Runtime/Buffers/Pin.cs.meta create mode 100644 Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs create mode 100644 Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs.meta create mode 100644 Runtime/Defines.meta create mode 100644 Runtime/Defines/VertexKey.cs create mode 100644 Runtime/Defines/VertexKey.cs.meta create mode 100644 Runtime/Enums.meta create mode 100644 Runtime/Enums/EnumStrings.meta create mode 100644 Runtime/Enums/EnumStrings/GltfAccessorType.cs create mode 100644 Runtime/Enums/EnumStrings/GltfAccessorType.cs.meta create mode 100644 Runtime/Enums/EnumStrings/GltfAlphaMode.cs create mode 100644 Runtime/Enums/EnumStrings/GltfAlphaMode.cs.meta create mode 100644 Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs create mode 100644 Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs.meta create mode 100644 Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs create mode 100644 Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs.meta create mode 100644 Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs create mode 100644 Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs.meta create mode 100644 Runtime/Enums/UnityEngine.meta create mode 100644 Runtime/Enums/UnityEngine/CoreModule.cs create mode 100644 Runtime/Enums/UnityEngine/CoreModule.cs.meta create mode 100644 Runtime/Enums/UnityEngine/ParticleSystemModule.cs create mode 100644 Runtime/Enums/UnityEngine/ParticleSystemModule.cs.meta create mode 100644 Runtime/Enums/UnityEngine/PhysicsModule.cs create mode 100644 Runtime/Enums/UnityEngine/PhysicsModule.cs.meta create mode 100644 Runtime/Enums/UnityEngine/Rendering.cs create mode 100644 Runtime/Enums/UnityEngine/Rendering.cs.meta create mode 100644 Runtime/Enums/UnityEngine/SkyboxShader.cs create mode 100644 Runtime/Enums/UnityEngine/SkyboxShader.cs.meta create mode 100644 Runtime/Enums/WebGL.meta create mode 100644 Runtime/Enums/WebGL/GltfBufferViewTarget.cs create mode 100644 Runtime/Enums/WebGL/GltfBufferViewTarget.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfComponentType.cs create mode 100644 Runtime/Enums/WebGL/GltfComponentType.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfCullFaceMode.cs create mode 100644 Runtime/Enums/WebGL/GltfCullFaceMode.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs create mode 100644 Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs create mode 100644 Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs create mode 100644 Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfTextureTarget.cs create mode 100644 Runtime/Enums/WebGL/GltfTextureTarget.cs.meta create mode 100644 Runtime/Enums/WebGL/GltfTextureWrapMode.cs create mode 100644 Runtime/Enums/WebGL/GltfTextureWrapMode.cs.meta create mode 100644 Runtime/Extensions.meta create mode 100644 Runtime/Extensions/GltfAccessorTypeExtensions.cs create mode 100644 Runtime/Extensions/GltfAccessorTypeExtensions.cs.meta create mode 100644 Runtime/Extensions/GltfComponentTypeExtensions.cs create mode 100644 Runtime/Extensions/GltfComponentTypeExtensions.cs.meta create mode 100644 Runtime/Storage.meta create mode 100644 Runtime/Storage/GltfChunk.cs create mode 100644 Runtime/Storage/GltfChunk.cs.meta create mode 100644 Runtime/Storage/GltfChunkType.cs create mode 100644 Runtime/Storage/GltfChunkType.cs.meta create mode 100644 Runtime/Storage/GltfHeader.cs create mode 100644 Runtime/Storage/GltfHeader.cs.meta create mode 100644 Runtime/Structs.meta create mode 100644 Runtime/Structs/Color3.cs create mode 100644 Runtime/Structs/Color3.cs.meta create mode 100644 Runtime/Structs/Color4.cs create mode 100644 Runtime/Structs/Color4.cs.meta create mode 100644 Runtime/Structs/Matrix2.cs create mode 100644 Runtime/Structs/Matrix2.cs.meta create mode 100644 Runtime/Structs/Matrix3.cs create mode 100644 Runtime/Structs/Matrix3.cs.meta create mode 100644 Runtime/Structs/Vector4Uint.cs create mode 100644 Runtime/Structs/Vector4Uint.cs.meta create mode 100644 Runtime/Structs/Vector4Ushort.cs create mode 100644 Runtime/Structs/Vector4Ushort.cs.meta create mode 100644 Runtime/VgoGltf.asmdef create mode 100644 Runtime/VgoGltf.asmdef.meta create mode 100644 package.json create mode 100644 package.json.meta diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..72c60f4 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +## [1.0.0] - 2020-08-07 +Initial release. diff --git a/CHANGELOG.md.meta b/CHANGELOG.md.meta new file mode 100644 index 0000000..da61d02 --- /dev/null +++ b/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: de40421f0a20e354889cf7c8f5674355 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..128ee79 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Izayoi Jiichan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE.md.meta b/LICENSE.md.meta new file mode 100644 index 0000000..2978648 --- /dev/null +++ b/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 18f195aad8869974684774c7c64c960a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md new file mode 100644 index 0000000..d488e9d --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +# VgoGltf + +VgoGltf is the basic and common definition of glTF. + +___ +## Storage + +- GltfHeader +- GltfChunk + +## Buffers + +- IByteBuffer +- ArraySegmentByteBuffer +- ReadOnlyArraySegmentByteBuffer + +## Enums + +- WebGL + - GltfBufferViewTarget + - GltfComponentType + - GltfCullFaceMode + - GltfMeshPrimitiveMode + - GltfTextureMagFilterMode + - GltfTextureMinFilterMode + - GltfTextureTarget + - GltfTextureWrapMode +- EnumString + - GltfAccessorType + - GltfAlphaMode + - GltfAnimationChannelPath + - GltfAnimationInterpolationType + - GltfCameraProjectionType + +## Structs + +- Color3 +- Color4 +- Matrix2 +- Matrix3 +- Vector4Uint +- Vector4Ushort + +## Framework + +- .NET Standard 2.0 +- .NET Framework 4.7 + +___ +Last updated: 7 August, 2020 +Editor: Izayoi Jiichan + +*Copyright (C) 2020 Izayoi Jiichan. All Rights Reserved.* diff --git a/README.md.meta b/README.md.meta new file mode 100644 index 0000000..85e5c53 --- /dev/null +++ b/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 627c994c39dadbf4185d555b568157be +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime.meta b/Runtime.meta new file mode 100644 index 0000000..3d6d8b9 --- /dev/null +++ b/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0267ca8b5832a1540ac51b02a96c0fef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Buffers.meta b/Runtime/Buffers.meta new file mode 100644 index 0000000..c1be831 --- /dev/null +++ b/Runtime/Buffers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8caaaec02279c4e4484d3be3e02a8603 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Buffers/ArraySegmentByteBuffer.cs b/Runtime/Buffers/ArraySegmentByteBuffer.cs new file mode 100644 index 0000000..3187c05 --- /dev/null +++ b/Runtime/Buffers/ArraySegmentByteBuffer.cs @@ -0,0 +1,196 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf.Buffers +// @Class : ArraySegmentByteBuffer +// ---------------------------------------------------------------------- +namespace VgoGltf.Buffers +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Array Segment Byte Buffer + /// + public class ArraySegmentByteBuffer : IByteBuffer + { + #region Fields + + /// The bytes in the buffer. + protected byte[] _Bytes; + + /// The default byte size to extend when the buffer runs out of size. + protected readonly int _DefaultExtendSize = 10 * 1024; + + #endregion + + #region Properties + + /// Gets or sets the number of bytes allocated for this buffer. + public int Capacity { get; private set; } + + /// Gets or sets the current length of the buffer in bytes. + public int Length { get; private set; } + + /// Gets the maximum capacity of this instance. + public int MaxCapacity { get; } = 2 * 1024 * 1024; + + #endregion + + #region Constructors + + /// + /// Create a new instance of ArraySegmentByteBuffer with capacity. + /// + /// Specifies the initial size of the buffer. + public ArraySegmentByteBuffer(int capacity) + { + if (capacity <= 0) + { + throw new ArgumentOutOfRangeException(nameof(capacity)); + } + + _Bytes = new byte[capacity]; + + Length = _Bytes.Length; + + Capacity = capacity; + } + + #endregion + + #region Public Methods + + /// + /// Appends data to the buffer. + /// + /// + /// + /// + /// Returns the size of the appended data. + public int Append(ArraySegment data, int stride = 0) where T : struct + { + if (data == null) + { + throw new ArgumentNullException(nameof(data)); + } + + if (data.Count == 0) + { + throw new ArgumentException(nameof(data)); + } + + int perDataSize = Marshal.SizeOf(typeof(T)); + + if (stride == 0) + { + stride = perDataSize; + } + else if (stride < 0) + { + throw new ArgumentOutOfRangeException(nameof(stride)); + } + else if (stride < perDataSize) + { + throw new InvalidOperationException(); + } + + int dataCount = data.Count; + + int dataSize = stride * dataCount; + + ExtendBufferIfNecessary(dataSize); + + if (stride == perDataSize) + { + using (Pin pin = Pin.Create(data)) + { + Marshal.Copy(pin.Ptr, _Bytes, Length, dataSize); + } + + Length += dataSize; + + return dataSize; + } + else + { + int start = Length; + + for (int index = 0; index < dataCount; index++) + { + ArraySegment src = new ArraySegment(data.Array, data.Offset + index, perDataSize); + + using (Pin pin = Pin.Create(src)) + { + Marshal.Copy(pin.Ptr, _Bytes, start + index * stride, perDataSize); + } + } + + Length += dataSize; + + return dataSize; + } + } + + /// + /// Get the used byte data in the buffer. + /// + /// Returns the used byte data. + public ArraySegment GetBytes() + { + //if (m_bytes == null) + //{ + // return new ArraySegment(); + //} + return new ArraySegment(_Bytes, 0, Length); + } + + /// + /// Writes the buffer data to a byte array. + /// + /// A new byte array. + public byte[] ToArray() + { + byte[] destinationArray = new byte[Length]; + + Array.Copy(sourceArray: _Bytes, destinationArray, Length); + + return destinationArray; + } + + #endregion + + #region Private Methods + + /// + /// Extend the buffer if necessary. + /// + /// The data size to be written. + private void ExtendBufferIfNecessary(int dataSizeToWrite) + { + if (Length + dataSizeToWrite > Capacity) + { + int extendSize = (dataSizeToWrite > _DefaultExtendSize) ? dataSizeToWrite : _DefaultExtendSize; + + ExtendBuffer(extendSize); + } + } + + /// + /// Extend the buffer. + /// + /// The size to extend. + private void ExtendBuffer(int extendSize) + { + int newCapacity = Length + extendSize; + + byte[] newBuffer = new byte[newCapacity]; + + Buffer.BlockCopy(_Bytes, 0, newBuffer, 0, Length); + + _Bytes = newBuffer; + + Capacity = newCapacity; + } + + #endregion + } +} \ No newline at end of file diff --git a/Runtime/Buffers/ArraySegmentByteBuffer.cs.meta b/Runtime/Buffers/ArraySegmentByteBuffer.cs.meta new file mode 100644 index 0000000..e6af9bd --- /dev/null +++ b/Runtime/Buffers/ArraySegmentByteBuffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f74819af1e2367b458024dc55aa058b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Buffers/IByteBuffer.cs b/Runtime/Buffers/IByteBuffer.cs new file mode 100644 index 0000000..2ad9168 --- /dev/null +++ b/Runtime/Buffers/IByteBuffer.cs @@ -0,0 +1,49 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf.Buffers +// @Class : IByteBuffer +// ---------------------------------------------------------------------- +namespace VgoGltf.Buffers +{ + using System; + + /// + /// ByteBuffer Interface + /// + public interface IByteBuffer + { + #region Properties + + /// Gets or sets the number of bytes allocated for this buffer. + int Capacity { get; } + + /// Gets or sets the current length of the buffer in bytes. + int Length { get; } + + #endregion + + #region Public Methods + + /// + /// Appends data to the buffer. + /// + /// + /// + /// + /// Returns the size of the appended data. + int Append(ArraySegment data, int stride = 0) where T : struct; + + /// + /// Get the used byte data in the buffer. + /// + /// Returns the used byte data. + ArraySegment GetBytes(); + + /// + /// Writes the buffer data to a byte array. + /// + /// A new byte array. + byte[] ToArray(); + + #endregion + } +} diff --git a/Runtime/Buffers/IByteBuffer.cs.meta b/Runtime/Buffers/IByteBuffer.cs.meta new file mode 100644 index 0000000..aa2d978 --- /dev/null +++ b/Runtime/Buffers/IByteBuffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 235b1ea94557fc6448772ad5c4586e78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Buffers/Pin.cs b/Runtime/Buffers/Pin.cs new file mode 100644 index 0000000..b1de1cb --- /dev/null +++ b/Runtime/Buffers/Pin.cs @@ -0,0 +1,104 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf.Buffers +// @Class : Pin +// ---------------------------------------------------------------------- +namespace VgoGltf.Buffers +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Pin + /// + public static class Pin + { + /// + /// Create a Pin for the specified source. + /// + /// + /// + /// + public static Pin Create(ArraySegment src) where T : struct + { + return new Pin(src); + } + + /// + /// Create a Pin for the specified source. + /// + /// + /// + /// + public static Pin Create(T[] src) where T : struct + { + return new Pin(new ArraySegment(src)); + } + } + + /// + /// Pin + /// + /// + public class Pin : IDisposable where T : struct + { + /// + /// Create a new instance of Pin with src. + /// + /// + public Pin(ArraySegment src) + { + this.src = src; + pinnedArray = GCHandle.Alloc(src.Array, GCHandleType.Pinned); + } + + //~Pin() + //{ + // Dispose(false); + //} + + /// + protected bool disposedValue = false; + + /// + protected ArraySegment src; + + /// + protected GCHandle pinnedArray; + + /// + public int Length => src.Count * Marshal.SizeOf(typeof(T)); + + /// + public IntPtr Ptr => new IntPtr(pinnedArray.AddrOfPinnedObject().ToInt64() + src.Offset); + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); + // GC.SuppressFinalize(this); + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + /// + protected virtual void Dispose(bool disposing) + { + if (disposedValue == false) + { + if (disposing) + { + } + + if (pinnedArray.IsAllocated) + { + pinnedArray.Free(); + } + + disposedValue = true; + } + } + } +} diff --git a/Runtime/Buffers/Pin.cs.meta b/Runtime/Buffers/Pin.cs.meta new file mode 100644 index 0000000..c6c5cb4 --- /dev/null +++ b/Runtime/Buffers/Pin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0de7606cddb41004eab6632f4dbef995 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs b/Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs new file mode 100644 index 0000000..6bed06c --- /dev/null +++ b/Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs @@ -0,0 +1,84 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf.Buffers +// @Class : ReadOnlyArraySegmentByteBuffer +// ---------------------------------------------------------------------- +namespace VgoGltf.Buffers +{ + using System; + + /// + /// Read only Array Segment Byte Buffer + /// + public class ReadOnlyArraySegmentByteBuffer : IByteBuffer + { + #region Fields + + /// The bytes in the buffer. + private readonly ArraySegment _Bytes; + + #endregion + + #region Properties + + /// Gets or sets the number of bytes allocated for this buffer. + public int Capacity => _Bytes.Count; + + /// Gets or sets the current length of the buffer in bytes. + public int Length { get; private set; } + + #endregion + + #region Constructors + + /// + /// Create a new instance of ReadOnlyArraySegmentByteBuffer with bytes. + /// + /// The data to store in the buffer. + public ReadOnlyArraySegmentByteBuffer(ArraySegment bytes) + { + _Bytes = bytes; + + Length = bytes.Count; + } + + #endregion + + #region Public Methods + + /// + /// Appends data to the buffer. + /// + /// + /// + /// + /// Returns the size of the appended data. + public int Append(ArraySegment data, int stride = 0) where T : struct + { + throw new NotImplementedException(); + } + + /// + /// Get the used byte data in the buffer. + /// + /// Returns the used byte data. + public ArraySegment GetBytes() + { + return _Bytes; + } + + /// + /// Writes the buffer data to a byte array. + /// + /// A new byte array. + public byte[] ToArray() + { + byte[] destinationArray = new byte[_Bytes.Count]; + + Array.Copy(sourceArray: _Bytes.Array, _Bytes.Offset, destinationArray, 0, _Bytes.Count); + + return destinationArray; + } + + #endregion + } +} \ No newline at end of file diff --git a/Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs.meta b/Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs.meta new file mode 100644 index 0000000..717fb67 --- /dev/null +++ b/Runtime/Buffers/ReadOnlyArraySegmentByteBuffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba318b72f4029014ab2dfcfe72553cfb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Defines.meta b/Runtime/Defines.meta new file mode 100644 index 0000000..cf08206 --- /dev/null +++ b/Runtime/Defines.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 191a85bc607ef46488618480d2a1f751 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Defines/VertexKey.cs b/Runtime/Defines/VertexKey.cs new file mode 100644 index 0000000..63d9683 --- /dev/null +++ b/Runtime/Defines/VertexKey.cs @@ -0,0 +1,52 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : VertexKey +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// The vertex key name of mesh primitives. + public class VertexKey + { + /// POSITION + public const string Position = "POSITION"; + + /// NORMAL + public const string Normal = "NORMAL"; + + /// TANGENT + public const string Tangent = "TANGENT"; + + /// COLOR_0 + public const string Color0 = "COLOR_0"; + + /// COLOR_N + public const string ColorFormat = "COLOR_{0}"; + + /// TEXCOORD_0 + public const string TexCoord0 = "TEXCOORD_0"; + + /// TEXCOORD_1 + public const string TexCoord1 = "TEXCOORD_1"; + + /// TEXCOORD_2 + public const string TexCoord2 = "TEXCOORD_2"; + + /// TEXCOORD_3 + public const string TexCoord3 = "TEXCOORD_3"; + + /// TEXCOORD_N + public const string TexCoordFormat = "TEXCOORD_{0}"; + + /// JOINTS_0 + public const string Joints0 = "JOINTS_0"; + + /// JOINTS_N + public const string JointsFormat = "JOINTS_{0}"; + + /// WEIGHTS_0 + public const string Weights0 = "WEIGHTS_0"; + + /// WEIGHTS_N + public const string WeightsFormat = "WEIGHTS_{0}"; + } +} diff --git a/Runtime/Defines/VertexKey.cs.meta b/Runtime/Defines/VertexKey.cs.meta new file mode 100644 index 0000000..44428e9 --- /dev/null +++ b/Runtime/Defines/VertexKey.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 632eb10af60513f478e78f93589498d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums.meta b/Runtime/Enums.meta new file mode 100644 index 0000000..42addb3 --- /dev/null +++ b/Runtime/Enums.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 447e8a1558b3923449083a962557bf20 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/EnumStrings.meta b/Runtime/Enums/EnumStrings.meta new file mode 100644 index 0000000..a88b22b --- /dev/null +++ b/Runtime/Enums/EnumStrings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2869a27ed0a9ca419acfdae39c37ddf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/EnumStrings/GltfAccessorType.cs b/Runtime/Enums/EnumStrings/GltfAccessorType.cs new file mode 100644 index 0000000..2c37d69 --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAccessorType.cs @@ -0,0 +1,25 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfAccessorType +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Accessor Type + public enum GltfAccessorType + { + /// Scalar + SCALAR, + /// Vector2 + VEC2, + /// Vector3 + VEC3, + /// Vector4 + VEC4, + /// Matrix2x2 + MAT2, + /// Matrix3x3 + MAT3, + /// Matrix4x4 + MAT4, + } +} diff --git a/Runtime/Enums/EnumStrings/GltfAccessorType.cs.meta b/Runtime/Enums/EnumStrings/GltfAccessorType.cs.meta new file mode 100644 index 0000000..1f4f7c2 --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAccessorType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7b2dadada3049342baf96fad6dcc744 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/EnumStrings/GltfAlphaMode.cs b/Runtime/Enums/EnumStrings/GltfAlphaMode.cs new file mode 100644 index 0000000..d5be51e --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAlphaMode.cs @@ -0,0 +1,20 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfAlphaMode +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// The alpha mode. + public enum GltfAlphaMode + { + /// The alpha value is ignored and the rendered output is fully opaque. + OPAQUE = 0, + /// The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value. + MASK, + /// The alpha value is used to composite the source and destination areas. + /// The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator). + BLEND, + /// MToon + BLEND_ZWRITE, + } +} diff --git a/Runtime/Enums/EnumStrings/GltfAlphaMode.cs.meta b/Runtime/Enums/EnumStrings/GltfAlphaMode.cs.meta new file mode 100644 index 0000000..45a64d0 --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAlphaMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e26d5edf965ff5d49bf2b38efbce800d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs b/Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs new file mode 100644 index 0000000..6ff5969 --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs @@ -0,0 +1,19 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfAnimationChannelPath +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// The animation channel path. + public enum GltfAnimationChannelPath + { + /// + rotation, + /// + scale, + /// + translation, + /// + weights, + } +} diff --git a/Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs.meta b/Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs.meta new file mode 100644 index 0000000..f6fa62b --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAnimationChannelPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9f9a59f474b1574faccb73d251b91c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs b/Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs new file mode 100644 index 0000000..901cc6f --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs @@ -0,0 +1,27 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfAnimationInterpolationType +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Interpolation algorithm. + public enum GltfAnimationInterpolationType + { + /// The animated values are linearly interpolated between keyframes. + /// + /// When targeting a rotation, spherical linear interpolation (slerp) should be used to interpolate quaternions. + /// The number output of elements must equal the number of input elements. + /// + LINEAR, + /// The animated values remain constant to the output of the first keyframe, until the next keyframe. + /// The number of output elements must equal the number of input elements. + STEP, + /// The animation's interpolation is computed using a cubic spline with specified tangents. + /// + /// The number of output elements must equal three times the number of input elements. + /// For each input element, the output stores three elements, an in-tangent, a spline vertex, and an out-tangent. + /// There must be at least two keyframes when using this interpolation. + /// + CUBICSPLINE, + } +} diff --git a/Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs.meta b/Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs.meta new file mode 100644 index 0000000..3344da6 --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfAnimationInterpolationType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c4d9b5a59478bb4c804140f9a6c1c95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs b/Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs new file mode 100644 index 0000000..a30438c --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfCameraProjectionType +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Specifies if the camera uses a perspective or orthographic projection. + public enum GltfCameraProjectionType + { + /// perspective + perspective, + /// orthographic + orthographic, + } +} diff --git a/Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs.meta b/Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs.meta new file mode 100644 index 0000000..78f4a4e --- /dev/null +++ b/Runtime/Enums/EnumStrings/GltfCameraProjectionType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57a4e21081d869646965345b2f956405 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/UnityEngine.meta b/Runtime/Enums/UnityEngine.meta new file mode 100644 index 0000000..111921d --- /dev/null +++ b/Runtime/Enums/UnityEngine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 69d69793f384e75459f53cf55be78780 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/UnityEngine/CoreModule.cs b/Runtime/Enums/UnityEngine/CoreModule.cs new file mode 100644 index 0000000..bc3bac6 --- /dev/null +++ b/Runtime/Enums/UnityEngine/CoreModule.cs @@ -0,0 +1,66 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Select how gradients will be evaluated. + public enum GradientMode + { + /// Find the 2 keys adjacent to the requested evaluation time, and linearly interpolate between them to obtain a blended color. + Blend = 0, + /// Return a fixed color, by finding the first key whose time value is greater than the requested evaluation time. + Fixed = 1, + } + + /// The type of motion vectors that should be generated. + public enum MotionVectorGenerationMode + { + /// Use only camera movement to track motion. + Camera = 0, + /// Use a specific pass (if required) to track motion. + Object = 1, + /// Do not track motion. Motion vectors will be 0. + ForceNoMotion = 2, + } + + /// This enum controls the mode under which the sprite will interact with the masking system. + public enum SpriteMaskInteraction + { + /// The sprite will not interact with the masking system. + None = 0, + /// The sprite will be visible only in areas where a mask is present. + VisibleInsideMask = 1, + /// The sprite will be visible only in areas where no mask is present. + VisibleOutsideMask = 2, + } + + /// Determines how time is treated outside of the keyframed range of an AnimationClip or AnimationCurve. + public enum WrapMode + { + /// Reads the default repeat mode set higher up. + Default = 0, + /// When time reaches the end of the animation clip, the clip will automatically stop playing and time will be reset to beginning of the clip. + Once = 1, + //Clamp = 1, + /// When time reaches the end of the animation clip, time will continue at the beginning. + Loop = 2, + /// When time reaches the end of the animation clip, time will ping pong back between beginning and end. + PingPong = 4, + /// Plays back the animation. When it reaches the end, it will keep playing the last frame and never stop playing. + ClampForever = 8, + } + + /// Sets which weights to use when calculating curve segments. + public enum WeightedMode + { + /// Exclude both inWeight or outWeight when calculating curve segments. + None = 0, + /// Include inWeight when calculating the previous curve segment. + In = 1, + /// Include outWeight when calculating the next curve segment. + Out = 2, + /// Include inWeight and outWeight when calculating curve segments. + Both = 3, + } +} diff --git a/Runtime/Enums/UnityEngine/CoreModule.cs.meta b/Runtime/Enums/UnityEngine/CoreModule.cs.meta new file mode 100644 index 0000000..d52c09e --- /dev/null +++ b/Runtime/Enums/UnityEngine/CoreModule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b78fb02c8858884a88dbabe718fbcab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/UnityEngine/ParticleSystemModule.cs b/Runtime/Enums/UnityEngine/ParticleSystemModule.cs new file mode 100644 index 0000000..588e119 --- /dev/null +++ b/Runtime/Enums/UnityEngine/ParticleSystemModule.cs @@ -0,0 +1,364 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// + public enum ParticleSystemAnimationMode + { + /// + Grid = 0, + /// + Sprites = 1, + } + + /// + public enum ParticleSystemAnimationRowMode + { + /// + Custom = 0, + /// + Random = 1, + /// + MeshIndex = 2, + } + + /// + public enum ParticleSystemAnimationTimeMode + { + /// + Lifetime = 0, + /// + Speed = 1, + /// + FPS = 2, + } + + /// + public enum ParticleSystemAnimationType + { + /// + WholeSheet = 0, + /// + SingleRow = 1, + } + + /// + public enum ParticleSystemCollisionMode + { + /// + Collision3D = 0, + /// + Collision2D = 1, + } + + /// + public enum ParticleSystemCollisionQuality + { + /// + High = 0, + /// + Medium = 1, + /// + Low = 2, + } + + /// + public enum ParticleSystemCollisionType + { + /// + Planes = 0, + /// + World = 1, + } + + /// + public enum ParticleSystemCullingMode + { + /// + Automatic = 0, + /// + PauseAndCatchup = 1, + /// + Pause = 2, + /// + AlwaysSimulate = 3, + } + + /// + public enum ParticleSystemCurveMode + { + /// + Constant = 0, + /// + Curve = 1, + /// + TwoCurves = 2, + /// + TwoConstants = 3, + } + + /// + public enum ParticleSystemEmitterVelocityMode + { + /// + Transform = 0, + /// + Rigidbody = 1, + } + + /// + public enum ParticleSystemGameObjectFilter + { + /// + LayerMask = 0, + /// + List = 1, + /// + LayerMaskAndList = 2, + } + + /// + public enum ParticleSystemGradientMode + { + /// + Color = 0, + /// + Gradient = 1, + /// + TwoColors = 2, + /// + TwoGradients = 3, + /// + RandomColor = 4, + } + + /// + public enum ParticleSystemInheritVelocityMode + { + /// + Initial = 0, + /// + Current = 1, + } + + /// + public enum ParticleSystemMeshShapeType + { + /// + Vertex = 0, + /// + Edge = 1, + /// + Triangle = 2, + } + + /// + public enum ParticleSystemNoiseQuality + { + /// + Low = 0, + /// + Medium = 1, + /// + High = 2, + } + + /// + public enum ParticleSystemOverlapAction + { + /// + Ignore = 0, + /// + Kill = 1, + /// + Callback = 2, + } + + /// + public enum ParticleSystemRenderMode + { + /// + Billboard = 0, + /// + Stretch = 1, + /// + HorizontalBillboard = 2, + /// + VerticalBillboard = 3, + /// + Mesh = 4, + /// + None = 5, + } + + /// + public enum ParticleSystemRenderSpace + { + /// + View = 0, + /// + World = 1, + /// + Local = 2, + /// + Facing = 3, + /// + Velocity = 4, + } + + /// + public enum ParticleSystemRingBufferMode + { + /// + Disabled = 0, + /// + PauseUntilReplaced = 1, + /// + LoopUntilReplaced = 2, + } + + /// + public enum ParticleSystemScalingMode + { + /// + Hierarchy = 0, + /// + Local = 1, + /// + Shape = 2, + } + + /// + public enum ParticleSystemShapeMultiModeValue + { + /// + Random = 0, + /// + Loop = 1, + /// + PingPong = 2, + /// + BurstSpread = 3, + } + + /// + public enum ParticleSystemShapeTextureChannel + { + /// + Red = 0, + /// + Green = 1, + /// + Blue = 2, + /// + Alpha = 3, + } + + /// + public enum ParticleSystemShapeType + { + /// + Sphere = 0, + /// + SphereShell = 1, + /// + Hemisphere = 2, + /// + HemisphereShell = 3, + /// + Cone = 4, + /// + Box = 5, + /// + Mesh = 6, + /// + ConeShell = 7, + /// + ConeVolume = 8, + /// + ConeVolumeShell = 9, + /// + Circle = 10, + /// + CircleEdge = 11, + /// + SingleSidedEdge = 12, + /// + MeshRenderer = 13, + /// + SkinnedMeshRenderer = 14, + /// + BoxShell = 15, + /// + BoxEdge = 16, + /// + Donut = 17, + /// + Rectangle = 18, + /// + Sprite = 19, + /// + SpriteRenderer = 20, + } + + /// + public enum ParticleSystemSimulationSpace + { + /// + Local = 0, + /// + World = 1, + /// + Custom = 2, + } + + /// + public enum ParticleSystemSortMode + { + /// + None = 0, + /// + Distance = 1, + /// + OldestInFront = 2, + /// + YoungestInFront = 3, + } + + /// + public enum ParticleSystemStopAction + { + /// + None = 0, + /// + Disable = 1, + /// + Destroy = 2, + /// + Callback = 3, + } + + /// + public enum ParticleSystemTrailMode + { + /// + PerParticle = 0, + /// + Ribbon = 1, + } + + /// + public enum ParticleSystemTrailTextureMode + { + /// + Stretch = 0, + /// + Tile = 1, + /// + DistributePerSegment = 2, + /// + RepeatPerSegment = 3, + } +} diff --git a/Runtime/Enums/UnityEngine/ParticleSystemModule.cs.meta b/Runtime/Enums/UnityEngine/ParticleSystemModule.cs.meta new file mode 100644 index 0000000..3f9d5c6 --- /dev/null +++ b/Runtime/Enums/UnityEngine/ParticleSystemModule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9b118051f7d3eb4e84db11323e0004f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/UnityEngine/PhysicsModule.cs b/Runtime/Enums/UnityEngine/PhysicsModule.cs new file mode 100644 index 0000000..d68790f --- /dev/null +++ b/Runtime/Enums/UnityEngine/PhysicsModule.cs @@ -0,0 +1,69 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// The collision detection mode constants used for Rigidbody.collisionDetectionMode. + public enum CollisionDetectionMode + { + /// Continuous collision detection is off for this Rigidbody. + Discrete = 0, + /// Continuous collision detection is on for colliding with static mesh geometry. + Continuous = 1, + /// Continuous collision detection is on for colliding with static and dynamic geometry. + ContinuousDynamic = 2, + /// Speculative continuous collision detection is on for static and dynamic geometries. + ContinuousSpeculative = 3, + } + + /// Describes how physics materials of the colliding objects are combined. + public enum PhysicMaterialCombine + { + /// Averages the friction/bounce of the two colliding materials. + Average = 0, + /// Multiplies the friction/bounce of the two colliding materials. + Multiply = 1, + /// Uses the smaller friction/bounce of the two colliding materials. + Minimum = 2, + /// Uses the larger friction/bounce of the two colliding materials. + Maximum = 3, + } + + /// Use these flags to constrain motion of Rigidbodies. + /// [Flag] + public enum RigidbodyConstraints + { + /// No constraints. + None = 0, + /// Freeze motion along the X-axis. + FreezePositionX = 2, + /// Freeze motion along the Y-axis. + FreezePositionY = 4, + /// Freeze motion along the Z-axis. + FreezePositionZ = 8, + /// Freeze motion along all axes. + FreezePosition = 14, + /// Freeze rotation along the X-axis. + FreezeRotationX = 16, + /// Freeze rotation along the Y-axis. + FreezeRotationY = 32, + /// Freeze rotation along the Z-axis. + FreezeRotationZ = 64, + /// Freeze rotation along all axes. + FreezeRotation = 112, + /// Freeze rotation and motion along all axes. + FreezeAll = 126 + } + + /// Rigidbody interpolation mode. + public enum RigidbodyInterpolation + { + /// No Interpolation. + None = 0, + /// Interpolation will always lag a little bit behind but can be smoother than extrapolation. + Interpolate = 1, + /// Extrapolation will predict the position of the rigidbody based on the current velocity. + Extrapolate = 2, + } +} diff --git a/Runtime/Enums/UnityEngine/PhysicsModule.cs.meta b/Runtime/Enums/UnityEngine/PhysicsModule.cs.meta new file mode 100644 index 0000000..3994a09 --- /dev/null +++ b/Runtime/Enums/UnityEngine/PhysicsModule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e6d98ff22a2d8934588efda79a4a0991 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/UnityEngine/Rendering.cs b/Runtime/Enums/UnityEngine/Rendering.cs new file mode 100644 index 0000000..ad02feb --- /dev/null +++ b/Runtime/Enums/UnityEngine/Rendering.cs @@ -0,0 +1,148 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + + /// + public enum CullMode + { + /// + Off, + /// + Front, + /// + Back, + } + + /// Enum describing what part of a light contribution can be baked. + [Flags] + public enum LightmapBakeType + { + /// Mixed lights allow a mix of realtime and baked lighting, based on the Mixed Lighting Mode used. + Mixed = 1, + /// Baked lights cannot move or change in any way during run time. + Baked = 2, + /// Realtime lights cast run time light and shadows. + Realtime = 4, + } + + /// Light probe interpolation type. + public enum LightProbeUsage + { + /// Light Probes are not used. The Scene's ambient probe is provided to the shader. + Off = 0, + /// Simple light probe interpolation is used. + BlendProbes = 1, + /// Uses a 3D grid of interpolated light probes. + UseProxyVolume = 2, + /// The light probe shader uniform values are extracted from the material property block set on the renderer. + CustomProvided = 4, + } + + /// How the Light is rendered. + public enum LightRenderMode + { + /// Automatically choose the render mode. + Auto = 0, + /// Force the Light to be a pixel light. + ForcePixel = 1, + /// Force the Light to be a vertex light. + ForceVertex = 2, + } + + /// Shadow resolution options for a Light. + public enum LightShadowResolution + { + /// Use resolution from QualitySettings (default). + FromQualitySettings = -1, + /// Low shadow map resolution. + Low = 0, + /// Medium shadow map resolution. + Medium = 1, + /// High shadow map resolution. + High = 2, + /// Very high shadow map resolution. + VeryHigh = 3, + } + + /// Shadow casting options for a Light. + public enum LightShadows + { + /// Do not cast shadows (default). + None = 0, + /// Cast "hard" shadows (with no shadow filtering). + Hard = 1, + /// Cast "soft" shadows (with 4x PCF filtering). + Soft = 2, + } + + /// Describes the shape of a spot light. + public enum LightShape + { + /// The shape of the spot light resembles a cone. + Cone = 0, + /// The shape of the spotlight resembles a pyramid or frustum. + Pyramid = 1, + /// The shape of the spot light resembles a box oriented along the ray direction. + Box = 2, + } + + /// The type of a Light. + public enum LightType + { + /// The light is a spot light. + Spot = 0, + /// The light is a directional light. + Directional = 1, + /// The light is a point light. + Point = 2, + /// The light is a area light. + Area = 3, + /// The light is a rectangle shaped area light. + Rectangle = 3, + /// The light is a disc shaped area light. + Disc = 4, + } + + /// Reflection Probe usage. + public enum ReflectionProbeUsage + { + /// Reflection probes are disabled, skybox will be used for reflection. + Off = 0, + /// Reflection probes are enabled. Blending occurs only between probes, useful in indoor environments. + BlendProbes = 1, + /// Reflection probes are enabled. + BlendProbesAndSkybox = 2, + /// Reflection probes are enabled, but no blending will occur between probes when there are two overlapping volumes. + Simple = 3, + } + + /// How shadows are cast from this object. + public enum ShadowCastingMode + { + /// No shadows are cast from this object. + Off = 0, + /// Shadows are cast from this object. + On = 1, + /// Shadows are cast from this object, treating it as two-sided. + TwoSided = 2, + /// Object casts shadows, but is otherwise invisible in the Scene. + ShadowsOnly = 3, + } + + /// + public enum UVChannelFlags + { + /// + UV0 = 0, + /// + UV1 = 1, + /// + UV2 = 2, + /// + UV3 = 3, + } +} diff --git a/Runtime/Enums/UnityEngine/Rendering.cs.meta b/Runtime/Enums/UnityEngine/Rendering.cs.meta new file mode 100644 index 0000000..bdce305 --- /dev/null +++ b/Runtime/Enums/UnityEngine/Rendering.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57f5b2868c8443b4eac6c554ee27ee03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/UnityEngine/SkyboxShader.cs b/Runtime/Enums/UnityEngine/SkyboxShader.cs new file mode 100644 index 0000000..b296d89 --- /dev/null +++ b/Runtime/Enums/UnityEngine/SkyboxShader.cs @@ -0,0 +1,46 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Image Type + public enum SkyboxImageType + { + /// 360 Degrees + Degrees360 = 0, + /// 180 Degrees + Degrees180 = 1, + } + + /// 3D Layout + public enum SkyboxLayout + { + /// None + None = 0, + /// Side by Side + SideBySide = 1, + /// Over Under + OverUnder = 2, + } + + /// Mapping + public enum SkyboxMapping + { + /// 6 Frames Layout + SixFramesLayout = 0, + /// Latitude Longitude Layout + LatitudeLongitudeLayout = 1, + } + + /// Sun + public enum SkyboxSunDisk + { + /// None + None = 0, + /// Simple + Simple = 1, + /// High Quality + HighQuality = 2, + } +} diff --git a/Runtime/Enums/UnityEngine/SkyboxShader.cs.meta b/Runtime/Enums/UnityEngine/SkyboxShader.cs.meta new file mode 100644 index 0000000..da9019c --- /dev/null +++ b/Runtime/Enums/UnityEngine/SkyboxShader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8022b1c16ce59df419198613934c75c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL.meta b/Runtime/Enums/WebGL.meta new file mode 100644 index 0000000..54a60a7 --- /dev/null +++ b/Runtime/Enums/WebGL.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 796e89e9d9998f34b919665ae16f6212 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfBufferViewTarget.cs b/Runtime/Enums/WebGL/GltfBufferViewTarget.cs new file mode 100644 index 0000000..8db0c96 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfBufferViewTarget.cs @@ -0,0 +1,26 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfBufferViewTarget +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// The target that the GPU buffer should be bound to. + /// WebGL.GLenum.BufferObjects + public enum GltfBufferViewTarget : uint + { + /// + NONE = 0x0000, + /// + /// 34962 + ARRAY_BUFFER = 0x8892, + /// + /// 34963 + ELEMENT_ARRAY_BUFFER = 0x8893, + ///// + ///// 34964 + //ARRAY_BUFFER_BINDING = 0x8894, + ///// + ///// 34965 + //ELEMENT_ARRAY_BUFFER_BINDING = 0x8895, + } +} diff --git a/Runtime/Enums/WebGL/GltfBufferViewTarget.cs.meta b/Runtime/Enums/WebGL/GltfBufferViewTarget.cs.meta new file mode 100644 index 0000000..6779e02 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfBufferViewTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f55909034b37ffc48bdfaf6fc09f2ba9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfComponentType.cs b/Runtime/Enums/WebGL/GltfComponentType.cs new file mode 100644 index 0000000..0abcc02 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfComponentType.cs @@ -0,0 +1,35 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfComponentType +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// + /// WebGL.GLenum.DataType + public enum GltfComponentType : uint + { + /// + NONE = 0x0000, + /// byte + /// 5120 + BYTE = 0x1400, + /// unsigned byte + /// 5121 + UNSIGNED_BYTE = 0x1401, + /// short + /// 5122 + SHORT = 0x1402, + /// unsigned short + /// 5123 + UNSIGNED_SHORT = 0x1403, + /// int + /// 5124 + INT = 0x1404, + /// unsigned int + /// 5125 + UNSIGNED_INT = 0x1405, + /// float + /// 5126 + FLOAT = 0x1406, + } +} diff --git a/Runtime/Enums/WebGL/GltfComponentType.cs.meta b/Runtime/Enums/WebGL/GltfComponentType.cs.meta new file mode 100644 index 0000000..53ee9da --- /dev/null +++ b/Runtime/Enums/WebGL/GltfComponentType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b26b1e6793ec484a9a882736f7247f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfCullFaceMode.cs b/Runtime/Enums/WebGL/GltfCullFaceMode.cs new file mode 100644 index 0000000..e2bddaf --- /dev/null +++ b/Runtime/Enums/WebGL/GltfCullFaceMode.cs @@ -0,0 +1,19 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfCullFaceMode +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// + public enum GltfCullFaceMode : uint + { + /// + NONE = 0x0000, + /// + FRONT = 0x0404, + /// + BACK = 0x0405, + /// + FRONT_AND_BACK = 0x0408, + } +} diff --git a/Runtime/Enums/WebGL/GltfCullFaceMode.cs.meta b/Runtime/Enums/WebGL/GltfCullFaceMode.cs.meta new file mode 100644 index 0000000..f1be5a9 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfCullFaceMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ce98a6f715af3048b2ae74f846703d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs b/Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs new file mode 100644 index 0000000..fcb41e2 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs @@ -0,0 +1,26 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfMeshPrimitiveMode +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// The type of primitives to render. + /// WebGL.GLenum.BeginMode + public enum GltfMeshPrimitiveMode : uint + { + /// + POINTS = 0x0000, + /// + LINES = 0x0001, + /// + LINE_LOOP = 0x0002, + /// + LINE_STRIP = 0x0003, + /// + TRIANGLES = 0x0004, + /// + TRIANGLE_STRIP = 0x0005, + /// + TRIANGLE_FAN = 0x0006, + } +} diff --git a/Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs.meta b/Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs.meta new file mode 100644 index 0000000..23eb491 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfMeshPrimitiveMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54234f070fc73164ba5dba094c226e42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs b/Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs new file mode 100644 index 0000000..a3a719a --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs @@ -0,0 +1,20 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfTextureMagFilterMode +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Magnification filter mode. + /// WebGL.GLenum.TextureMagFilter + public enum GltfTextureMagFilterMode : uint + { + /// + NONE = 0x0000, + /// + /// 9728 + NEAREST = 0x2600, + /// + /// 9729 + LINEAR = 0x2601, + } +} diff --git a/Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs.meta b/Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs.meta new file mode 100644 index 0000000..b290435 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureMagFilterMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d430d31d69b1cd84897a56de8f9254f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs b/Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs new file mode 100644 index 0000000..31ce19f --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs @@ -0,0 +1,32 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfTextureMinFilterMode +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Minification filter mode. + /// WebGL.GLenum.TextureMinFilter + public enum GltfTextureMinFilterMode : uint + { + /// + NONE = 0x0000, + /// + /// 9728 + NEAREST = 0x2600, + /// + /// 9729 + LINEAR = 0x2601, + /// + /// 9984 + NEAREST_MIPMAP_NEAREST = 0x2700, + /// + /// 9985 + LINEAR_MIPMAP_NEAREST = 0x2701, + /// + /// 9986 + NEAREST_MIPMAP_LINEAR = 0x2702, + /// + /// 9987 + LINEAR_MIPMAP_LINEAR = 0x2703, + } +} diff --git a/Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs.meta b/Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs.meta new file mode 100644 index 0000000..a5a0a4c --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureMinFilterMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b48b256466d1224dbe80cb4ac0e382c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfTextureTarget.cs b/Runtime/Enums/WebGL/GltfTextureTarget.cs new file mode 100644 index 0000000..02b99b5 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureTarget.cs @@ -0,0 +1,33 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfTextureTarget +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// + public enum GltfTextureTarget : uint + { + /// + TEXTURE_2D = 0x0DE1, + /// + TEXTURE = 0x2801, + /// + TEXTURE_CUBE_MAP = 0x8513, + /// + TEXTURE_BINDING_CUBE_MAP = 0x8514, + /// + TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515, + /// + TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516, + /// + TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517, + /// + TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518, + /// + TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519, + /// + TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A, + /// + MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C, + } +} diff --git a/Runtime/Enums/WebGL/GltfTextureTarget.cs.meta b/Runtime/Enums/WebGL/GltfTextureTarget.cs.meta new file mode 100644 index 0000000..206938c --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureTarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67fdf644ace051f44baa0e80c51b0b41 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Enums/WebGL/GltfTextureWrapMode.cs b/Runtime/Enums/WebGL/GltfTextureWrapMode.cs new file mode 100644 index 0000000..b507f21 --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureWrapMode.cs @@ -0,0 +1,23 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Enum : GltfTextureWrapMode +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// + /// WebGL.GLenum.TextureWrapMode + public enum GltfTextureWrapMode : uint + { + /// + NONE = 0x0000, + /// + /// 10497 + REPEAT = 0x2901, + /// + /// 33071 + CLAMP_TO_EDGE = 0x812F, + /// + /// 33648 + MIRRORED_REPEAT = 0x8370, + } +} diff --git a/Runtime/Enums/WebGL/GltfTextureWrapMode.cs.meta b/Runtime/Enums/WebGL/GltfTextureWrapMode.cs.meta new file mode 100644 index 0000000..d8e36fd --- /dev/null +++ b/Runtime/Enums/WebGL/GltfTextureWrapMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d80cb1098627c0b48a425fb4479296b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Extensions.meta b/Runtime/Extensions.meta new file mode 100644 index 0000000..7586572 --- /dev/null +++ b/Runtime/Extensions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 244be7e3de8ce164a8bff5e1c41a08d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Extensions/GltfAccessorTypeExtensions.cs b/Runtime/Extensions/GltfAccessorTypeExtensions.cs new file mode 100644 index 0000000..bd568f5 --- /dev/null +++ b/Runtime/Extensions/GltfAccessorTypeExtensions.cs @@ -0,0 +1,42 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : GltfAccessorTypeExtensions +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + + /// + /// glTF AccessorType Extensions + /// + public static class GltfAccessorTypeExtensions + { + /// + /// Gets the number of elements in the accessor type. + /// + /// The accessor type. + /// the number of elements in the accessor type. + public static int TypeCount(this GltfAccessorType accessorType) + { + switch (accessorType) + { + case GltfAccessorType.SCALAR: + return 1; + case GltfAccessorType.VEC2: + return 2; + case GltfAccessorType.VEC3: + return 3; + case GltfAccessorType.VEC4: + return 4; + case GltfAccessorType.MAT2: + return 4; + case GltfAccessorType.MAT3: + return 9; + case GltfAccessorType.MAT4: + return 16; + default: + throw new NotImplementedException(); + } + } + } +} diff --git a/Runtime/Extensions/GltfAccessorTypeExtensions.cs.meta b/Runtime/Extensions/GltfAccessorTypeExtensions.cs.meta new file mode 100644 index 0000000..89ff213 --- /dev/null +++ b/Runtime/Extensions/GltfAccessorTypeExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f881d7824cc2efd43b3acc7d5c7a2a03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Extensions/GltfComponentTypeExtensions.cs b/Runtime/Extensions/GltfComponentTypeExtensions.cs new file mode 100644 index 0000000..e59334f --- /dev/null +++ b/Runtime/Extensions/GltfComponentTypeExtensions.cs @@ -0,0 +1,38 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : GltfComponentTypeExtensions +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + + /// + /// glTF ComponentType Extensions + /// + public static class GltfComponentTypeExtensions + { + /// + /// Gets the byte size of the component type. + /// + /// The component type. + /// The byte size of the component type. + public static int ByteSize(this GltfComponentType componentType) + { + switch (componentType) + { + case GltfComponentType.BYTE: + case GltfComponentType.UNSIGNED_BYTE: + return 1; + case GltfComponentType.SHORT: + case GltfComponentType.UNSIGNED_SHORT: + return 2; + case GltfComponentType.INT: + case GltfComponentType.UNSIGNED_INT: + case GltfComponentType.FLOAT: + return 4; + default: + throw new NotImplementedException(); + } + } + } +} diff --git a/Runtime/Extensions/GltfComponentTypeExtensions.cs.meta b/Runtime/Extensions/GltfComponentTypeExtensions.cs.meta new file mode 100644 index 0000000..f38b924 --- /dev/null +++ b/Runtime/Extensions/GltfComponentTypeExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e22ff05570959f942a16a5746d9c66dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Storage.meta b/Runtime/Storage.meta new file mode 100644 index 0000000..fcfb5f4 --- /dev/null +++ b/Runtime/Storage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 601bab3f1d2a59a44b479fff529018ed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Storage/GltfChunk.cs b/Runtime/Storage/GltfChunk.cs new file mode 100644 index 0000000..0aecba4 --- /dev/null +++ b/Runtime/Storage/GltfChunk.cs @@ -0,0 +1,115 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : GltfChunk +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using VgoGltf.Buffers; + + /// + /// glTF Chunk + /// + public class GltfChunk + { + #region Constructors + + /// + /// Create a new instance of GltfChunk with chunkType and chunkData. + /// + /// + /// + public GltfChunk(GltfChunkType chunkType, IByteBuffer chunkData) + { + int paddingCount = CalculatePaddingCount(chunkData.Length, quotient: 4); + + ChunkLength = (uint)(chunkData.Length + paddingCount); + ChunkType = chunkType; + ChunkData = chunkData; + } + + #endregion + + #region Fields + + /// Chunk Data Length + public readonly uint ChunkLength = 0; + + /// Chunk Type + public readonly GltfChunkType ChunkType; + + /// Chunk Data + public readonly IByteBuffer ChunkData = default; + + #endregion + + #region Properties + + /// Chunk All Length + public uint AllLength => 4 + 4 + ChunkLength; + + #endregion + + #region Public Methods + + /// + /// Gets ChunkData that has been padded. + /// + /// + public byte[] GetPaddingedData() + { + if (ChunkData == default) + { + return null; + } + + int paddingCount = CalculatePaddingCount(ChunkData.Length, quotient: 4); + + byte[] bytes = new byte[ChunkData.Length + paddingCount]; + + Array.Copy(ChunkData.ToArray(), bytes, ChunkData.Length); + + byte pad; + + if (ChunkType == GltfChunkType.Json) + { + pad = (byte)0x20; // space + } + else + { + pad = (byte)0x00; + } + + for (int i = ChunkData.Length - 1; i < paddingCount; i++) + { + bytes[i] = pad; + } + + return bytes; + } + + #endregion + + #region Protected Methods + + /// + /// Calculate the number of paddings. + /// + /// + /// + /// The number of paddings. + /// + /// When the quotient is 4, the padding is 0, 1, 2, 3. + /// + protected int CalculatePaddingCount(int targetCount, int quotient) + { + int remainder = targetCount % quotient; + + int paddingCount = (remainder == 0) ? 0 : quotient - remainder; + + return paddingCount; + } + + #endregion + } +} diff --git a/Runtime/Storage/GltfChunk.cs.meta b/Runtime/Storage/GltfChunk.cs.meta new file mode 100644 index 0000000..54508bd --- /dev/null +++ b/Runtime/Storage/GltfChunk.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a5f7e950dc486c418edd2486c20249b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Storage/GltfChunkType.cs b/Runtime/Storage/GltfChunkType.cs new file mode 100644 index 0000000..2890d5e --- /dev/null +++ b/Runtime/Storage/GltfChunkType.cs @@ -0,0 +1,17 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : GltfChunkType +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// Chunk Type + public enum GltfChunkType : uint + { + /// JSON + /// "JSON" + Json = 0x4E4F534A, + /// BIN + /// "BIN " + Bin = 0x004E4942, + } +} diff --git a/Runtime/Storage/GltfChunkType.cs.meta b/Runtime/Storage/GltfChunkType.cs.meta new file mode 100644 index 0000000..97a20ff --- /dev/null +++ b/Runtime/Storage/GltfChunkType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e4a0203fd79fc674f8339639dcf37b81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Storage/GltfHeader.cs b/Runtime/Storage/GltfHeader.cs new file mode 100644 index 0000000..3e92731 --- /dev/null +++ b/Runtime/Storage/GltfHeader.cs @@ -0,0 +1,25 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Class : GltfHeader +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + /// + /// glTF Header + /// + public struct GltfHeader + { + #region Fields + + /// Magic + public uint Magic; + + /// Version + public uint Version; + + /// Length + public uint Length; + + #endregion + } +} diff --git a/Runtime/Storage/GltfHeader.cs.meta b/Runtime/Storage/GltfHeader.cs.meta new file mode 100644 index 0000000..aa5530b --- /dev/null +++ b/Runtime/Storage/GltfHeader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79e43dd5bc13ac242aa1ae91a422ea49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs.meta b/Runtime/Structs.meta new file mode 100644 index 0000000..5c0fda1 --- /dev/null +++ b/Runtime/Structs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b28b461173622a4d9ce4e6b6ea82d8a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs/Color3.cs b/Runtime/Structs/Color3.cs new file mode 100644 index 0000000..a0d9ca2 --- /dev/null +++ b/Runtime/Structs/Color3.cs @@ -0,0 +1,45 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Struct : Color3 +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Color3 + /// + [Serializable] + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct Color3 + { + /// Red + public float R; + + /// Green + public float G; + + /// Blue + public float B; + + /// + /// Create a new instance of Color3 with r, g, b. + /// + /// + /// + /// + public Color3(float r, float g, float b) + { + R = r; + G = g; + B = b; + } + + /// Black + public static Color3 Black => new Color3(0.0f, 0.0f, 0.0f); + + /// White + public static Color3 White => new Color3(1.0f, 1.0f, 1.0f); + } +} diff --git a/Runtime/Structs/Color3.cs.meta b/Runtime/Structs/Color3.cs.meta new file mode 100644 index 0000000..76b1faf --- /dev/null +++ b/Runtime/Structs/Color3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b08084f70de300e4781ee31213d43386 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs/Color4.cs b/Runtime/Structs/Color4.cs new file mode 100644 index 0000000..79e1e14 --- /dev/null +++ b/Runtime/Structs/Color4.cs @@ -0,0 +1,57 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Struct : Color4 +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Color4 + /// + [Serializable] + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct Color4 + { + /// Red + public float R; + + /// Green + public float G; + + /// Blue + public float B; + + /// Alpha + public float A; + + /// + /// Create a new instance of Color4 with r, g, b. + /// + /// + /// + /// + public Color4(float r, float g, float b) : this(r, g, b, 1.0f) { } + + /// + /// Create a new instance of Color4 with r, g, b, a. + /// + /// + /// + /// + public Color4(float r, float g, float b, float a) + { + R = r; + G = g; + B = b; + A = a; + } + + /// Black + public static Color4 Black => new Color4(0.0f, 0.0f, 0.0f, 1.0f); + + /// White + public static Color4 White => new Color4(1.0f, 1.0f, 1.0f, 1.0f); + } +} diff --git a/Runtime/Structs/Color4.cs.meta b/Runtime/Structs/Color4.cs.meta new file mode 100644 index 0000000..f76d79c --- /dev/null +++ b/Runtime/Structs/Color4.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e957077ef6218b8498bc061769a49f73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs/Matrix2.cs b/Runtime/Structs/Matrix2.cs new file mode 100644 index 0000000..4bbf11a --- /dev/null +++ b/Runtime/Structs/Matrix2.cs @@ -0,0 +1,50 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Struct : Matrix2 +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Matrix2 + /// + [Serializable] + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct Matrix2 + { + /// + public float M11; + + /// + public float M12; + + /// + public float M21; + + /// + public float M22; + + /// + /// Create a new instance of Matrix2. + /// + /// + /// + /// + /// + public Matrix2(float m11, float m12, float m21, float m22) + { + M11 = m11; + M12 = m12; + M21 = m21; + M22 = m22; + } + + /// + public static Matrix2 Identity { get; } = new Matrix2(1, 0, 0, 1); + + /// + public static Matrix2 Zero { get; } = new Matrix2(0, 0, 0, 0); + } +} diff --git a/Runtime/Structs/Matrix2.cs.meta b/Runtime/Structs/Matrix2.cs.meta new file mode 100644 index 0000000..e27ec1c --- /dev/null +++ b/Runtime/Structs/Matrix2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25f2d834fb57467469632fe54a46f4b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs/Matrix3.cs b/Runtime/Structs/Matrix3.cs new file mode 100644 index 0000000..26fc6bf --- /dev/null +++ b/Runtime/Structs/Matrix3.cs @@ -0,0 +1,75 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Struct : Matrix3 +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Matrix3 + /// + [Serializable] + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct Matrix3 + { + /// + public float M11; + + /// + public float M12; + + /// + public float M13; + + /// + public float M21; + + /// + public float M22; + + /// + public float M23; + + /// + public float M31; + + /// + public float M32; + + /// + public float M33; + + /// + /// Create a new instance of Matrix3. + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public Matrix3(float m11, float m12, float m13, float m21, float m22, float m23, float m31, float m32, float m33) + { + M11 = m11; + M12 = m12; + M13 = m13; + M21 = m21; + M22 = m22; + M23 = m23; + M31 = m31; + M32 = m32; + M33 = m33; + } + + /// + public static Matrix3 Identity { get; } = new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1); + + /// + public static Matrix3 Zero { get; } = new Matrix3(0, 0, 0, 0, 0, 0, 0, 0, 0); + } +} diff --git a/Runtime/Structs/Matrix3.cs.meta b/Runtime/Structs/Matrix3.cs.meta new file mode 100644 index 0000000..408762d --- /dev/null +++ b/Runtime/Structs/Matrix3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61d7a6b756044d74fac030b0944907e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs/Vector4Uint.cs b/Runtime/Structs/Vector4Uint.cs new file mode 100644 index 0000000..1af0398 --- /dev/null +++ b/Runtime/Structs/Vector4Uint.cs @@ -0,0 +1,44 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Struct : Vector4Uint +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Vector4 (uint) + /// + [Serializable] + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct Vector4Uint + { + /// + public uint X; + + /// + public uint Y; + + /// + public uint Z; + + /// + public uint W; + + /// + /// Create a new instance of Vector4Uint with x and y and z and w. + /// + /// + /// + /// + /// + public Vector4Uint(uint x, uint y, uint z, uint w) + { + X = x; + Y = y; + Z = z; + W = w; + } + } +} diff --git a/Runtime/Structs/Vector4Uint.cs.meta b/Runtime/Structs/Vector4Uint.cs.meta new file mode 100644 index 0000000..9bcc1c2 --- /dev/null +++ b/Runtime/Structs/Vector4Uint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac40dcd40a85d5d4f9a33e0fde723a59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Structs/Vector4Ushort.cs b/Runtime/Structs/Vector4Ushort.cs new file mode 100644 index 0000000..1e57069 --- /dev/null +++ b/Runtime/Structs/Vector4Ushort.cs @@ -0,0 +1,44 @@ +// ---------------------------------------------------------------------- +// @Namespace : VgoGltf +// @Struct : Vector4Ushort +// ---------------------------------------------------------------------- +namespace VgoGltf +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Vector4 (ushort) + /// + [Serializable] + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct Vector4Ushort + { + /// + public ushort X; + + /// + public ushort Y; + + /// + public ushort Z; + + /// + public ushort W; + + /// + /// Create a new instance of Vector4Ushort with x and y and z and w. + /// + /// + /// + /// + /// + public Vector4Ushort(ushort x, ushort y, ushort z, ushort w) + { + X = x; + Y = y; + Z = z; + W = w; + } + } +} diff --git a/Runtime/Structs/Vector4Ushort.cs.meta b/Runtime/Structs/Vector4Ushort.cs.meta new file mode 100644 index 0000000..1c8fa82 --- /dev/null +++ b/Runtime/Structs/Vector4Ushort.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6bacab49201fb7429be1a72c74096aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/VgoGltf.asmdef b/Runtime/VgoGltf.asmdef new file mode 100644 index 0000000..d42b313 --- /dev/null +++ b/Runtime/VgoGltf.asmdef @@ -0,0 +1,13 @@ +{ + "name": "VgoGltf", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Runtime/VgoGltf.asmdef.meta b/Runtime/VgoGltf.asmdef.meta new file mode 100644 index 0000000..5c059fa --- /dev/null +++ b/Runtime/VgoGltf.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7a429307a0147424d85a7b0aa7126cac +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package.json b/package.json new file mode 100644 index 0000000..26c1957 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "izayoi.vgo.gltf", + "displayName": "VgoGltf", + "description": "VgoGltf is the basic and common definition of glTF.", + "version": "1.0.0", + "type": "tool", + "category": "", + "keywords": [ + "gltf", + "glb", + "vgo" + ], + "unity": "2018.4", + "unityRelease": "25f1", + "author": { + "name" : "Izayoi Jiichan" + }, + "license": { + "type": "MIT", + "url": "https://github.com/izayoijiichan/vgo.gltf/tree/master/LICENSE.md" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/izayoijiichan/vgo.gltf.git" + }, + "dependencies": {} +} \ No newline at end of file diff --git a/package.json.meta b/package.json.meta new file mode 100644 index 0000000..1fe2758 --- /dev/null +++ b/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2013f468a26c16c4e8a30336d80464ef +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: