public static void LoadData() { SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("projectile"); while (reader.Read()) { ProjectileData data = new ProjectileData(); data._id = System.Convert.ToInt32(reader.GetString(reader.GetOrdinal("id"))); data._path = reader.GetString(reader.GetOrdinal("path")); data._bone = reader.GetString(reader.GetOrdinal("bone")); data._sound = System.Convert.ToInt32(reader.GetString(reader.GetOrdinal("sound"))); data._effect = System.Convert.ToInt32(reader.GetString(reader.GetOrdinal("effect"))); data._axis = PETools.PEUtil.ToVector3(reader.GetString(reader.GetOrdinal("axis")), ','); m_data.Add(data._id, data); } }
public virtual void SetData(ProjectileData data, Transform caster, Transform emitter, Transform target, Vector3 targetPosition, int index = 0) { //m_Data = data; m_Caster = caster; m_Emitter = emitter; m_Target = target; m_TargetPosition = targetPosition; m_Valid = true; float atk = 0.0f; SkEntity skCaster = m_Caster.GetComponentInParent <SkEntity>(); if (skCaster != null) { SetNet(skCaster._net, false); atk = skCaster.GetAttribute((int)AttribType.Atk); } parentSkEntity = skCaster; SkProjectile skPro = skCaster as SkProjectile; if (skPro != null) { parentSkEntity = skPro.GetSkEntityCaster(); if (parentSkEntity != null) { m_Caster = parentSkEntity.transform; } } SetAttribute((int)AttribType.Atk, m_Atk + atk); if (m_Trajectory != null) { m_Trajectory.SetData(m_Caster, m_Emitter, m_Target, m_TargetPosition, index); } if (null != m_Emitter && !m_Explode) { CheckInTrigger(m_Emitter.position); } }
public void Register(int id, Transform caster, SkRuntimeInfo info, int index = 0, bool immediately = false) { ProjectileData projectileData = ProjectileData.GetProjectileData(id); if (projectileData == null) { return; } Transform emitter = null; if (!string.IsNullOrEmpty(projectileData._bone) && "0" != projectileData._bone) { PeEntity entity = caster.GetComponent <PeEntity>(); if (null != entity) { emitter = entity.GetChild(projectileData._bone); } else { emitter = PETools.PEUtil.GetChild(caster, projectileData._bone); } } Transform trans = null; if (info.Target != null) { PeTrans tr = info.Target.GetComponent <PeTrans>(); if (tr != null) { trans = tr.trans; } } ShootTargetPara shoot = info.Para as ShootTargetPara; SkCarrierCanonPara canon = info.Para as SkCarrierCanonPara; if (shoot != null) { if (emitter != null) { Register(id, caster, emitter, shoot.m_TargetPos, index, immediately); } } else if (canon != null) { WhiteCat.BehaviourController drive = info.Caster.GetComponent <WhiteCat.BehaviourController>(); IProjectileData data = drive.GetProjectileData(canon); if (trans != null) { Register(id, caster, data.emissionTransform, trans, index, immediately); } else { Register(id, caster, data.emissionTransform, data.targetPosition, index, immediately); } } else { if (emitter != null) { if (emitter != null) { Register(id, caster, emitter, trans, index, immediately); } } } }
public override void SetData(ProjectileData data, Transform caster, Transform emitter, Transform target, Vector3 targetPosition, int index) { base.SetData(data, caster, emitter, target, targetPosition, index); StartCoroutine(SpawnProjectile()); }