private void copyDialogset(CStorySceneSection storysection) { // see if it has a change dialog set property var dlgset = storysection.GetVariableByName("dialogsetChangeTo") as CName; if (dlgset != null) { // see if we already have a dialog set with this name var destdlgset = findDialogset(DestinationFile, dlgset.Value); if (destdlgset == null) { // we dont so find the one in the source and copy it. var srcdlgset = findDialogset(SourceFile, dlgset.Value); if (srcdlgset != null) { var CStoryScene = DestinationFile.GetChunkByType("CStoryScene"); var dialogsetInstances = (CArray)CStoryScene.GetVariableByName("dialogsetInstances"); var copieddialogset = srcdlgset.Copy(this); DestinationFile.CreatePtr(dialogsetInstances, copieddialogset); var placementTag = (CTagList)copieddialogset.GetVariableByName("placementTag"); placementTag.tags.Clear(); placementTag.tags.Add((CName)DestinationFile.CreateVariable("CName").SetValue("PLAYER")); } } } }
private void copyStorySceneCameras(CStorySceneSection storysection) { var CStoryScene = DestinationFile.GetChunkByType("CStoryScene"); var cameraInstances = (CArray)CStoryScene.GetVariableByName("cameraDefinitions"); var CStorySceneSource = SourceFile.GetChunkByType("CStoryScene"); var cameraInstancesSource = (CArray)CStorySceneSource.GetVariableByName("cameraDefinitions"); foreach (var e in storysection.sceneEventElements) { if (e != null && e is CVector && e.Type == "CStorySceneEventCustomCameraInstance") { var v = (CVector)e; var n = v.GetVariableByName("customCameraName") as CName; if (n != null) { var camera = findCameraInstance(cameraInstances, n.Value); // Doesn't exist yet, copy from source if (camera == null) { var sourceCamera = findCameraInstance(cameraInstancesSource, n.Value); if (sourceCamera != null) { cameraInstances.AddVariable(sourceCamera.Copy(this)); } } } } } }
public override List <IPtrAccessor> GetConnections() { var list = new List <IPtrAccessor>(); CStorySceneSection sceneSection = (CStorySceneSection)Chunk.data; CPtr <CStorySceneChoice> choiceObj = sceneSection.Choice; if (choiceObj != null) { if (choiceObj.Reference != null) { list.Add(choiceObj); } } CPtr <CStorySceneLinkElement> nextLinkElementObj = sceneSection.NextLinkElement; if (nextLinkElementObj != null) { if (nextLinkElementObj.Reference != null) { list.Add(nextLinkElementObj); } } return(list); }
private static void removeStorySceneAddFacts(CStorySceneSection storysection) { var factevents = storysection.sceneEventElements.FindAll( delegate(CVariable sectionitem) { return(sectionitem.Type == "CStorySceneAddFactEvent"); }); foreach (var factevent in factevents) { storysection.sceneEventElements.Remove(factevent); } }
private static void removeUnnessaryTeleportation(CStorySceneSection storysection) { var placement_x = 0.0f; var placement_y = 0.0f; var placement_z = 0.0f; storysection.sceneEventElements.ForEach(delegate(CVariable sectionvar) { var sectionitem = ((CVector)sectionvar); if (sectionitem.Type == "CStorySceneEventOverridePlacement") { var placement = (CEngineTransform)sectionitem.variables.GetVariableByName("placement"); if (placement_x == 0 || Math.Abs(placement.x.val) < Math.Abs(placement_x)) { placement_x = placement.x.val; } if (placement_y == 0 || Math.Abs(placement.y.val) < Math.Abs(placement_y)) { placement_y = placement.y.val; } if (placement_z == 0 || Math.Abs(placement.z.val) < Math.Abs(placement_z)) { placement_z = placement.z.val; } } }); // Remove Unnessasary teleportation storysection.sceneEventElements.ForEach(delegate(CVariable sectionvar) { var sectionitem = ((CVector)sectionvar); if (sectionitem.Type == "CStorySceneEventOverridePlacement") { var placement = (CEngineTransform)sectionitem.variables.GetVariableByName("placement"); if (placement != null) { placement.x.val -= placement_x; placement.y.val -= placement_y; placement.z.val -= placement_z; } } else if (sectionitem.Type == "CStorySceneEventCustomCamera") { var cameraDefinition = (CVector)sectionitem.variables.GetVariableByName("cameraDefinition"); var cameraTransform = (CEngineTransform)cameraDefinition.GetVariableByName("cameraTransform"); cameraTransform.x.val -= placement_x; cameraTransform.y.val -= placement_y; cameraTransform.z.val -= placement_z; var cameraTranslation = (CVector)sectionitem.variables.GetVariableByName("cameraTranslation"); if (cameraTranslation != null) { ((CFloat)cameraTranslation.GetVariableByName("X")).val -= placement_x; ((CFloat)cameraTranslation.GetVariableByName("Y")).val -= placement_y; ((CFloat)cameraTranslation.GetVariableByName("Z")).val -= placement_z; } } else if (sectionitem.Type == "CStorySceneEventCameraLight") { var lightMod1 = (CVector)sectionitem.variables.GetVariableByName("lightMod1"); if (lightMod1 != null) { var lightOffset = (CVector)lightMod1.GetVariableByName("lightOffset"); if (lightOffset != null) { ((CFloat)lightOffset.GetVariableByName("X")).val -= placement_x; ((CFloat)lightOffset.GetVariableByName("Y")).val -= placement_y; ((CFloat)lightOffset.GetVariableByName("Z")).val -= placement_z; } } } }); /// }
public override void UpdateView() { base.UpdateView(); if (lines != null) { foreach (var l in lines) { Controls.Remove(l); } } lines = new List <Label>(); var y = 21; var line = 0; CStorySceneSection sceneSection = (CStorySceneSection)Chunk.data; CArray <CPtr <CStorySceneElement> > sceneElements = sceneSection.SceneElements; if (sceneElements != null) { foreach (CPtr <CStorySceneElement> element in sceneElements.Elements) { if (element != null) { switch (element.GetPtrTargetType()) { case "CStorySceneLine": line++; var label = new Label { Width = Width, Height = 20, Location = new Point(0, y), AutoSize = false, Text = GetDisplayString((CStorySceneLine)element.Reference.data) }; lines.Add(label); Controls.Add(label); var texts = TextRenderer.MeasureText(label.Text, label.Font, new Size(Width - 6, 100), TextFormatFlags.WordBreak); label.Height = texts.Height + 5; label.BackColor = (line % 2) == 0 ? Color.LightBlue : Color.Transparent; label.Click += delegate { FireSelectEvent(element.Reference); }; y += label.Height; break; default: break; } } } } Height = y; }