public ReplicationCreateProjectilePacket Create(Projectile p) { var status = new ProjectileStatus() { ID = p.ID, Position = p.Position, FinalPosition = p.FinalPosition, LifeTimeMillis = (short)(p.LifeTime * 1000), MoveTimeMillis = (short)(p.MoveTime * 1000), }; return(new ReplicationCreateProjectilePacket(status)); }
Projectile CreateProjectile(ProjectileStatus status) { //Debug.Log($"create projectile id={status.ID} ts={TimeUtils.NowTimestamp}"); var id = status.ID; Debug.Assert(projectileTable.ContainsKey(id) == false, $"projectile={id} already exists in projectile table"); var projectile = Instantiate(prefab_projectile); projectileTable[id] = projectile; projectile.transform.SetParent(transform); projectile.id = id; projectile.transform.position = status.Position.ToVector3(); projectile.finalPosition = status.FinalPosition.ToVector3(); projectile.velocity = status.Direction.ToVector3() * Config.ProjectileSpeed; projectile.moveTime = status.MoveTimeMillis * 0.001f; projectile.lifeTime = status.LifeTimeMillis * 0.001f; projectile.Subscribe(); return(projectile); }