private void PostGenerate(MeshFilter mf) { if (m_ForEditor) { m_MeshMgr.m_ColliderDirty = true; } else { if (m_CreateBoxCollider) { BoxCollider bc = mf.gameObject.GetComponent <BoxCollider>(); if (bc != null) { BoxCollider.DestroyImmediate(bc); } RecalcCreationMeshBounds(mf.mesh); bc = mf.gameObject.AddComponent <BoxCollider>(); bc.size *= WhiteCat.PEVCConfig.instance.creationColliderScale; bc.material = WhiteCat.PEVCConfig.instance.physicMaterial; } // particle VCParticlePlayer pp = mf.GetComponent <VCParticlePlayer>(); pp.LocalPosition = VCUtils.RandPosInBoundingBox(mf.mesh.bounds); } var cc = mf.GetComponentInParent <WhiteCat.CreationController>(); if (cc) { cc.OnNewMeshBuild(mf); } }
private void BuildStructure() { m_Prefab = new GameObject("Creation_" + m_ObjectID.ToString() + " (" + m_IsoData.m_HeadInfo.Name + ")"); m_Prefab.transform.parent = VCEditor.Instance.m_CreationGroup.transform; m_Prefab.transform.localPosition = Vector3.zero; m_Prefab.layer = VCConfig.s_ProductLayer; m_Prefab.SetActive(false); m_Root = new GameObject("Root"); m_Root.transform.parent = m_Prefab.transform; m_Root.transform.localPosition = Vector3.zero; m_Root.layer = VCConfig.s_ProductLayer; m_PartGroup = new GameObject("Parts"); m_PartGroup.transform.parent = m_Root.transform; m_PartGroup.transform.localPosition = Vector3.zero; m_PartGroup.layer = VCConfig.s_ProductLayer; m_MeshGroup = new GameObject("Meshes"); m_MeshGroup.transform.parent = m_Root.transform; m_MeshGroup.transform.localPosition = Vector3.zero; m_MeshGroup.layer = VCConfig.s_ProductLayer; m_DecalGroup = new GameObject("Decals"); m_DecalGroup.transform.parent = m_Root.transform; m_DecalGroup.transform.localPosition = Vector3.zero; m_DecalGroup.layer = VCConfig.s_ProductLayer; m_EffectGroup = new GameObject("Effects"); m_EffectGroup.transform.parent = m_Root.transform; m_EffectGroup.transform.localPosition = Vector3.zero; m_EffectGroup.layer = VCConfig.s_ProductLayer; m_RootL = new GameObject("Root_L"); m_RootL.transform.parent = m_Prefab.transform; m_RootL.transform.localPosition = Vector3.zero; m_RootL.layer = VCConfig.s_ProductLayer; m_PartGroupL = new GameObject("Parts_L"); m_PartGroupL.transform.parent = m_RootL.transform; m_PartGroupL.transform.localPosition = Vector3.zero; m_PartGroupL.layer = VCConfig.s_ProductLayer; m_MeshGroupL = new GameObject("Meshes_L"); m_MeshGroupL.transform.parent = m_RootL.transform; m_MeshGroupL.transform.localPosition = Vector3.zero; m_MeshGroupL.layer = VCConfig.s_ProductLayer; m_DecalGroupL = new GameObject("Decals_L"); m_DecalGroupL.transform.parent = m_RootL.transform; m_DecalGroupL.transform.localPosition = Vector3.zero; m_DecalGroupL.layer = VCConfig.s_ProductLayer; m_EffectGroupL = new GameObject("Effects_L"); m_EffectGroupL.transform.parent = m_RootL.transform; m_EffectGroupL.transform.localPosition = Vector3.zero; m_EffectGroupL.layer = VCConfig.s_ProductLayer; bool dbRoot = m_IsoData.m_HeadInfo.Category == EVCCategory.cgDbSword; VCESceneSetting sceneSetting = m_IsoData.m_HeadInfo.FindSceneSetting(); foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpDecal) { if (dbRoot) { bool isleft = cdata.m_Position.x < 0.5f * m_IsoData.m_HeadInfo.xSize * sceneSetting.m_VoxelSize; if (isleft) { cdata.CreateEntity(false, m_DecalGroupL.transform); } else { cdata.CreateEntity(false, m_DecalGroup.transform); } } else { cdata.CreateEntity(false, m_DecalGroup.transform); } } else if (cdata.m_Type == EVCComponent.cpEffect) { if (dbRoot) { bool isleft = cdata.m_Position.x < 0.5f * m_IsoData.m_HeadInfo.xSize * sceneSetting.m_VoxelSize; if (isleft) { cdata.CreateEntity(false, m_EffectGroupL.transform); } else { cdata.CreateEntity(false, m_EffectGroup.transform); } } else { cdata.CreateEntity(false, m_EffectGroup.transform); } } else if (cdata.m_Type == EVCComponent.cpDbSwordHilt) { if ((cdata as VCFixedHandPartData).m_LeftHand) { cdata.CreateEntity(false, m_PartGroupL.transform); VCParticlePlayer pp = cdata.m_Entity.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftDamaged; pp.LocalPosition = cdata.m_Entity.GetComponent <VCEComponentTool>().m_SelBound.transform.localPosition; m_MeshMgrL = m_MeshGroupL.AddComponent <VCMeshMgr>(); m_MeshMgrL.m_VoxelSize = sceneSetting.m_VoxelSize; m_MeshMgrL.m_ColorMap = m_IsoData.m_Colors; m_MeshMgrL.m_ColliderDirty = false; m_MeshMgrL.m_MeshMat = null; m_MeshMgrL.m_DaggerMesh = true; m_MeshMgrL.m_LeftSidePos = cdata.m_Position.x < 0.5f * m_IsoData.m_HeadInfo.xSize * sceneSetting.m_VoxelSize; m_MeshMgrL.Init(); } else { cdata.CreateEntity(false, m_PartGroup.transform); VCParticlePlayer pp = cdata.m_Entity.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftDamaged; pp.LocalPosition = cdata.m_Entity.GetComponent <VCEComponentTool>().m_SelBound.transform.localPosition; m_MeshMgr = m_MeshGroup.AddComponent <VCMeshMgr>(); m_MeshMgr.m_VoxelSize = sceneSetting.m_VoxelSize; m_MeshMgr.m_ColorMap = m_IsoData.m_Colors; m_MeshMgr.m_ColliderDirty = false; m_MeshMgr.m_MeshMat = null; m_MeshMgr.m_DaggerMesh = true; m_MeshMgr.m_LeftSidePos = cdata.m_Position.x < 0.5f * m_IsoData.m_HeadInfo.xSize * sceneSetting.m_VoxelSize; m_MeshMgr.Init(); } } else { cdata.CreateEntity(false, m_PartGroup.transform); VCParticlePlayer pp = cdata.m_Entity.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftDamaged; pp.LocalPosition = cdata.m_Entity.GetComponent <VCEComponentTool>().m_SelBound.transform.localPosition; m_MeshMgr = m_MeshGroup.AddComponent <VCMeshMgr>(); m_MeshMgr.m_VoxelSize = sceneSetting.m_VoxelSize; m_MeshMgr.m_ColorMap = m_IsoData.m_Colors; m_MeshMgr.m_ColliderDirty = false; m_MeshMgr.m_MeshMat = null; m_MeshMgr.m_DaggerMesh = false; m_MeshMgr.m_LeftSidePos = false; m_MeshMgr.Init(); } } if (m_MeshMgr == null) { m_MeshMgr = m_MeshGroup.AddComponent <VCMeshMgr>(); m_MeshMgr.m_VoxelSize = sceneSetting.m_VoxelSize; m_MeshMgr.m_ColorMap = m_IsoData.m_Colors; m_MeshMgr.m_ColliderDirty = false; m_MeshMgr.m_MeshMat = null; m_MeshMgr.m_DaggerMesh = false; m_MeshMgr.m_LeftSidePos = false; m_MeshMgr.Init(); } }
public void ChunkProcPostGenMesh(IVxSurfExtractReq ireq) { if (m_MeshMgr == null) { return; } SurfExtractReqMC req = ireq as SurfExtractReqMC; if (req.IsInvalid) { Debug.Log("[VCSystem] RemoveChunkInSet" + req._chunk.ChunkPosLod + ":" + req._chunkStamp + "|" + req._chunk.StampOfUpdating); return; } IntVector3 pos = SNChunkPosToChunkPos(new IntVector3(req._chunk.ChunkPosLod.x, req._chunk.ChunkPosLod.y, req._chunk.ChunkPosLod.z)); int mesh_cnt = req.FillMesh(null); m_MeshMgr.Clamp(pos, mesh_cnt); int index = 0; while (mesh_cnt > 0) { GameObject targetgo = m_MeshMgr.QueryAtIndex(pos, index); if (targetgo == null) { targetgo = new GameObject(); // mf targetgo.AddComponent <MeshFilter>(); // mr MeshRenderer mr = targetgo.AddComponent <MeshRenderer>(); mr.material = m_MeshMgr.m_MeshMat; mr.receiveShadows = true; mr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On; // mc // MeshCollider mc = targetgo.AddComponent<MeshCollider>(); //mc.sharedMesh = null; // pp if (!m_ForEditor) { VCParticlePlayer pp = targetgo.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftDamaged; pp.LocalPosition = Vector3.zero; } m_MeshMgr.Set(pos, index, targetgo); } else { // MeshCollider mc = targetgo.GetComponent<MeshCollider>(); // mc.sharedMesh = null; } MeshFilter targetmf = targetgo.GetComponent <MeshFilter>(); Mesh mesh = targetmf.mesh; mesh.Clear(); mesh_cnt = req.FillMesh(mesh); // Customize mesh for VCSystem int vert_cnt = mesh.vertexCount; Color32[] colors = new Color32[vert_cnt]; Vector3[] normals = new Vector3[vert_cnt]; Vector3[] vertices = mesh.vertices; for (int i = 0; i < vert_cnt; ++i) { colors[i] = VCIsoData.BLANK_COLOR; } for (int i = 0; i < vertices.Length; i += 3) { Vector3 normal = Vector3.Cross(vertices[i] - vertices[i + 1], vertices[i] - vertices[i + 2]).normalized; normals[i] = normal; normals[i + 1] = normal; normals[i + 2] = normal; } mesh.normals = normals; mesh.colors32 = colors; m_MeshMgr.UpdateMeshColor(targetmf); PostGenerate(targetmf); ++index; } }
private void BuildCreation() { #region Root Transform // [VCCase] - Set creation root Transform if (m_Attribute.m_Type == ECreation.Sword) { Transform pivot = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpSwordHilt || cdata.m_Type == EVCComponent.cpLgSwordHilt) { pivot = cdata.m_Entity.transform; break; } } m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_Root.transform.Rotate(Vector3.up, -90, Space.World); m_Root.transform.Rotate(Vector3.right, 90, Space.World); m_Root.transform.localPosition = -pivot.position; } else if (m_Attribute.m_Type == ECreation.SwordLarge) { Transform pivot = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpLgSwordHilt) { pivot = cdata.m_Entity.transform; break; } } m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_Root.transform.Rotate(Vector3.up, -90, Space.World); m_Root.transform.Rotate(Vector3.right, 90, Space.World); m_Root.transform.localPosition = -pivot.position; } else if (m_Attribute.m_Type == ECreation.SwordDouble) { Transform pivot = null; int cdcnt = 0; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpDbSwordHilt && (cdata as VCFixedHandPartData).m_LeftHand) { pivot = cdata.m_Entity.transform; //SingleHandSword Transform go = cdata.m_Entity.transform.FindChild("SingleHandSword");//VCConfig.s_Parts[cdata.m_ComponentId].m_ResObj go.gameObject.name = "SingleHandSwordL"; m_RootL.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_RootL.transform.Rotate(Vector3.up, -90, Space.World); m_RootL.transform.Rotate(Vector3.right, 90, Space.World); m_RootL.transform.Rotate(Vector3.up, 180, Space.World); m_RootL.transform.Rotate(Vector3.forward, 180, Space.World); m_RootL.transform.localPosition = -pivot.position; cdcnt++; } if (cdata.m_Type == EVCComponent.cpDbSwordHilt && !(cdata as VCFixedHandPartData).m_LeftHand) { pivot = cdata.m_Entity.transform; Transform go = cdata.m_Entity.transform.FindChild("SingleHandSword"); go.gameObject.name = "SingleHandSwordR"; //m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); //m_Root.transform.Rotate(Vector3.up, -90, Space.World); //m_Root.transform.Rotate(Vector3.right, 90, Space.World); //m_Root.transform.localPosition = pivot.position; m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_Root.transform.Rotate(Vector3.up, -90, Space.World); m_Root.transform.Rotate(Vector3.right, 90, Space.World); m_Root.transform.Rotate(Vector3.up, 180, Space.World); m_Root.transform.Rotate(Vector3.forward, 180, Space.World); m_Root.transform.localPosition = -pivot.position; cdcnt++; } if (cdcnt == 2) { break; } } } else if (m_Attribute.m_Type == ECreation.Bow) { Transform pivot = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpBowGrip) { pivot = cdata.m_Entity.transform; break; } } AlignPivotInChild(m_Root.transform, pivot); } else if (m_Attribute.m_Type == ECreation.Axe) { Transform pivot = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpAxeHilt) { pivot = cdata.m_Entity.transform; break; } } m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_Root.transform.Rotate(Vector3.up, -90, Space.World); m_Root.transform.Rotate(Vector3.right, 90, Space.World); m_Root.transform.localPosition = -pivot.position; } else if (m_Attribute.m_Type == ECreation.Shield) { Transform pivot = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpShieldHandle) { pivot = cdata.m_Entity.GetComponent <VCPShieldHandle>().m_PivotPoint; break; } } m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_Root.transform.Rotate(Vector3.right, 90, Space.World); m_Root.transform.localPosition = -pivot.position; } else if (m_Attribute.m_Type == ECreation.HandGun || m_Attribute.m_Type == ECreation.Rifle) { Transform pivot = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpGunHandle) { pivot = cdata.m_Entity.GetComponent <VCPGunHandle>().m_FirstHandPoint; break; } } m_Root.transform.localRotation = Quaternion.Inverse(pivot.rotation); m_Root.transform.Rotate(Vector3.up, -90, Space.World); m_Root.transform.Rotate(Vector3.right, 90, Space.World); m_Root.transform.localPosition = -pivot.position; } else if (m_Attribute.m_Type == ECreation.Vehicle) { Vector3 pivot = m_Attribute.m_CenterOfMass; float sum_y = 0; int wheel_cnt = 0; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpVehicleWheel) { sum_y += cdata.m_Entity.GetComponent <VCEComponentTool>().m_DrawPivot.position.y; wheel_cnt++; } } pivot.y = sum_y / (float)wheel_cnt - 0.1f; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } else if (m_Attribute.m_Type == ECreation.Aircraft) { Vector3 pivot = m_Attribute.m_CenterOfMass; pivot.y = 0; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } else if (m_Attribute.m_Type == ECreation.Boat) { Vector3 pivot = m_Attribute.m_CenterOfMass; pivot.y = 0; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } else if (m_Attribute.m_Type == ECreation.SimpleObject) { VCComponentData pivotCmpt = null; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpPivot) { pivotCmpt = cdata; break; } } Vector3 pivot; if (pivotCmpt != null) { pivot = pivotCmpt.m_Position; } else { pivot = m_Attribute.m_CenterOfMass; } pivot.y = 0; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } else if (m_Attribute.m_Type == ECreation.Robot) { Vector3 pivot = m_Attribute.m_CenterOfMass; pivot.y = 0; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } else if (m_Attribute.m_Type == ECreation.AITurret) { Vector3 pivot = m_Attribute.m_CenterOfMass; pivot.y = 0; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } else if (m_Attribute.m_Type == ECreation.ArmorHead || m_Attribute.m_Type == ECreation.ArmorBody || m_Attribute.m_Type == ECreation.ArmorArmAndLeg || m_Attribute.m_Type == ECreation.ArmorHandAndFoot || m_Attribute.m_Type == ECreation.ArmorDecoration ) { Vector3 pivot = m_Attribute.m_CenterOfMass; pivot.y = 0; m_Root.transform.localRotation = Quaternion.identity; m_Root.transform.localPosition = -pivot; } #endregion #region Top Script // [VCCase] - Create top scripts creationController = m_Prefab.AddComponent <CreationController>(); creationController.enabled = false; creationController.Init( m_PartGroup.transform, m_MeshGroup.transform, m_DecalGroup.transform, m_EffectGroup.transform, this); switch (m_Attribute.m_Type) { case ECreation.Sword: { PeSword sword = m_Prefab.AddComponent <PeSword>(); VCPSwordHilt properties = FindComponent <VCPSwordHilt>(EVCComponent.cpSwordHilt); properties.CopyTo(sword, this); float weight = creationController.creationData.m_Attribute.m_Weight; sword.m_AnimSpeed = VCUtility.GetSwordAnimSpeed(weight); //set attacktrigger height if (properties.Attacktrigger != null) { for (int i = 0; i < properties.Attacktrigger.attackParts.Length; i++) { properties.Attacktrigger.attackParts[i].capsule.heigh = creationController.creationData.m_Attribute.m_AtkHeight.x; properties.Attacktrigger.attackParts[i].capsule.offset.y -= creationController.creationData.m_Attribute.m_AtkHeight.z; } } } break; case ECreation.SwordLarge: { PeSword sword = m_Prefab.AddComponent <PeSword>(); VCPSwordHilt properties = FindComponent <VCPSwordHilt>(EVCComponent.cpLgSwordHilt); properties.CopyTo(sword, this); float weight = creationController.creationData.m_Attribute.m_Weight; sword.m_AnimSpeed = VCUtility.GetSwordAnimSpeed(weight); //set attacktrigger height if (properties.Attacktrigger != null) { for (int i = 0; i < properties.Attacktrigger.attackParts.Length; i++) { properties.Attacktrigger.attackParts[i].capsule.heigh = creationController.creationData.m_Attribute.m_AtkHeight.x; properties.Attacktrigger.attackParts[i].capsule.offset.y -= creationController.creationData.m_Attribute.m_AtkHeight.z; } } } break; case ECreation.SwordDouble: { PETwoHandWeapon sword = m_Prefab.AddComponent <PETwoHandWeapon>(); VCPSwordHilt properties = FindComponent <VCPSwordHilt>(EVCComponent.cpDbSwordHilt); properties.CopyTo(sword, this); sword.m_LHandWeapon = m_RootL; float weight = creationController.creationData.m_Attribute.m_Weight; sword.m_AnimSpeed = VCUtility.GetSwordAnimSpeed(weight); //set attacktrigger height int cnt = 0; foreach (VCComponentData cdata in m_IsoData.m_Components) { if (cdata.m_Type == EVCComponent.cpDbSwordHilt && (cdata as VCFixedHandPartData).m_LeftHand && properties.Attacktrigger != null) { cnt++; VCPSwordHilt hiltL = cdata.m_Entity.GetComponent <VCPSwordHilt>(); if (hiltL == null) { continue; } for (int i = 0; i < properties.Attacktrigger.attackParts.Length; i++) { hiltL.Attacktrigger.attackParts[i].capsule.heigh = creationController.creationData.m_Attribute.m_AtkHeight.x; hiltL.Attacktrigger.attackParts[i].capsule.offset.y -= creationController.creationData.m_Attribute.m_AtkHeight.z; } } if (cdata.m_Type == EVCComponent.cpDbSwordHilt && !(cdata as VCFixedHandPartData).m_LeftHand && properties.Attacktrigger != null) { cnt++; VCPSwordHilt hiltR = cdata.m_Entity.GetComponent <VCPSwordHilt>(); if (hiltR == null) { continue; } for (int i = 0; i < properties.Attacktrigger.attackParts.Length; i++) { hiltR.Attacktrigger.attackParts[i].capsule.heigh = creationController.creationData.m_Attribute.m_AtkHeight.y; hiltR.Attacktrigger.attackParts[i].capsule.offset.y -= creationController.creationData.m_Attribute.m_AtkHeight.w; } } if (cnt == 2) { break; } } } break; case ECreation.Bow: { PEBow bow = m_Prefab.AddComponent <PEBow>(); VCPBowGrip bowProperties = FindComponent <VCPBowGrip>(EVCComponent.cpBowGrip); bowProperties.CopyTo(bow, this); } break; case ECreation.Axe: { PEAxe axe = m_Prefab.AddComponent <PEAxe>(); VCPAxeHilt axeProperties = FindComponent <VCPAxeHilt>(EVCComponent.cpAxeHilt); axeProperties.CopyTo(axe, this); float weight = creationController.creationData.m_Attribute.m_Weight; axe.m_AnimSpeed = VCUtility.GetAxeAnimSpeed(weight); } break; case ECreation.Shield: { PESheild sheild = m_Prefab.AddComponent <PESheild>(); sheild.showOnVehicle = false; } break; case ECreation.Rifle: case ECreation.HandGun: { PEGun gun = m_Prefab.AddComponent <PEGun>(); VCPGunHandle handleProperties = FindComponent <VCPGunHandle>(EVCComponent.cpGunHandle); VCPGunMuzzle muzzleProperties = FindComponent <VCPGunMuzzle>(EVCComponent.cpGunMuzzle); handleProperties.CopyTo(gun); muzzleProperties.CopyTo(gun); } break; case ECreation.Vehicle: { VCParticlePlayer pp = m_Prefab.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftExplode; pp.LocalPosition = creationController.bounds.center; break; } case ECreation.Aircraft: { VCParticlePlayer pp = m_Prefab.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftExplode; pp.LocalPosition = creationController.bounds.center; break; } case ECreation.Boat: { VCParticlePlayer pp = m_Prefab.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftExplode; pp.LocalPosition = creationController.bounds.center; break; } case ECreation.Robot: { VCParticlePlayer pp = m_Prefab.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftExplode; pp.LocalPosition = creationController.bounds.center; break; } case ECreation.AITurret: { VCParticlePlayer pp = m_Prefab.AddComponent <VCParticlePlayer>(); pp.FunctionTag = VCParticlePlayer.ftExplode; pp.LocalPosition = creationController.bounds.center; break; } case ECreation.SimpleObject: break; case ECreation.ArmorHead: case ECreation.ArmorBody: case ECreation.ArmorArmAndLeg: case ECreation.ArmorHandAndFoot: case ECreation.ArmorDecoration: break; default: break; } #endregion }