void AddSchemeNode(int nType, ScpReader reader, int row) { switch (nType) { case (int)LightingEffectConfigType.Bind: { LightingEffect_Bind bindEffect = ScriptableObject.CreateInstance <LightingEffect_Bind>(); FillBaseData(bindEffect, reader, row); bindEffect.bCreateOutsideScreen = reader.GetInt(row, (int)Column_Bind.COL_CREATEOUTSCREEN, 0) > 0 ? true : false; bindEffect.scale = reader.GetFloat(row, (int)Column_Bind.COL_SCALE, 0); bindEffect.effectStartTick = reader.GetInt(row, (int)Column_Bind.COL_STARTTICK, 0); bindEffect.effectLiveTick = reader.GetInt(row, (int)Column_Bind.COL_LIVETICK, 0); bindEffect.effectDispearTick = reader.GetInt(row, (int)Column_Bind.COL_DISPEARTICK, 0); bindEffect.posBindBone = reader.GetString(row, (int)Column_Bind.COL_POSBINDBONE, ""); string[] posOffsetStrArry = reader.GetString(row, (int)Column_Bind.COL_POSOFFSET, "").Split(';'); bindEffect.posOffset = StrArry2Vector3(posOffsetStrArry); bindEffect.rotationBindBone = reader.GetString(row, (int)Column_Bind.COL_ROTBINDBONE, ""); string[] rotationOffsetStrArry = reader.GetString(row, (int)Column_Bind.COL_ROTOFFSET, "").Split(';'); bindEffect.rotationOffset = StrArry2Vector3(rotationOffsetStrArry); bindEffect.faceToCamera = reader.GetInt(row, (int)Column_Bind.COL_FACETOCAM, 0) > 0 ? true : false; bindEffect.offsetToSurface = reader.GetInt(row, (int)Column_Bind.COL_OFFSETTOSURFACE, 0) > 0 ? true : false; int bindType = reader.GetInt(row, (int)Column_Bind.COL_BINDTYPE, 0); if (Enum.IsDefined(typeof(BindType), bindType)) { bindEffect.bindType = (BindType)bindType; } bindEffect.faceAganistTarget = reader.GetInt(row, (int)Column_Bind.COL_FACEAGNISTTARGET, 0) > 0 ? true : false; bindEffect.bProjectOnFloor = reader.GetInt(row, (int)Column_Bind.COL_PROJONFLOOR, 0) > 0 ? true : false; bindEffect.faceToWalkingDirection = reader.GetInt(row, (int)Column_Bind.COL_FACETOWALKINGDIR, 0) > 0 ? true : false; bindEffect.bNotRotate = reader.GetInt(row, (int)Column_Bind.COL_NOTROTATE, 0) > 0 ? true : false; bindEffect.bindTargetToSource = reader.GetInt(row, (int)Column_Bind.COL_BINDTARGETTOSRC, 0) > 0 ? true : false; bindEffect.bindTargetBone = reader.GetString(row, (int)Column_Bind.COL_BINDTARGETBONE, ""); bindEffect.triggerHitDetect = reader.GetInt(row, (int)Column_Bind.COL_TRIGGERHITDETECT, 0) > 0 ? true : false; bindEffect.SoundID = reader.GetInt(row, (int)Column_Bind.COL_SOUND, 0); bindEffect.posBindWound = reader.GetString(row, (int)Column_Bind.COL_POSBINDWOUND, ""); AddLightEffect(bindEffect); } break; case (int)LightingEffectConfigType.Fly: { LightingEffect_Fly flyEffect = ScriptableObject.CreateInstance <LightingEffect_Fly>(); FillBaseData(flyEffect, reader, row); flyEffect.scale = reader.GetFloat(row, (int)Column_Fly.COL_SCALE, 0); flyEffect.effectStartTick = reader.GetInt(row, (int)Column_Fly.COL_STARTTICK, 0); flyEffect.effectLiveTick = reader.GetInt(row, (int)Column_Fly.COL_LIVETICK, 0); flyEffect.residenceTick = reader.GetInt(row, (int)Column_Fly.COL_RESIDENCETICK, 0); flyEffect.effectDispearTick = reader.GetInt(row, (int)Column_Fly.COL_DISPEARTICK, 0); flyEffect.maxDistance = reader.GetFloat(row, (int)Column_Fly.COL_MAXDISTANCE, 0); flyEffect.posBindBone = reader.GetString(row, (int)Column_Fly.COL_POSBINDBONE, ""); flyEffect.rotationBindBone = reader.GetString(row, (int)Column_Fly.COL_ROTATIONBINDBONE, ""); string[] posOffsetStrArry = reader.GetString(row, (int)Column_Fly.COL_POSOFFSET, "").Split(';'); flyEffect.posOffset = StrArry2Vector3(posOffsetStrArry); string[] startPosOffsetStrArry = reader.GetString(row, (int)Column_Fly.COL_STARTPOSOFFSET, "").Split(';'); flyEffect.startPosOffset = StrArry2Vector3(startPosOffsetStrArry); flyEffect.targetTransformBone = reader.GetString(row, (int)Column_Fly.COL_TARGETTRSBONE, ""); string[] targetOffsetStrArry = reader.GetString(row, (int)Column_Fly.COL_TARGETOFFSET, "").Split(';'); flyEffect.targetOffset = StrArry2Vector3(targetOffsetStrArry); int flyType = reader.GetInt(row, (int)Column_Fly.COL_FLYTYPE, 0); if (Enum.IsDefined(typeof(FlyType), flyType)) { flyEffect.flyType = (FlyType)flyType; } int StartType = reader.GetInt(row, (int)Column_Fly.COL_STARTTYPE, 0); if (Enum.IsDefined(typeof(StartPosType), StartType)) { flyEffect.startType = (StartPosType)StartType; } flyEffect.faceTarget = reader.GetInt(row, (int)Column_Fly.COL_FACETARGET, 0) > 0 ? true : false; flyEffect.lowestHeight = reader.GetFloat(row, (int)Column_Fly.COL_LOWESTHEIGHT, 0); flyEffect.highestHeight = reader.GetFloat(row, (int)Column_Fly.COL_HIGHESTHEIGHT, 0); flyEffect.flySpeed = reader.GetFloat(row, (int)Column_Fly.COL_FLYSPEED, 0); flyEffect.AbsFlyTime = reader.GetFloat(row, (int)Column_Fly.COL_ABSFLYTIME, 0); flyEffect.destroyWhenReached = reader.GetInt(row, (int)Column_Fly.COL_DESTROYWHENREACHED, 0) > 0 ? true : false; flyEffect.destroyWhenTargetDead = reader.GetInt(row, (int)Column_Fly.COL_DESTROYWHENTARGETDEAD, 0) > 0 ? true : false; flyEffect.useCollision = reader.GetInt(row, (int)Column_Fly.COL_USECOLLISION, 0) > 0 ? true : false; flyEffect.destroyWhenCollision = reader.GetInt(row, (int)Column_Fly.COL_DESTROYWHENCOLLISION, 0) > 0 ? true : false; flyEffect.reviseFly = reader.GetInt(row, (int)Column_Fly.COL_REVISEFLY, 0) > 0 ? true : false; flyEffect.effectReturn = reader.GetInt(row, (int)Column_Fly.COL_EFFECTRETURN, 0) > 0 ? true : false; flyEffect.closeReturn = reader.GetInt(row, (int)Column_Fly.COL_CLOSERETURN, 0) > 0 ? true : false; flyEffect.returnSpeed = reader.GetFloat(row, (int)Column_Fly.COL_RETURNSPEED, 0); flyEffect.faceSourceToTarget = reader.GetFloat(row, (int)Column_Fly.COL_FACESRCTOTARGET, 0) > 0 ? true : false; flyEffect.effectIDWhenHitPlayer = reader.GetString(row, (int)Column_Fly.COL_EFFECTIDHITPLAYER, ""); flyEffect.effectIDWhenHitMonster = reader.GetString(row, (int)Column_Fly.COL_EFFECTIDHITMONSTER, ""); flyEffect.effectIDWhenHitGround = reader.GetString(row, (int)Column_Fly.COL_EFFECTIDHITGROUND, ""); flyEffect.effectIDWhenReached = reader.GetString(row, (int)Column_Fly.COL_EFFECTIDREACH, ""); flyEffect.triggerHitDetect = reader.GetInt(row, (int)Column_Fly.COL_TRIGGERHITDETECT, 0) > 0 ? true : false; flyEffect.playAnimWhenClose = reader.GetString(row, (int)Column_Fly.COL_PLAYANIMWHENCLOSE, ""); flyEffect.upcastMotion = reader.GetFloat(row, (int)Column_Fly.COL_UPCASTMOTION, 0) > 0 ? true : false; flyEffect.upcastHeight = reader.GetFloat(row, (int)Column_Fly.COL_UPCASTHEIGHT, 0); flyEffect.minUpcastAngle = reader.GetFloat(row, (int)Column_Fly.COL_MINUPCASTANGLE, 0); flyEffect.maxUpcastAngle = reader.GetFloat(row, (int)Column_Fly.COL_MAXUPCASTANGLE, 0); flyEffect.upcastTopPrec = reader.GetFloat(row, (int)Column_Fly.COL_UPCASTTOPPREC, 0); flyEffect.SoundID = reader.GetInt(row, (int)Column_Fly.COL_SOUND, 0); flyEffect.delayDestroyTick = reader.GetInt(row, (int)Column_Fly.COL_DELAYDESTROYTICK, 0); flyEffect.delayHideTick = reader.GetInt(row, (int)Column_Fly.COL_DELAYHIDETICK, 0); flyEffect.attackToObject = reader.GetInt(row, (int)Column_Fly.COL_ATTACKTOOBJECT, 0) > 0 ? true : false; flyEffect.AffectedShield = reader.GetInt(row, (int)Column_Fly.COL_AFFECTSHIELD, 0) > 0 ? true : false; AddLightEffect(flyEffect); } break; case (int)LightingEffectConfigType.AniReplace: { LightingEffect_AnimationReplace aniReplaceEffect = ScriptableObject.CreateInstance <LightingEffect_AnimationReplace>(); FillBaseData(aniReplaceEffect, reader, row); aniReplaceEffect.nStartTick = reader.GetInt(row, (int)Column_AnimReplace.COL_STARTTICK, 0); aniReplaceEffect.nEndTick = reader.GetInt(row, (int)Column_AnimReplace.COL_ENDTICK, 0); AddLightEffect(aniReplaceEffect); } break; case (int)LightingEffectConfigType.Area: { LightingEffect_Area areaEffect = ScriptableObject.CreateInstance <LightingEffect_Area>(); FillBaseData(areaEffect, reader, row); areaEffect.effectStartTick = reader.GetInt(row, (int)Column_Area.COL_STARTTICK, 0); areaEffect.effectIntervalTick = reader.GetInt(row, (int)Column_Area.COL_INTERVTICK, 0); areaEffect.subEffectID = reader.GetInt(row, (int)Column_Area.COL_SUBEFFECTID, 0); areaEffect.posBindBone = reader.GetString(row, (int)Column_Area.COL_POSBINDBONE, ""); string[] customOffStrArry = reader.GetString(row, (int)Column_Area.COL_CUSTOMOFFSET, "").Split(';'); areaEffect.customOffset = StrArry2Vector3(customOffStrArry); areaEffect.projectOnGround = reader.GetInt(row, (int)Column_Area.COL_PROJONGROUND, 0) > 0 ? true : false; areaEffect.extentToMaxDistance = reader.GetInt(row, (int)Column_Area.COL_EXTENTTOMAXDIS, 0) > 0 ? true : false; areaEffect.effectCount = reader.GetInt(row, (int)Column_Area.COL_EFFECTCOUNT, 0); areaEffect.effectTotalTick = reader.GetInt(row, (int)Column_Area.COL_EFFECTTOTALTICK, 0); AddLightEffect(areaEffect); } break; case (int)LightingEffectConfigType.Camera: { LightingEffect_Camera camEffect = ScriptableObject.CreateInstance <LightingEffect_Camera>(); FillBaseData(camEffect, reader, row); int animOrgPos = reader.GetInt(row, (int)Column_Camera.COL_ANIMORGPOS, 0); if (Enum.IsDefined(typeof(Effect.CameraAnimOrgType), animOrgPos)) { camEffect.animationOrgPos = (Effect.CameraAnimOrgType)animOrgPos; } camEffect.animationOrgProjectFloor = reader.GetInt(row, (int)Column_Camera.COL_ANIMORGPROJFLOOR, 0) > 0 ? true : false; camEffect.animationMainCamera = reader.GetInt(row, (int)Column_Camera.COL_ANIMMAINCAM, 0) > 0 ? true : false; int attackType = reader.GetInt(row, (int)Column_Camera.COL_ATTACKTYPE, 0); if (Enum.IsDefined(typeof(Effect.EffectAttackType), attackType)) { camEffect.attackType = (Effect.EffectAttackType)attackType; } camEffect.effectRad = reader.GetFloat(row, (int)Column_Camera.COL_EFFECTRAD, 0f); camEffect.effectLiveTick = reader.GetInt(row, (int)Column_Camera.COL_EFFECTLIVETICK, 0); camEffect.delayTick = reader.GetInt(row, (int)Column_Camera.COL_DELAYTICK, 0); camEffect.effectFinishTick = reader.GetInt(row, (int)Column_Camera.COL_EFFECTFINISHTICK, 0); camEffect.recoverTransform = reader.GetInt(row, (int)Column_Camera.RECOVERTRANSFORM, 0) > 0 ? true : false; AddLightEffect(camEffect); } break; case (int)LightingEffectConfigType.Shadow: { LightingEffect_Shadow shadowEffect = ScriptableObject.CreateInstance <LightingEffect_Shadow>(); FillBaseData(shadowEffect, reader, row); shadowEffect.nStartTick = reader.GetInt(row, (int)Column_Shadow.COL_STARTTICK, 0); shadowEffect.nEndTick = reader.GetInt(row, (int)Column_Shadow.COL_ENDTICK, 0); shadowEffect.fStartAlpha = reader.GetFloat(row, (int)Column_Shadow.COL_STARTALPHA, 0); shadowEffect.nShadowMaintainTick = reader.GetInt(row, (int)Column_Shadow.COL_MAINTAINTICK, 0); shadowEffect.nShadowFadeoutTick = reader.GetInt(row, (int)Column_Shadow.COL_FADEOUTTICK, 0); shadowEffect.shadowIntervalTicks = reader.GetInt(row, (int)Column_Shadow.COL_INTERVTICK, 0); string[] frameStrArry = reader.GetString(row, (int)Column_Shadow.COL_FRAMETICK, "").Split(';'); int[] frameIntArry = new int[frameStrArry.Length]; for (int i = 0; i < frameStrArry.Length; i++) { int.TryParse(frameStrArry[i], out frameIntArry[i]); } shadowEffect.shadowFrameTicks = frameIntArry; shadowEffect.alphaAttributeName = reader.GetString(row, (int)Column_Shadow.COL_ALPHAATTNAME, ""); shadowEffect.DisableWeapon = reader.GetInt(row, (int)Column_Shadow.COL_DISABLEWEAPON, 0) > 0 ? true : false; int attrType = reader.GetInt(row, (int)Column_Shadow.COL_ALPHAATTTYPE, 0); if (Enum.IsDefined(typeof(LightingEffect_Shadow.AlphaAttributeType), attrType)) { shadowEffect.alphaAttributeType = (LightingEffect_Shadow.AlphaAttributeType)attrType; } shadowEffect.minDistance = reader.GetFloat(row, (int)Column_Shadow.COL_MINDISTANCE, 0); AddLightEffect(shadowEffect); } break; case (int)LightingEffectConfigType.Sound: { LightingEffect_Sound soundEffect = ScriptableObject.CreateInstance <LightingEffect_Sound>(); FillBaseData(soundEffect, reader, row); soundEffect.soundID = reader.GetInt(row, (int)Column_Sound.COL_SOUND, 0); AddLightEffect(soundEffect); } break; case (int)LightingEffectConfigType.Speed: { LightingEffect_Speed speedEffect = ScriptableObject.CreateInstance <LightingEffect_Speed>(); FillBaseData(speedEffect, reader, row); speedEffect.nStartTick = reader.GetInt(row, (int)Column_Speed.COL_STARTTICK, 0); speedEffect.nEndTick = reader.GetInt(row, (int)Column_Speed.COL_ENDTICK, 0); speedEffect.globalSpeed = reader.GetFloat(row, (int)Column_Speed.COL_GLOBALSPEED, 0); speedEffect.animatorSpeed = reader.GetFloat(row, (int)Column_Speed.COL_ANIMSPEED, 0); speedEffect.effectRad = reader.GetFloat(row, (int)Column_Speed.COL_EFFECTRAD, 0); AddLightEffect(speedEffect); } break; case (int)LightingEffectConfigType.Ward: { LightingEffect_Ward wardEffect = ScriptableObject.CreateInstance <LightingEffect_Ward>(); FillBaseData(wardEffect, reader, row); wardEffect.nStartTick = reader.GetInt(row, (int)Column_Ward.COL_STARTTICK, 0); wardEffect.nEndTick = reader.GetInt(row, (int)Column_Ward.COL_ENDTICK, 0); wardEffect.blockAllCreature = reader.GetInt(row, (int)Column_Ward.COL_BLOCKALLCREATURE, 0) > 0 ? true : false; AddLightEffect(wardEffect); } break; case (int)LightingEffectConfigType.Invalid: default: break; } }
private static void ExportScheme_Fly(LightingEffect scheme) { if (scheme == null) { return; } LightingEffect_Fly flyScheme = scheme as LightingEffect_Fly; if (flyScheme == null) { return; } //fly string scale = flyScheme.scale.ToString(); string startTick = flyScheme.effectStartTick.ToString(); string liveTick = flyScheme.effectLiveTick.ToString(); string residenceTick = flyScheme.residenceTick.ToString(); string dispearTick = flyScheme.effectDispearTick.ToString(); string maxDistance = flyScheme.maxDistance.ToString(); string posBindBone = flyScheme.posBindBone; string rotationBindBone = flyScheme.rotationBindBone; string posOffset = flyScheme.posOffset.x + ";" + flyScheme.posOffset.y + ";" + flyScheme.posOffset.z; string startPosOffset = flyScheme.startPosOffset.x + ";" + flyScheme.startPosOffset.y + ";" + flyScheme.startPosOffset.z; string targetTrsBone = flyScheme.targetTransformBone; string targetOffset = flyScheme.targetOffset.x + ";" + flyScheme.targetOffset.y + ";" + flyScheme.targetOffset.z; string flyType = ((int)flyScheme.flyType).ToString(); string StartType = ((int)flyScheme.startType).ToString(); string faceTarget = (flyScheme.faceTarget ? 1 : 0).ToString(); string lowestHeight = flyScheme.lowestHeight.ToString(); string highestHeight = flyScheme.highestHeight.ToString(); string flySpeed = flyScheme.flySpeed.ToString(); string absFlyTime = flyScheme.AbsFlyTime.ToString(); string destroyWhenReached = (flyScheme.destroyWhenReached ? 1 : 0).ToString(); string destroyWhenTargetDead = (flyScheme.destroyWhenTargetDead ? 1 : 0).ToString(); string useCollision = (flyScheme.useCollision ? 1 : 0).ToString(); string destroyWhenCollision = (flyScheme.destroyWhenCollision ? 1 : 0).ToString(); string reviseFly = (flyScheme.reviseFly ? 1 : 0).ToString(); string effectReturn = (flyScheme.effectReturn ? 1 : 0).ToString(); string closeReturn = (flyScheme.closeReturn ? 1 : 0).ToString(); string returnSpeed = flyScheme.returnSpeed.ToString(); string faceSrcToTarget = (flyScheme.faceSourceToTarget ? 1 : 0).ToString(); string effIDHitPlayer = flyScheme.effectIDWhenHitPlayer; string effIDHitMonster = flyScheme.effectIDWhenHitMonster; string effIDHitGroud = flyScheme.effectIDWhenHitGround; string effIDReach = flyScheme.effectIDWhenReached; string triggerHitDetect = (flyScheme.triggerHitDetect ? 1 : 0).ToString(); string playAnimWhenClose = flyScheme.playAnimWhenClose; string upcastMotion = (flyScheme.upcastMotion ? 1 : 0).ToString(); string upcastHeight = flyScheme.upcastHeight.ToString(); string minUpcastAngle = flyScheme.minUpcastAngle.ToString(); string maxUpcastAngle = flyScheme.maxUpcastAngle.ToString(); string upcastTopPrec = flyScheme.upcastTopPrec.ToString(); string sound = flyScheme.SoundID.ToString(); string delayDestroyTick = flyScheme.delayDestroyTick.ToString(); string delayHideTick = flyScheme.delayHideTick.ToString(); string attackToObj = (flyScheme.attackToObject ? 1 : 0).ToString(); string affectShield = (flyScheme.AffectedShield ? 1 : 0).ToString(); ExportSchemeInfo(flyScheme, scale, startTick, liveTick, residenceTick, dispearTick, maxDistance, posBindBone, rotationBindBone, posOffset, startPosOffset, targetTrsBone, targetOffset, flyType, StartType, faceTarget, lowestHeight, highestHeight, flySpeed, absFlyTime, destroyWhenReached, destroyWhenTargetDead, useCollision, destroyWhenCollision, reviseFly, effectReturn, closeReturn, returnSpeed, faceSrcToTarget, effIDHitPlayer, effIDHitMonster, effIDHitGroud, effIDReach, triggerHitDetect, playAnimWhenClose, upcastMotion, upcastHeight, minUpcastAngle, maxUpcastAngle, upcastTopPrec, sound, delayDestroyTick, delayHideTick, attackToObj, affectShield); }