private XmlElement GenerateTransformXml(Cv_Transform t, XmlDocument doc) { var transform = doc.CreateElement(Cv_EntityComponent.GetComponentName <Cv_TransformComponent>()); var positionNode = doc.CreateElement("Position"); positionNode.SetAttribute("x", t.Position.X.ToString(CultureInfo.InvariantCulture)); positionNode.SetAttribute("y", t.Position.Y.ToString(CultureInfo.InvariantCulture)); positionNode.SetAttribute("z", t.Position.Z.ToString(CultureInfo.InvariantCulture)); var rotationNode = doc.CreateElement("Rotation"); rotationNode.SetAttribute("radians", t.Rotation.ToString(CultureInfo.InvariantCulture)); var scaleNode = doc.CreateElement("Scale"); scaleNode.SetAttribute("x", t.Scale.X.ToString(CultureInfo.InvariantCulture)); scaleNode.SetAttribute("y", t.Scale.Y.ToString(CultureInfo.InvariantCulture)); var originNode = doc.CreateElement("Origin"); originNode.SetAttribute("x", t.Origin.X.ToString(CultureInfo.InvariantCulture)); originNode.SetAttribute("y", t.Origin.Y.ToString(CultureInfo.InvariantCulture)); transform.AppendChild(positionNode); transform.AppendChild(rotationNode); transform.AppendChild(scaleNode); transform.AppendChild(originNode); return(transform); }
internal Cv_SceneNode(Cv_EntityID entityID, Cv_EntityComponent renderComponent, Cv_Transform to, Cv_Transform?from = null) { Properties = new Cv_NodeProperties(); Properties.EntityID = entityID; Properties.ToWorld = to; Properties.FromWorld = (from != null ? from.Value : Cv_Transform.Identity); Properties.Name = renderComponent != null?renderComponent.GetType().Name : "SceneNode"; Properties.Radius = -1; TransformChanged = true; Component = renderComponent; Children = new List <Cv_SceneNode>(); }
protected override Cv_EntityComponent CreateComponent(string componentName) { var component = ComponentFactory.Create(Cv_EntityComponent.GetID(componentName)); if (component == null) { var gComponent = new GameComponent(); gComponent.Init(componentName); return(gComponent); } return(component); }
public Cv_ParticleEmitterNode(Cv_Entity.Cv_EntityID entityID, Cv_EntityComponent renderComponent, Cv_Transform to, Cv_Transform?from = null) : base(entityID, renderComponent, to, from) { m_Particles = new LinkedList <Cv_Particle>(); var particleComponent = (Cv_ParticleEmitterComponent)Component; for (var i = 0; i < MAX_PARTICLES; i++) { m_Particles.AddFirst(new Cv_Particle()); } m_iNumLiveParticles = 0; m_Random = new Random(); }
//Note(JM): Used for editor #if EDITOR public void AddComponent(string entityPath, string componentTypeName, Cv_EntityComponent component) { if (component.Owner != null) { Cv_Debug.Error("Trying to add a component that already has an owner."); } var entity = GetEntity(entityPath); if (entity != null) { entity.AddComponent(componentTypeName, component); component.VPostInitialize(); component.VPostLoad(); } }
protected override Cv_EntityComponent CreateComponent(XmlElement componentData) { var component = ComponentFactory.Create(Cv_EntityComponent.GetID(componentData.Name)); if (component == null) { component = new GameComponent(); ((GameComponent)component).Init(componentData.Name); } if (!component.VInitialize(componentData)) { Cv_Debug.Error("Failed to initialize component: " + componentData.Name); return(null); } return(component); }
protected override Cv_EntityComponent[] ModifyEntity(Cv_Entity entity, XmlNodeList overrides) { var components = new List <Cv_EntityComponent>(); foreach (XmlElement componentNode in overrides) { var componentID = Cv_EntityComponent.GetID(componentNode.Name); var component = entity.GetComponent(componentID); if (component != null) { component.VInitialize(componentNode); component.VOnChanged(); components.Add(component); } else { component = CreateComponent(componentNode); if (component != null) { if (component is GameComponent) { entity.AddComponent(((GameComponent)component).ComponentName, component); } else { entity.AddComponent(component.GetType().Name, component); } components.Add(component); //component.VPostInitialize(); } } } return(components.ToArray()); }