public void DeleteGameObject(LevelGameObject gameObject) { Assure.NotNull(gameObject); lock (instanceMutationLock) { gameObjects.Remove(gameObject); } }
public void AddGameObject(LevelGameObject gameObject) { Assure.NotNull(gameObject); lock (instanceMutationLock) { gameObjects.Add(gameObject); } }
public void ResetGameObject(LevelGameObject lgo) { if (currentGameObjects.ContainsKey(lgo)) { currentGameObjects[lgo].Dispose(); } currentGameObjects[lgo] = lgo.CreateEntity(); }
public static LevelGameObject Deserialize(LevelDescription parentLevel, XElement element) { string typeName = element.Attribute(TYPE_ATTRIBUTE_NAME).Value; int id = Int32.Parse(element.Attribute(ID_ATTRIBUTE_NAME).Value); Type goType = typeNames.Single(kvp => kvp.Value == typeName).Key; LevelGameObject result = (LevelGameObject)Activator.CreateInstance(goType, parentLevel, id); lock (result.instanceMutationLock) { string groundingEntityAttrValue = element.Attribute(GROUNDING_ENTITY_ID_ATTRIBUTE_NAME).Value; result.groundingEntityID = groundingEntityAttrValue == String.Empty ? (int?)null : Int32.Parse(groundingEntityAttrValue); result.transform = Transform.Parse(element.Attribute(TRANSFORM_ATTRIBUTE_NAME).Value); result.useSimpleGrounding = Boolean.Parse(element.Attribute(USE_SIMPLE_GROUNDING_ATTRIBUTE_NAME).Value); result.PerformCustomDeserialization(element); } return(result); }
private void DeserializeGameObjects(XElement gameObjectsElement) { gameObjects.Clear(); foreach (XElement element in gameObjectsElement.Elements()) { gameObjects.Add(LevelGameObject.Deserialize(this, element)); } if (!GameObjects.Any(go => go is Shadowcaster)) { var shadowcaster = new Shadowcaster(this, GetNewGameObjectID()); shadowcaster.Transform = new Transform( Vector3.ONE, Quaternion.FromVectorTransition(Vector3.UP, Vector3.DOWN), Vector3.UP * PhysicsManager.ONE_METRE_SCALED * 20f ); gameObjects.Insert(0, shadowcaster); } }
public GroundableEntity GetGameObjectRepresentation(LevelGameObject lgo) { lock (instanceMutationLock) { return(currentGameObjects[lgo]); } }