public void Destroy(GameObject gameObject)
 {
     Objects.Remove(gameObject);
     gameObject.Destroy();
 }
 public void Add(GameObject gameObject)
 {
     Objects.Add(gameObject);
 }
 public ObjectInfo(GameObject gameObject, ObjectState state)
 {
     GameObject = gameObject;
     State = state;
 }
示例#4
0
        public void Update()
        {
            Camera.Update();
            Mysz.height = Engine.Singleton.Camera.Viewport.ActualHeight;
            Mysz.width = Engine.Singleton.Camera.Viewport.ActualWidth;

            float length = 15.0f;

            AimPosition = new Vector3();
            AimPosition.x = (float) System.Math.Sin((double)-Camera.getY().ValueRadians) * length;
            AimPosition.x = (float)System.Math.Cos((double)Camera.getX().ValueRadians) * AimPosition.x + Camera.Position.x;
            AimPosition.y = (float) System.Math.Sin((double)Camera.getX().ValueRadians) * length + Camera.Position.y;
            AimPosition.z = (float) System.Math.Cos((double)Camera.getY().ValueRadians) * -length;
            AimPosition.z = (float)System.Math.Cos((double)Camera.getX().ValueRadians) * AimPosition.z + Camera.Position.z;

            if (Engine.Singleton.HumanController.State == HumanController.HumanControllerState.FREE)
            {
                FocusedObject = null;

                PredicateRaycast raycast = new PredicateRaycast((b => !(b.UserData is TriggerVolume)));
                raycast.Go(Engine.Singleton.NewtonWorld, Camera.Position, AimPosition);
                if (raycast.Contacts.Count != 0)
                {
                    raycast.SortContacts();
                    AimPosition = Camera.Position
                      + (AimPosition - Camera.Position) * raycast.Contacts[0].Distance
                      + raycast.Contacts[0].Normal * 0.01f * length;

                    if (raycast.Contacts[0].Body.UserData is GameObject)
                        FocusedObject = raycast.Contacts[0].Body.UserData as GameObject;
                }
            }
        }
        public void HandleGameObject(GameObject gameObject)
        {
            // Próbujemy znaleźć wpis zgłoszonego obiektu
            ObjectInfo entry = ObjectsInside.Find(
                delegate(ObjectInfo info)
                {
                    return info.GameObject == gameObject;
                }
            );

            if (entry == null)
                ObjectsInside.Add(new ObjectInfo(gameObject, ObjectState.New));
            else
                entry.State = ObjectState.Present;
        }