CocosCyberpunk/assets/test/scripts/generate-white-box.ts

55 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-02-22 09:50:51 +08:00
import { _decorator, Component, Node, MeshRenderer, instantiate, CCObject, Prefab, find } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('generate_white_box')
export class generate_white_box extends Component {
@property(Node)
targetRoot: Node | undefined
@property(Node)
temp: Node | undefined
@property
get generate () {
return false
}
set generate (v) {
this.doGenerate()
}
doGenerate () {
if (!this.temp || !this.targetRoot) {
return;
}
let root = find('root', this.node)
if (!root) {
root = new Node('root')
root.parent = this.node
}
root.removeAllChildren();
let mrs = this.targetRoot.getComponentsInChildren(MeshRenderer);
mrs.forEach(mr => {
if (!mr.model) {
return;
}
let n = instantiate(this.temp)! as any as Node;
n.name = mr.node.name
let bounds = mr.model!.worldBounds
n.position = bounds.center;
n.setScale(bounds.halfExtents.x * 2, bounds.halfExtents.y * 2, bounds.halfExtents.z * 2)
// n.hideFlags |= CCObject.Flags.DontSave;
n.parent = root;
})
}
}