/// <summary> /// Set ParticleSystem shape field value. /// </summary> /// <param name="particleSystem"></param> /// <param name="vgoModule"></param> /// <param name="textureItemList"></param> protected virtual void SetModuleValue(ParticleSystem particleSystem, VGO_PS_ShapeModule vgoModule, IList <TextureItem> textureItemList) { if (vgoModule == null) { return; } ShapeModule module = particleSystem.shape; module.enabled = vgoModule.enabled; module.shapeType = vgoModule.shapeType; module.angle = vgoModule.angle; module.radius = vgoModule.radius; module.donutRadius = vgoModule.donutRadius; module.radiusMode = vgoModule.radiusMode; module.radiusSpread = vgoModule.radiusSpread; module.radiusSpeed = VgoParticleSystemMinMaxCurveConverter.CreateMinMaxCurve(vgoModule.radiusSpeed); module.radiusSpeedMultiplier = vgoModule.radiusSpeedMultiplier; module.radiusThickness = vgoModule.radiusThickness; module.boxThickness = ArrayConverter.ToVector3(vgoModule.boxThickness, reverseZ: true); module.arc = vgoModule.arc; module.arcMode = vgoModule.arcMode; module.arcSpread = vgoModule.arcSpread; module.arcSpeed = VgoParticleSystemMinMaxCurveConverter.CreateMinMaxCurve(vgoModule.arcSpeed); module.arcSpeedMultiplier = vgoModule.arcSpeedMultiplier; module.length = vgoModule.length; module.meshShapeType = vgoModule.meshShapeType; module.meshSpawnMode = vgoModule.meshSpawnMode; module.meshSpawnSpread = vgoModule.meshSpawnSpread; module.meshSpawnSpeed = VgoParticleSystemMinMaxCurveConverter.CreateMinMaxCurve(vgoModule.meshSpawnSpeed); module.meshSpawnSpeedMultiplier = vgoModule.meshSpawnSpeedMultiplier; //module.mesh; //module.meshRenderer; //module.skinnedMeshRenderer; module.useMeshMaterialIndex = vgoModule.useMeshMaterialIndex; module.meshMaterialIndex = vgoModule.meshMaterialIndex; module.useMeshColors = vgoModule.useMeshColors; //module.sprite; //module.spriteRenderer; module.normalOffset = vgoModule.normalOffset; if ((textureItemList != null) && (-1 < vgoModule.textureIndex) && (vgoModule.textureIndex < textureItemList.Count)) { module.texture = textureItemList[vgoModule.textureIndex].Texture; } module.textureClipChannel = vgoModule.textureClipChannel; module.textureClipThreshold = vgoModule.textureClipThreshold; module.textureColorAffectsParticles = vgoModule.textureColorAffectsParticles; module.textureAlphaAffectsParticles = vgoModule.textureAlphaAffectsParticles; module.textureBilinearFiltering = vgoModule.textureBilinearFiltering; module.textureUVChannel = vgoModule.textureUVChannel; module.position = ArrayConverter.ToVector3(vgoModule.position, reverseZ: true); module.rotation = ArrayConverter.ToVector3(vgoModule.rotation, reverseZ: true); module.scale = ArrayConverter.ToVector3(vgoModule.scale); module.alignToDirection = vgoModule.alignToDirection; module.randomPositionAmount = vgoModule.randomPositionAmount; module.sphericalDirectionAmount = vgoModule.sphericalDirectionAmount; module.randomDirectionAmount = vgoModule.randomDirectionAmount; }
/// <summary> /// Set Collider field value. /// </summary> /// <param name="collider"></param> /// <param name="vgoCollider"></param> public static void SetComponentValue(Collider collider, VGO_Collider vgoCollider) { if (collider == null) { return; } if (vgoCollider == null) { return; } Type type = collider.GetType(); if (type == typeof(BoxCollider)) { var boxCollider = collider as BoxCollider; if (vgoCollider.type == ColliderType.Box) { boxCollider.enabled = vgoCollider.enabled; boxCollider.isTrigger = vgoCollider.isTrigger; boxCollider.center = ArrayConverter.ToVector3(vgoCollider.center, reverseZ: true); boxCollider.size = ArrayConverter.ToVector3(vgoCollider.size); boxCollider.sharedMaterial = VgoPhysicMaterialConverter.ToPhysicMaterial(vgoCollider.physicMaterial); } } else if (type == typeof(CapsuleCollider)) { var capsuleCollider = collider as CapsuleCollider; if (vgoCollider.type == ColliderType.Capsule) { capsuleCollider.enabled = vgoCollider.enabled; capsuleCollider.isTrigger = vgoCollider.isTrigger; capsuleCollider.center = ArrayConverter.ToVector3(vgoCollider.center, reverseZ: true); capsuleCollider.radius = vgoCollider.radius; capsuleCollider.height = vgoCollider.height; capsuleCollider.direction = vgoCollider.direction; capsuleCollider.sharedMaterial = VgoPhysicMaterialConverter.ToPhysicMaterial(vgoCollider.physicMaterial); } } else if (type == typeof(SphereCollider)) { var sphereCollider = collider as SphereCollider; if (vgoCollider.type == ColliderType.Sphere) { sphereCollider.enabled = vgoCollider.enabled; sphereCollider.isTrigger = vgoCollider.isTrigger; sphereCollider.center = ArrayConverter.ToVector3(vgoCollider.center, reverseZ: true); sphereCollider.radius = vgoCollider.radius; sphereCollider.sharedMaterial = VgoPhysicMaterialConverter.ToPhysicMaterial(vgoCollider.physicMaterial); } } }
/// <summary> /// Set particleSystemRenderer field value. /// </summary> /// <param name="particleSystemRenderer"></param> /// <param name="vgoRenderer"></param> /// <param name="materialList"></param> public virtual void SetComponentValue(ParticleSystemRenderer particleSystemRenderer, VGO_PS_Renderer vgoRenderer, IList <Material> materialList) { if (vgoRenderer == null) { return; } particleSystemRenderer.enabled = vgoRenderer.enabled; particleSystemRenderer.renderMode = vgoRenderer.renderMode; // Billboard particleSystemRenderer.cameraVelocityScale = vgoRenderer.cameraVelocityScale; particleSystemRenderer.velocityScale = vgoRenderer.velocityScale; particleSystemRenderer.lengthScale = vgoRenderer.lengthScale; particleSystemRenderer.normalDirection = vgoRenderer.normalDirection; // Material if ((materialList != null) && (-1 < vgoRenderer.sharedMaterial) && (vgoRenderer.sharedMaterial < materialList.Count)) { particleSystemRenderer.sharedMaterial = materialList[vgoRenderer.sharedMaterial]; } if ((materialList != null) && (-1 < vgoRenderer.trailMaterialIndex) && (vgoRenderer.trailMaterialIndex < materialList.Count)) { particleSystemRenderer.trailMaterial = materialList[vgoRenderer.trailMaterialIndex]; } particleSystemRenderer.sortMode = vgoRenderer.sortMode; particleSystemRenderer.sortingFudge = vgoRenderer.sortingFudge; particleSystemRenderer.minParticleSize = vgoRenderer.minParticleSize; particleSystemRenderer.maxParticleSize = vgoRenderer.maxParticleSize; particleSystemRenderer.alignment = vgoRenderer.alignment; particleSystemRenderer.flip = ArrayConverter.ToVector3(vgoRenderer.flip, reverseZ: true); particleSystemRenderer.allowRoll = vgoRenderer.allowRoll; particleSystemRenderer.pivot = ArrayConverter.ToVector3(vgoRenderer.pivot, reverseZ: true); particleSystemRenderer.maskInteraction = vgoRenderer.maskInteraction; particleSystemRenderer.enableGPUInstancing = vgoRenderer.enableGPUInstancing; // Shadow particleSystemRenderer.shadowCastingMode = vgoRenderer.shadowCastingMode; particleSystemRenderer.receiveShadows = vgoRenderer.receiveShadows; particleSystemRenderer.shadowBias = vgoRenderer.shadowBias; particleSystemRenderer.motionVectorGenerationMode = vgoRenderer.motionVectorGenerationMode; particleSystemRenderer.forceRenderingOff = vgoRenderer.forceRenderingOff; particleSystemRenderer.rendererPriority = vgoRenderer.rendererPriority; particleSystemRenderer.renderingLayerMask = vgoRenderer.renderingLayerMask; particleSystemRenderer.sortingLayerID = vgoRenderer.sortingLayerID; particleSystemRenderer.sortingOrder = vgoRenderer.sortingOrder; particleSystemRenderer.lightProbeUsage = vgoRenderer.lightProbeUsage; particleSystemRenderer.reflectionProbeUsage = vgoRenderer.reflectionProbeUsage; // @notice VgoTransformConverter.SetComponentValue(particleSystemRenderer.probeAnchor, vgoRenderer.probeAnchor); if (particleSystemRenderer.sharedMaterial != null) { //SetVertexStream(particleSystemRenderer, particleSystemRenderer.sharedMaterial); } }