public Editor(Game game) : base(game) { Instance = this; KeyFrameControl = new KeyFrameControl(game); Models = new List<Model3D>(); SelectedModel = new SimpleModel(); ControlState = new ControlState(); }
public Model3D AddModel(Model3D model) { int modelId = Models.Count; for (int i = 0; i < Models.Count; ++i) { if (Models[i].MarkedForDeletion) { modelId = i; break; } } if (modelId == Models.Count) Models.Add(model); else Models[modelId] = model; KeyFrameControl.InsertKeyFrame(model, 0); return model; }
public void SetTransformation(Model3D model, int keyFrameIndex, Transformation transformation) { KeyFrameForIndex[keyFrameIndex].TransformationForModel[model] = transformation; }
public void InsertKeyFrameOnCurrentFrame(Model3D model) { InsertKeyFrame(model, CurrentFrameIndex); }
public void InsertKeyFrame(Model3D model, int frameIndex) { if (!KeyFrameForIndex.ContainsKey(frameIndex)) { KeyFrameForIndex[frameIndex] = new KeyFrame(frameIndex); } if (!KeyFrameForIndex[frameIndex].TransformationForModel.ContainsKey(model)) { KeyFrameForIndex[frameIndex].TransformationForModel[model] = Transformation.Identity; } KeyFrameForIndex[frameIndex].TransformationForModel[model] = model.Transformation; if (!KeyFrameIndicesForModel.ContainsKey(model)) { KeyFrameIndicesForModel[model] = new List<int>(); } KeyFrameIndicesForModel[model].Add(frameIndex); KeyFrameIndicesForModel[model].Sort(); // Make sure there are enough frames for interpolation step later while (frames.Count < frameIndex + 1) { frames.Add(new Frame(frames.Count)); } CalculateFrames(); }
public bool HasTransformation(Model3D model, int frameIndex) { if (frameIndex > frames.Count - 1) return false; return frames[frameIndex].TransformationForModel.ContainsKey(model); }
public Transformation GetTransformation(Model3D model, int frameIndex) { return frames[frameIndex].TransformationForModel[model]; }
void DeleteModel(Model3D model) { model.MarkForDeletion(); }