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; }
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; }