objectpart -> materialpart
This commit is contained in:
parent
6777f4e991
commit
276be6d1bb
|
@ -25,7 +25,7 @@ fn (gpc &GenericCrusherProcessor) process(ob &Object) {
|
||||||
|
|
||||||
//if ob.elem.name == "stone" {
|
//if ob.elem.name == "stone" {
|
||||||
//if ob.has_elem("stone") {
|
//if ob.has_elem("stone") {
|
||||||
if ob.parts_info.has_elem_name("stone") {
|
if ob.mat_info.has_elem_name("stone") {
|
||||||
println("> create smaller stones")
|
println("> create smaller stones")
|
||||||
|
|
||||||
//crush_stone_object(ob)
|
//crush_stone_object(ob)
|
||||||
|
|
|
@ -82,7 +82,8 @@ pub fn bits_main() {
|
||||||
//ob.elem = e4
|
//ob.elem = e4
|
||||||
//ob.mat_info.add_elem_from_size([2, 2, 2], e4)
|
//ob.mat_info.add_elem_from_size([2, 2, 2], e4)
|
||||||
//ob.parts_info.add_elem_from_size([f32(2.), 2., 2.], e4)
|
//ob.parts_info.add_elem_from_size([f32(2.), 2., 2.], e4)
|
||||||
ob.parts_info.add_elem_from_size(2, 2, 2, e4)
|
//ob.parts_info.add_elem_from_size(2, 2, 2, e4)
|
||||||
|
ob.mat_info.add_elem_from_size(2, 2, 2, e4)
|
||||||
|
|
||||||
// Position
|
// Position
|
||||||
//ob.transform.pos_x = 10.0
|
//ob.transform.pos_x = 10.0
|
||||||
|
|
|
@ -21,45 +21,53 @@ mut:
|
||||||
// XXX or 10% glass 90% concrete?
|
// XXX or 10% glass 90% concrete?
|
||||||
// XXX do we really need such materials?
|
// XXX do we really need such materials?
|
||||||
|
|
||||||
|
//struct ObjectPart {
|
||||||
|
struct MaterialPart {
|
||||||
|
mut:
|
||||||
|
name string
|
||||||
|
elem &Elem
|
||||||
|
bits_size int
|
||||||
|
}
|
||||||
|
|
||||||
// MaterialInfo information about materials in object
|
// MaterialInfo information about materials in object
|
||||||
|
|
||||||
// PartsInfo
|
// PartsInfo
|
||||||
struct PartsInfo {
|
//struct PartsInfo {
|
||||||
|
struct MaterialInfo {
|
||||||
mut:
|
mut:
|
||||||
//elems map[string]&Elem
|
//elems map[string]&Elem
|
||||||
//elems map[string]&MaterialElem
|
//elems map[string]&MaterialElem
|
||||||
elems map[string]&ObjectPart
|
elems map[string]&MaterialPart
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_parts_info() &PartsInfo {
|
fn new_material_info() &MaterialInfo {
|
||||||
pi := &PartsInfo{}
|
mi := &MaterialInfo{}
|
||||||
|
|
||||||
return pi
|
return mi
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (pi &PartsInfo) has_elem(elem &Elem) bool {
|
fn (mi &MaterialInfo) has_elem(elem &Elem) bool {
|
||||||
return !isnil(pi.elems[elem.name])
|
return !isnil(mi.elems[elem.name])
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (pi &PartsInfo) has_elem_name(elem_name string) bool {
|
fn (mi &MaterialInfo) has_elem_name(elem_name string) bool {
|
||||||
return !isnil(pi.elems[elem_name])
|
return !isnil(mi.elems[elem_name])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add elem record
|
// Add elem record
|
||||||
fn (mut pi PartsInfo) add_elem(bits_size int, elem &Elem) {
|
fn (mut mi MaterialInfo) add_elem(bits_size int, elem &Elem) {
|
||||||
|
|
||||||
pt := &ObjectPart{
|
pt := &MaterialPart{
|
||||||
elem: elem,
|
elem: elem,
|
||||||
bits_size: bits_size,
|
bits_size: bits_size,
|
||||||
}
|
}
|
||||||
pi.elems[elem.name] = pt
|
mi.elems[elem.name] = pt
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get part by elem name
|
// Get part by elem name
|
||||||
fn (pi &PartsInfo) get_elem_name(elem_name string) &ObjectPart {
|
fn (mi &MaterialInfo) get_elem_name(elem_name string) &MaterialPart {
|
||||||
|
|
||||||
pt := pi.elems[elem_name]
|
pt := mi.elems[elem_name]
|
||||||
|
|
||||||
//if isnil(me) {
|
//if isnil(me) {
|
||||||
// panic(2)
|
// panic(2)
|
||||||
|
@ -71,8 +79,8 @@ fn (pi &PartsInfo) get_elem_name(elem_name string) &ObjectPart {
|
||||||
//fn (mut mi MaterialInfo) add_elem_from_size(size [3]f32, elem &Elem) {
|
//fn (mut mi MaterialInfo) add_elem_from_size(size [3]f32, elem &Elem) {
|
||||||
//fn (mut pi PartsInfo) add_elem_from_size(size []f32, elem &Elem) {
|
//fn (mut pi PartsInfo) add_elem_from_size(size []f32, elem &Elem) {
|
||||||
// println("PartsInfo add_elem_from_size: $size, elem.name: $elem.name")
|
// println("PartsInfo add_elem_from_size: $size, elem.name: $elem.name")
|
||||||
fn (mut pi PartsInfo) add_elem_from_size(mx, my, mz f32, elem &Elem) {
|
fn (mut mi MaterialInfo) add_elem_from_size(mx, my, mz f32, elem &Elem) {
|
||||||
println("PartsInfo add_elem_from_size: mx: $mx, my: $my, mz: $mz, elem.name: $elem.name")
|
println("MaterialInfo add_elem_from_size: mx: $mx, my: $my, mz: $mz, elem.name: $elem.name")
|
||||||
|
|
||||||
/*
|
/*
|
||||||
mx := size[0]
|
mx := size[0]
|
||||||
|
@ -85,14 +93,14 @@ fn (mut pi PartsInfo) add_elem_from_size(mx, my, mz f32, elem &Elem) {
|
||||||
|
|
||||||
println("vol: $vol, vol_bits: $vol_bits")
|
println("vol: $vol, vol_bits: $vol_bits")
|
||||||
|
|
||||||
pi.add_elem(vol_bits, elem)
|
mi.add_elem(vol_bits, elem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn (pi &PartsInfo) elems_list() []&ObjectPart {
|
fn (mi &MaterialInfo) elems_list() []&MaterialPart {
|
||||||
mut ret := []&ObjectPart{}
|
mut ret := []&MaterialPart{}
|
||||||
for k in pi.elems.keys() {
|
for k in mi.elems.keys() {
|
||||||
v := pi.elems[k]
|
v := mi.elems[k]
|
||||||
ret << v
|
ret << v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,6 @@ struct ObjectBit {
|
||||||
elem_type ElemType
|
elem_type ElemType
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ObjectPart {
|
|
||||||
mut:
|
|
||||||
name string
|
|
||||||
elem &Elem
|
|
||||||
bits_size int
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Object {
|
struct Object {
|
||||||
mut:
|
mut:
|
||||||
name string
|
name string
|
||||||
|
@ -28,8 +21,8 @@ mut:
|
||||||
|
|
||||||
// Material/Elem
|
// Material/Elem
|
||||||
//elem &Elem // XXX use id/enum
|
//elem &Elem // XXX use id/enum
|
||||||
//mat_info &MaterialInfo
|
mat_info &MaterialInfo
|
||||||
parts_info &PartsInfo
|
//parts_info &PartsInfo
|
||||||
|
|
||||||
// Position in the world
|
// Position in the world
|
||||||
// XXX in map cells/coords?
|
// XXX in map cells/coords?
|
||||||
|
@ -56,7 +49,8 @@ fn new_object() &Object {
|
||||||
//elem: &Elem(0),
|
//elem: &Elem(0),
|
||||||
//mat_info: &MaterialInfo(0),
|
//mat_info: &MaterialInfo(0),
|
||||||
//parts_info: &PartsInfo(0),
|
//parts_info: &PartsInfo(0),
|
||||||
parts_info: new_parts_info(),
|
//parts_info: new_parts_info(),
|
||||||
|
mat_info: new_material_info(),
|
||||||
//transform: new_transform(),
|
//transform: new_transform(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +63,7 @@ fn (o &Object) bits_volume() int {
|
||||||
//return o.bits_size
|
//return o.bits_size
|
||||||
|
|
||||||
mut ret := 0
|
mut ret := 0
|
||||||
for me in o.parts_info.elems_list() {
|
for me in o.mat_info.elems_list() {
|
||||||
ret += me.bits_size
|
ret += me.bits_size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +80,7 @@ fn (o &Object) mass() f32 {
|
||||||
|
|
||||||
mut total_mass := 0
|
mut total_mass := 0
|
||||||
|
|
||||||
for _, me in o.parts_info.elems {
|
for _, me in o.mat_info.elems {
|
||||||
|
|
||||||
mat_density := me.elem.density
|
mat_density := me.elem.density
|
||||||
mat_volume := me.bits_size
|
mat_volume := me.bits_size
|
||||||
|
|
|
@ -59,7 +59,7 @@ fn (p &Processor) process(mut o Object) {
|
||||||
mut processed := false
|
mut processed := false
|
||||||
|
|
||||||
// Process all elems
|
// Process all elems
|
||||||
mut pts_list := o.parts_info.elems_list()
|
mut pts_list := o.mat_info.elems_list()
|
||||||
for i, _ in pts_list {
|
for i, _ in pts_list {
|
||||||
mut pt := pts_list[i]
|
mut pt := pts_list[i]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue