84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
package sceneops
|
|
|
|
import (
|
|
"image"
|
|
|
|
"aego/core/ids"
|
|
"aego/core/mathx"
|
|
"aego/editor/core/assetops"
|
|
"aego/editor/core/context"
|
|
"aego/editor/core/document"
|
|
"aego/editor/core/services"
|
|
"aego/editor/core/templates"
|
|
)
|
|
|
|
var (
|
|
_ services.SceneOps = (*Ops)(nil)
|
|
_ services.AssetOps = (*Ops)(nil)
|
|
)
|
|
|
|
type Ops struct {
|
|
ctx *context.Editor
|
|
files *assetops.Ops
|
|
}
|
|
|
|
func New(ctx *context.Editor, files *assetops.Ops) *Ops {
|
|
return &Ops{ctx: ctx, files: files}
|
|
}
|
|
|
|
func (o *Ops) CreateMenu(reg *templates.Registry, parent ids.NodeID, onCreate func([]ids.NodeID)) {
|
|
templates.Menu(o.ctx, reg, parent, templates.Place{}, onCreate)
|
|
}
|
|
|
|
func (o *Ops) CreateMenuAt(reg *templates.Registry, pl templates.Place) {
|
|
templates.Menu(o.ctx, reg, ids.NodeID{}, pl, nil)
|
|
}
|
|
|
|
func (o *Ops) InstantiateAt(t templates.Template, at *mathx.Vec2) error {
|
|
_, err := templates.Instantiate(o.ctx, t, ids.NodeID{}, -1, at)
|
|
return err
|
|
}
|
|
|
|
func (o *Ops) InstantiateAt3(t templates.Template, at mathx.Vec3) error {
|
|
_, err := templates.InstantiateAt3(o.ctx, t, ids.NodeID{}, at)
|
|
return err
|
|
}
|
|
|
|
func (o *Ops) Instantiate(t templates.Template, parent ids.NodeID, index int) error {
|
|
_, err := templates.Instantiate(o.ctx, t, parent, index, nil)
|
|
return err
|
|
}
|
|
|
|
func (o *Ops) AttachScript(nodes []ids.NodeID, script ids.AssetID) {
|
|
assetops.AttachScriptAsset(o.ctx, nodes, script)
|
|
}
|
|
|
|
func (o *Ops) RenameScene(d *document.SceneDocument) {
|
|
assetops.PromptRenameScene(o.ctx, o.files, d)
|
|
}
|
|
|
|
func (o *Ops) SaveSceneAs(d *document.SceneDocument) {
|
|
assetops.PromptSaveAs(o.ctx, d)
|
|
}
|
|
|
|
func (o *Ops) AttachScriptType(nodes []ids.NodeID, typeName string) error {
|
|
return assetops.AttachScript(o.ctx, nodes, typeName)
|
|
}
|
|
|
|
func (o *Ops) ScriptDir(typeName string) string {
|
|
return assetops.ScriptDir(o.ctx, typeName)
|
|
}
|
|
|
|
func (o *Ops) CopyAssets(list []ids.AssetID) bool {
|
|
return len(assetops.CopyAssets(o.ctx, list)) > 0
|
|
}
|
|
|
|
func (o *Ops) ImportImage(dir, stem string, img image.Image) (ids.AssetID, string, error) {
|
|
if err := assetops.EnsureDir(o.ctx, dir); err != nil {
|
|
return ids.AssetID{}, "", err
|
|
}
|
|
rel := assetops.UniqueFile(o.ctx, dir, stem, ".png")
|
|
id, err := assetops.CreatePNG(o.ctx, rel, img)
|
|
return id, rel, err
|
|
}
|