Example #1
0
        private void send_spawned_objects_to_player(Player player)
        {
            foreach (var kv in objects)
            {
                if (kv.Key >= startobject_high_edge) //Is a spawned object
                {
                    var ev = new Event3D
                    {
                        ObjectNotification = new Event3D_ObjectNotification
                        {
                            Id        = kv.Key,
                            SpawnId   = kv.Value.spawn_id,
                            Spawn     = false,
                            Transform = ArenaServiceConv.ToArenaTransform(kv.Value.rb)
                        }
                    };

                    send_to_all_players(ev);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Single threaded.
        /// </summary>
        /// <param name="spawnable_idx"></param>
        /// <returns></returns>
        protected KeyValuePair <int, RigidBody> SpawnObject(int spawnable_idx, JVector?pos = null, JVector?vel = null, JQuaternion?ori = null)
        {
            var rb = new RigidBody(spawnable_rigid_bodies[spawnable_idx].Shape);

            if (pos.HasValue)
            {
                rb.Position = pos.Value;
            }
            if (vel.HasValue)
            {
                rb.LinearVelocity = vel.Value;
            }
            if (ori.HasValue)
            {
                rb.Orientation = JMatrix.CreateFromQuaternion(ori.Value);
            }
            for (;;)
            {
                var id = random.Next(startobject_high_edge, int.MaxValue);
                if (!objects.ContainsKey(id))
                {
                    add_to_world(id, spawnable_idx, rb);
                    var ev = new Event3D
                    {
                        ObjectNotification = new Event3D_ObjectNotification
                        {
                            Id        = id,
                            SpawnId   = spawnable_idx,
                            Spawn     = true,
                            Transform = ArenaServiceConv.ToArenaTransform(rb)
                        }
                    };
                    send_to_all_players(ev);
                    return(new KeyValuePair <int, RigidBody>(id, rb));
                }
            }
        }